C# 有没有更好的方法在.NET 2.0上反别名文本?
我想在这个屏幕截图上显示: 我已经尝试了所有的文本渲染提示,但看起来仍然很糟糕。请注意,当我拍摄屏幕截图时,PNG更平滑,但您仍然可以看到第二个文本不如第一个好。 这是我的密码:C# 有没有更好的方法在.NET 2.0上反别名文本?,c#,.net,winforms,fonts,C#,.net,Winforms,Fonts,我想在这个屏幕截图上显示: 我已经尝试了所有的文本渲染提示,但看起来仍然很糟糕。请注意,当我拍摄屏幕截图时,PNG更平滑,但您仍然可以看到第二个文本不如第一个好。 这是我的密码: private void Form1_Paint(object sender, PaintEventArgs e) { try { SolidBrush solidBrush = new SolidBrush(Color.Black); PrivateFontCollectio
private void Form1_Paint(object sender, PaintEventArgs e) {
try {
SolidBrush solidBrush = new SolidBrush(Color.Black);
PrivateFontCollection fonts;
FontFamily family = LoadFontFamily(Properties.Resources.SegoeWP_Light, out fonts);
Font font = new Font(family, 18);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.TextRenderingHint = TextRenderingHint.SystemDefault;
e.Graphics.DrawString("Downloads", font, solidBrush, new PointF(135, 80));
} catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
}
WinForms(.NET 2.0)上有没有其他平滑字体的方法?我认为下面的内容就足够了
e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
如果没有,可以在不做任何更改的情况下尝试下面页面上的示例,然后逐渐添加您的更改,直到其中断
我相信Photoshop会进行过采样。你可能无法获得像Photoshop那样好的结果——它有更好的像素捕捉算法,而且它可能会稍微增加轮廓以获得更暗的结果——但是如果
SmoothingMode.AntiAlias
(正如George建议的)还不够,你可以尝试以下步骤,看看它们是否能得到你想要的结果
字体
,其大小是您想要的字体的两倍位图。确保使用支持alpha透明度的格式创建它
位图中(在(0,0)处)。(您可能需要在此处使用SmoothingMode.AntiAlias
)
位图
绘制到最终目标,将其大小缩小50%。确保使用高质量的调整大小模式位图中过度绘制文本
——在(0,0)处绘制一次,然后在(0,1)或(1,0)处再次绘制一次,以查看这是否会使线条变粗,以便在缩小尺寸后看起来足够好看。你必须进行实验
我不建议在通用文本绘图(用户选择布局和字体大小)中使用此选项,但如果您可以完全控制字体大小,您可能可以调整此选项以获得非常好的效果。我也遇到过同样的问题,但我不记得明确的解决方案,必须有负责GDI或GDI+绘制图形的属性。请改用TextRenderer.DrawText()。您还需要使用ClearType调谐器,第一次在Google上点击。@Hans Passant:DrawText()给了我一个粗体输出:正如我所说的:我已经尝试了所有的TextRendering提示,但它看起来仍然不好。对不起,看到了,当我重新阅读您的文章时,我用另一个建议对其进行了编辑,我认为这可能是您唯一的选择。