我試圖用DrawString
將文本寫入圖像,然後將其旋轉90度。它可以與位圖或直接在PictureBox上正常工作,但質量差別很大。 PictureBox
文字畫質很好,看起來不錯。當我在圖像上繪製它時,它看起來很可怕和塊狀。我做了一些修改,試圖讓它看起來更好,但它看起來並不像應該那麼好。Graphics.Drawstring在PictureBox中看起來不錯,但在位圖中很糟糕
示例代碼:
使用Windows窗體項目,並在其上放置和按鈕2個圖片框,並用下面的代碼運行它,看看我的意思是:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim g As System.Drawing.Graphics
g = PictureBox1.CreateGraphics
' x.DrawRectangle(New Pen(Brushes.White, 200), New Rectangle(0, 0, 200, 200))
g.TranslateTransform(10.0F, 0.0F)
g.RotateTransform(90)
g.DrawString("MM Components", New Font("Arial", 7, FontStyle.Regular), Brushes.DarkBlue, New PointF(0, 0))
Dim g2 As System.Drawing.Graphics
Dim img As New Bitmap(300, 300, Drawing.Imaging.PixelFormat.Format24bppRgb)
g2 = Graphics.FromImage(img)
g2.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
g2.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit
g2.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
' img.SetResolution(150, 150)
' x.DrawRectangle(New Pen(Brushes.White, 200), New Rectangle(0, 0, 200, 200))
g2.TranslateTransform(10.0F, 0.0F)
g2.RotateTransform(90)
g2.FillRectangle(Brushes.White, 0, 0, 300, 300)
g2.DrawString("MM Components", New Font("Arial", 7, FontStyle.Regular), Brushes.DarkBlue, New PointF(0, 0))
PictureBox2.Image = img
'System.Threading.Thread.Sleep(20)
End Sub
End Class
是的, TextRenderingHint是重要的。 – 2010-08-05 20:33:15
Ity要求設置所有3個屬性。 TextRenderingHint = ClearTypeGridFit本身不足以獲得我期待的高質量文本渲染。 – Dan 2010-08-09 15:36:41