【问题标题】:Font Size too small when drawstring is called调用拉绳时字体太小
【发布时间】: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


【解决方案1】:

我认为您会遇到这种行为,因为两个 Graphics 对象具有不同的大小。您的对象 g 正在从图片框的 source 图像中获取其边界(没有缩放),而您在 PictureBox1 期间的图形对象正在从图片框 container 中获取边界.这意味着它们将具有不同的大小,因此 myFontSize 看起来会具有不同的大小。

试图根据图像的缩小比例来“缩小”字体大小真的很难完成。相反,通过将 SizeMode 更改为 Normal 并调整容器大小以适应图像来解决问题:

PictureBox1.SizeMode = PictureBoxSizeMode.Normal

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    相关资源
    最近更新 更多