VB.NET中的圖片編輯問題

时间:2021-12-24 03:10:38
在VB.NET中關於圖片的編輯問題,如何實現以下功能?
1,在圖片上添加文字
2,在圖片上畫一些圖形,比如(圓,矩形,三角形.......)
3,如果添加的文字或圖形不滿意還可以對其修改
4,把圖片和其上面添加的文字還有添加的圖形合在一起成為一個圖形文件!
請大師指點,先謝了!

6 个解决方案

#1


1.添加文字
        Dim g As Graphics
        g = Graphics.FromImage(FooterBitmap)
        g.PageUnit = GraphicsUnit.Display
        g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
        g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias

        g.Clear(Color.Empty)
        Dim mPen As Pen                                   '定义画笔
        Dim br As SolidBrush                              '定义画刷
        Dim mFont As New Font("Times New Roman", 9)       '定义字体
        Dim mFont2 As New Font("宋体", 10)
        Dim sf As New StringFormat                        '定义字符串格式变量
        Dim s As String                                   '定义字符串变量
        Dim mPoint As New PointF                          '定义单个点

        mFont = New Font("宋体", 10)
        mPen = New Pen(Color.Black, 1)
        br = New SolidBrush(Color.Black)
        sf.Alignment = StringAlignment.Center
        mPoint.X = FooterBitmap.Width / 2 + Distance
        mPoint.Y = FooterBitmap.Height / 2
        s = "1234567890"
        g.DrawString(s, mFont, br, mPoint, sf)
2.画图形
        g.DrawArc(...)'画弧
        g.DrawRectangle(...)'画方框
        g.DrawLine(...)'画直线
3.修改不满意的字符串,其实就是将1中的字符串s值更改,然后重新绘制图形就可以了,当然考虑到效率的问题,你可以分图层来处理这些
4.调用Bitmap.save(...)方法即可
bitmap是位图对象名称

#2


非常感謝這位高手!
多謝,多謝!

#3


這位大哥,想再請教下
關於修改的問題,你可以講的詳細點嘛?
你說的我懂,只是我需要在一個圖片上的不同位置添加很多不同的文字和圖形
其實你說的分圖層的方法我想應該可以解決這個問題
關於分圖層的方法你可以講的詳細點嘛?
再次感謝!

#4


因為隨時都有可能修改任何一處的文字,還有圖形
有哪位高手賜教!

#5


DrawEllipse(...)
图层的概念就是永不同的bitmap来叠加,因为bitmap在没有绘制上图形的地方都是Empty,也就是空的透明效果,比如一个表单,拥有文字信息和表格框架,这样我们可以定义两个bitmap,然后分别绘制文字和表格,因为文字信息我们需要随时修改,所以我们将其单独规划为一个图层便于修改,最后绘制完毕,将两个bitmap用drawImage(...)的方法绘制到第三副总位图上,即可以完成修改.

#6


這位大哥,非常感謝你!辛苦了!

#1


1.添加文字
        Dim g As Graphics
        g = Graphics.FromImage(FooterBitmap)
        g.PageUnit = GraphicsUnit.Display
        g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
        g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias

        g.Clear(Color.Empty)
        Dim mPen As Pen                                   '定义画笔
        Dim br As SolidBrush                              '定义画刷
        Dim mFont As New Font("Times New Roman", 9)       '定义字体
        Dim mFont2 As New Font("宋体", 10)
        Dim sf As New StringFormat                        '定义字符串格式变量
        Dim s As String                                   '定义字符串变量
        Dim mPoint As New PointF                          '定义单个点

        mFont = New Font("宋体", 10)
        mPen = New Pen(Color.Black, 1)
        br = New SolidBrush(Color.Black)
        sf.Alignment = StringAlignment.Center
        mPoint.X = FooterBitmap.Width / 2 + Distance
        mPoint.Y = FooterBitmap.Height / 2
        s = "1234567890"
        g.DrawString(s, mFont, br, mPoint, sf)
2.画图形
        g.DrawArc(...)'画弧
        g.DrawRectangle(...)'画方框
        g.DrawLine(...)'画直线
3.修改不满意的字符串,其实就是将1中的字符串s值更改,然后重新绘制图形就可以了,当然考虑到效率的问题,你可以分图层来处理这些
4.调用Bitmap.save(...)方法即可
bitmap是位图对象名称

#2


非常感謝這位高手!
多謝,多謝!

#3


這位大哥,想再請教下
關於修改的問題,你可以講的詳細點嘛?
你說的我懂,只是我需要在一個圖片上的不同位置添加很多不同的文字和圖形
其實你說的分圖層的方法我想應該可以解決這個問題
關於分圖層的方法你可以講的詳細點嘛?
再次感謝!

#4


因為隨時都有可能修改任何一處的文字,還有圖形
有哪位高手賜教!

#5


DrawEllipse(...)
图层的概念就是永不同的bitmap来叠加,因为bitmap在没有绘制上图形的地方都是Empty,也就是空的透明效果,比如一个表单,拥有文字信息和表格框架,这样我们可以定义两个bitmap,然后分别绘制文字和表格,因为文字信息我们需要随时修改,所以我们将其单独规划为一个图层便于修改,最后绘制完毕,将两个bitmap用drawImage(...)的方法绘制到第三副总位图上,即可以完成修改.

#6


這位大哥,非常感謝你!辛苦了!