我怎样才能清楚地使用DrawString?
我需要使用DrawString方法使用Graphics类绘制一个字符串。 但是图像有一些黑色像素,而不是确切的颜色。 我怎样才能清楚地画出来?
public Image Ciz() { Color renk = Color.FromArgb(255, 133, 199); Bitmap result = new Bitmap(KutuBoyutu.Genislik, KutuBoyutu.Yukseklik); result.SetResolution(100, 100); Graphics g = Graphics.FromImage(result); g.SmoothingMode = SmoothingMode.HighQuality; Brush drawBrush = new SolidBrush(renk); StringFormat stringFormat = new StringFormat(); stringFormat.Alignment = StringAlignment.Center; stringFormat.LineAlignment = StringAlignment.Center; Rectangle rect1 = new Rectangle(0, 0, result.Width, result.Height); Font font = new Font("Arial", 15f, FontStyle.Bold, GraphicsUnit.Pixel); g.DrawString(Yazi, font, drawBrush, rect1, stringFormat); drawBrush.Dispose(); return result; }
加
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
你的代码。
TextRenderingHint.AntiAliasGridFit
也可以。
绘图文本需要明确定义的背景,以便抗锯齿效果可以正常工作。 你没有,你忘了初始化位图。 其像素为默认值,黑色为alpha。
因此,文本渲染器将尝试将字母混合为黑色背景。 你看,那些几乎黑色的像素现在变得非常明显,白色背景。 如果您在黑色背景上绘制位图,它只会看起来很好。 固定:
using (Graphics g = Graphics.FromImage(result)) { g.Clear(Color.White); // etc... }
如果无法修复背景颜色,则需要放弃抗锯齿。 将TextRenderingHint设置为SingleBitPerPixelGridFit。 你不会喜欢它:)