我正在使用FillRectangle
方法将文本(使用TextRenderer.DrawText
)渲染到背景为纯白色的位图(Color.White
)上。 我然后TransparentBlt
这个位图到存储器-DC包括彩色背景图像,使用Color.White And &HFFFFFF
作为透明颜色的RGB值(crTransparent
参数),如下所示:TransparentBlt生成非锐利图像
TransparentBlt(hDestMemDc, 0, 0, iTextWidth, iTextHeight, hTextMemDc, 0, 0, iTextWidth, iTextHeight, Color.White.ToArgb() And &HFFFFFF)
{I然后BitBlt
组合图像到我的控制的面,但事实并非如此相关}
而呈现的文字锐利清晰,其TransparentBlt
结果是不尖锐。
以下是文字的快照,呈现在白色背景(这是一个图像,而不是键入的文本):
这是跨位图传输图像的结果上述在彩色背景:
请注意白色(待透明)点仍围绕红色文字。
此外,请注意画在图像左侧的白色垂直线,以及在右上角绘制的类似较短的水平线。
我使用VB.NET 2005(又名VB8)。您的建议将非常感激。
看起来像字体平滑。你如何渲染文本? – HerrJoebob
oGraphics.CompositingQuality = Drawing.Drawing2D.CompositingQuality.HighQuality oGraphics.InterpolationMode = Drawing.Drawing2D.InterpolationMode.HighQualityBicubic oGraphics.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality oGraphics.TextContrast = 0 oGraphics.TextRenderingHint = Drawing.Text .TextRenderingHint.AntiAlias – Bliss
'昏暗sRect作为矩形=新矩形(0,0,m_sTextSize.Width,m_sTextSize.Height)' '昏暗oBrush刷=新SolidBrush(const_sTextBackColor)''oGraphics.FillRectangle(oBrush,sRect) ' 'TextRenderer.DrawText(oGraphics,Me.Text,Me。字体,sRect,Me.ForeColor,const_sTextBackColor,m_eTextFormatFlags)' 如果这确实是原因,渲染的结果(上图)如何锐利? – Bliss