C# 在图像vb.net中添加文本
我是vb.net新手,我想在图像上添加一些文本,但我的代码似乎根本不起作用C# 在图像vb.net中添加文本,c#,vb.net,C#,Vb.net,我是vb.net新手,我想在图像上添加一些文本,但我的代码似乎根本不起作用 Public Class Form1 Dim Graph As Graphics Dim Drawbitmap As Bitmap Dim Brush As New Drawing.SolidBrush(Color.Black) Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As EventArgs)
Public Class Form1
Dim Graph As Graphics
Dim Drawbitmap As Bitmap
Dim Brush As New Drawing.SolidBrush(Color.Black)
Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As EventArgs)
Drawbitmap = New Bitmap(PictureBox1.Width, PictureBox1.Height)
Graph = Graphics.FromImage(Drawbitmap)
PictureBox1.Image = Drawbitmap
Graph.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
Graph.DrawString(RichTextBox1.Text, RichTextBox1.Font, Brush, PictureBox1.Location)
End Sub
End Class
您的代码存在许多问题。首先,您没有处理
图片盒中已有的位图。其次,您没有处理为绘制文本而创建的图形对象。第三,虽然这不应该是一个大问题,但我想不出为什么您会认为先显示位图,然后绘制文本是一个好主意
最后,也可能是您没有看到任何文本的原因,是您正在使用PictureBox1.Location
指定在何处绘制文本。这是没有意义的,因为这意味着PictureBox
距离表单左上角越远,文本距离位图的左上角越远。您需要考虑在位图上绘制文本的实际位置
下面是一些解决所有这些问题的经过测试的代码:
Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
Dim img As New Bitmap(PictureBox1.Width, PictureBox1.Height)
Using g = Graphics.FromImage(img)
g.SmoothingMode = SmoothingMode.HighQuality
g.DrawString(RichTextBox1.Text, RichTextBox1.Font, Brushes.Black, New PointF(10, 10))
End Using
'Dispose the existing image if there is one.'
PictureBox1.Image?.Dispose()
PictureBox1.Image = img
End Sub
请注意,该代码还使用系统提供的画笔
,而不是不必要地创建一个也未处理的画笔
请注意,此行仅在VB 2017中可用:
PictureBox1.Image?.Dispose()
在早期版本中,您需要一个If
语句:
If PictureBox1.Image IsNot Nothing Then
PictureBox1.Image.Dispose()
End If
文字对图像的影响如何?类似于在背景中有图像,在前景中有一些文本?你不是在刷新PictureBox。谢谢@jmcilhinney的作品很有魅力!!!谢谢你给我解释,它澄清了一切