当前位置: 代码迷 >> VB Dotnet >> GDI+绘不同图片不同文字,结果大小不同,请问
  详细解决方案

GDI+绘不同图片不同文字,结果大小不同,请问

热度:492   发布时间:2016-04-25 02:02:05.0
GDI+绘不同图片不同文字,结果大小不同,请教。
GDI+批量不同图片上添加不同文字水印
不同图片,但图片都是900x600,不同文字,但文字大小都是设置的new font(“黑体”,20)
结果出来的效果就是有一部分图片文字大好多,一部分文字小好多。
用measurestring测量也得出一样的结果,一个大,一个小。
请问这是为什么。
对比





提示框中用g.measurestring测出来的width和height,果然是不一样的,一个45,一个24

求可能的原因。
------解决思路----------------------

显示的问题吧,图片被拉申了?
------解决思路----------------------
应该说图片没拉伸才对。
    Private Sub AddText(ByVal Path As String, ByVal bh As String, ByVal Name As String, ByVal newPath As String, ByVal fnt As Font, ByVal colr As SolidBrush, ByVal aX As Long, ByVal aY As Long, ByVal aRbtn As Integer)
        Dim fileImg As Image = Image.FromFile(Path) '<- 这个大小不确定'

        Dim img As New System.Drawing.Bitmap(PictureBox1.Width, PictureBox1.Height)
        Dim g As Graphics = Graphics.FromImage(img)
        g.CompositingQuality = CompositingQuality.HighQuality
        g.SmoothingMode = SmoothingMode.HighQuality
        g.InterpolationMode = InterpolationMode.HighQualityBicubic

        'Dim s = g.MeasureString(Name, fnt)
        'MsgBox(s.Width & "  " & s.Height)

        g.DrawImage(fileImg, New Rectangle(0, 0, PictureBox1.Width, PictureBox1.Height)) '<- 拉伸'
        g.DrawString(Name, fnt, colr, New PointF(aX, aY))
        PictureBox1.Image = New Bitmap(img)
        PictureBox1.Refresh()

        If Not SaveImage(img, newPath & "\" & bh & ".jpg", "JPEG") Then
            img.Save(newPath & "\" & bh & ".jpg") '<- 格式不对会影响显示吧,不会出问题?'
        End If

        fileImg.Dispose()
        g.Dispose()
        img.Dispose()
    End Sub

------解决思路----------------------
批量处理怎么还用到picturebox。猜测可能是dpi/分辨率不一样导致的。
首先,不要用ui控件去批量处理图片,又慢又可能误导你自己。

直接用Image/Bitmap去加载你的图片文件,直接看他们的Size/PhysicalDimension 是不是一样。
如果确实有区别,你另外去new一个Bitmap对象,然后用DrawImage方法把原图绘制到新的Bitmap上,然后在上面DrawString
  相关解决方案