我正在使用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