我使用GDI+在PANEL上画文字, 可是发现, 画出的文字非常难看, 锯齿非常明显(微软雅黑加粗, 80号字体).
System.Drawing.Drawing2D.SmoothingMode.AntiAlias 无效.
所以我想求一个抗锯齿算法。 最好是C#的.谢谢了

解决方案 »

  1.   

    SmoothingMode 属性不影响文本。若要设置文本呈现质量,请使用 TextRenderingHint 枚举。MSDN上说的很清楚了public enum TextRenderingHint
     
    成员
     成员名称 说明 
     SystemDefault 在有系统默认呈现提示的情况下使用每个字符的标志符号位图来绘制字符。将采用用户为系统选择的任何字体修匀设置来绘制文本。 
     SingleBitPerPixelGridFit 使用每个字符的标志符号位图来绘制字符。提示用于改善字符在主干和弯曲部分的外观。 
     SingleBitPerPixel 使用每个字符的标志符号位图来绘制字符。不使用提示。 
     AntiAliasGridFit 在有提示的情况下使用每个字符的消除锯齿效果标志符号位图来绘制字符。由于采用了 AntiAlias,质量会得到大大改善,但同时会增加性能成本。 
     AntiAlias 在无提示的情况下使用每个字符的消除锯齿效果标志符号位图来绘制字符。由于采用了 AntiAlias,质量会得到改善。由于关闭了提示,主干宽度差可能会比较明显。 
     ClearTypeGridFit 在有提示的情况下使用每个字符的标志符号 ClearType 位图来绘制字符。这是质量最高的设置。用于利用 ClearType 字体功能。 备注
    质量选项包括文本(速度最快但质量最低)、消除锯齿效果文本(质量较好但速度较慢)以及 ClearType 文本(在 LCD 显示器上质量最佳)。
      

  2.   

     private void Form1_Paint(object sender, PaintEventArgs e)
            {
               Graphics formGraphics = e.Graphics;//这种定义画板的方式只能用在Paint(或OnPaint)的事件中,
               Font myFont = new Font("黑体", 40,FontStyle.Regular);           formGraphics.ScaleTransform(fScale, fScale);//放大或者缩小             formGraphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;           formGraphics.DrawString("反锯齿演示", myFont, Brushes.Firebrick, 20.0F, 20.0F);           formGraphics.TextRenderingHint =TextRenderingHint.AntiAlias;
               formGraphics.DrawString("反锯齿演示", myFont, Brushes.Firebrick, 20.0F, 80.0F);           formGraphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
               formGraphics.DrawString("反锯齿演示", myFont, Brushes.Firebrick, 20.0F, 140.0F);            // Set the text contrast to a high-contrast setting.
                formGraphics.TextContrast = 0;
                formGraphics.DrawString("反锯齿演示", myFont, Brushes.DodgerBlue, 20.0F, 200.0F);            // Set the text contrast to a low-contrast setting.
                formGraphics.TextContrast = 12;
                formGraphics.DrawString("反锯齿演示", myFont, Brushes.DodgerBlue, 20.0F, 260.0F);            // Dispose of the font object.
                myFont.Dispose();
            }
    其中只有红线的是代锯齿的效果的!
    其余的都是反锯齿的效果的!
      

  3.   

    g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;