【发布时间】:2015-06-27 23:55:33
【问题描述】:
我正在将图像加载到图片框并绘制 som 文本。 当我拖动文本时,它看起来很大,但是当我拖动它或将其锁定到位时,它变得太小了。图片框 sizemode 设置为 Zoom。所以巨大的图像变小了。在图片框中如何设置正确的字体大小和预览?
Sub btnLock 负责“锁定” Text to image 和 sub Picturebox1_Paint 预览
如何使预览缩小字体大小或使 btnLock 放大字体大小
Dim Loc As Point
Dim Pxy As Point
Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
txtButton.Text = MouseButtons.Left
If e.Button = MouseButtons.Left Then
Loc = e.Location
Me.PictureBox1.Invalidate()
End If
End Sub
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Dim myFontSize As Integer
Integer.TryParse(ComboBox1.Text, myFontSize)
Dim myFont As New Font("Arial", myFontSize, FontStyle.Bold Or FontStyle.Italic)
Dim pt As Point = PictureBox1.PointToClient(Control.MousePosition)
e.Graphics.DrawString(txtA.Text, myFont, Brushes.Black, pt.X, pt.Y)
End Sub
Private Sub btnLock_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLock.Click
Dim myFontSize As Integer
Integer.TryParse(ComboBox1.Text, myFontSize)
Dim myFont As New Font("Arial", myFontSize, FontStyle.Bold Or FontStyle.Italic)
Dim g As Graphics = Graphics.FromImage(Me.PictureBox1.Image)
' g.DrawString(txtA.Text, myFont, Brushes.Black, Loc.X, Loc.Y)
g.DrawString(txtA.Text, myFont, Brushes.Black, Pxy.X, Pxy.Y)
' Me.PictureBox1.Invalidate()
End Sub
感谢您的帮助!-DB35M
【问题讨论】:
-
为什么不为 myFontSize 整数定义一个值?
-
@MacKentoch 我正在使用 Combobox1 更改字体大小
-
好的,我会调试并添加断点来检查会发生什么。我想你已经这样做了。
-
您的 Paint 事件处理程序使用您要求的字体大小 myFontSize 绘制文本。但是在将文本绘制到图像中之后,它将以与图像其余部分相同的方式缩放。由 PictureBox.SizeMode 属性确定。如果您希望它们匹配,那么您必须以相同的方式在您的 Paint 事件处理程序中重新缩放。顺便说一句,有点棘手。
标签: vb.net fonts picturebox font-size scaling