vb中使用graphics.drawstring画字符串窗体只能显示一部分,怎么设置显示全部

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb中使用graphics.drawstring画字符串窗体只能显示一部分,怎么设置显示全部相关的知识,希望对你有一定的参考价值。

Dim myfont As New Font("微软雅黑", 50)
Dim mybrush As New SolidBrush(Color.Red)
Dim g As Graphics = Me.CreateGraphics
g.DrawString("今天发工资啦!", myfont, mybrush, 10, 30)

改变字体大小就可以全部显示了
在多个事件(paint,click)中测试过,结果没有发生改变

应该是绘画文字后,窗口重绘时清除了那一块区域。

所以放窗体的Paint事件里就行了。

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
   
    ' 在 Paint 事件参数中提供了 Graphics. 无需 Create.
    Using g As Graphics = e.Graphics
        Dim myfont As New Font("微软雅黑", 50)
        Dim mybrush As New SolidBrush(Color.Red)
        g.DrawString("今天发工资啦!", myfont, mybrush, 10, 30)
    End Using
    
End Sub

追问

这个代码就是在窗体paint事件中

追答

是啊,你直接复制粘贴就OK了...

追问

我意思这个代码就是写在Paint事件中的,但是还是无法全部显示

追答

如果你确定了代码是早 Form 的 Paint 控件里。

那你查下你窗口上是不是还有其他控件?

所有我帖的代码,都是测试过的。也可以把你的项目打包给我看。

追问

用你的代码可以了,按钮的click事件怎么调用paint事件的过程?

追答

看代码中的Form1_Paint最后的Handles Me.Paint。

你可以这样理解
Handles(绑定) Me(控件名,这里是说这个类,也就是窗口了) . Paint(事件类型)
把中文字提取出来就是
绑定到窗口的Paint事件类型。
所以要改成按扭的话,把Me改成那个控件名就行了。

参考技术A 这是vb.net题,跟vb不太一样

Graphics.DrawString 指定文本的不透明度

【中文标题】Graphics.DrawString 指定文本的不透明度【英文标题】:Graphics.DrawString specify opacity of text 【发布时间】:2011-09-29 12:55:43 【问题描述】:

是否可以指定使用Graphics.DrawString 方法编写的文本的不透明度?

我正在做这样的事情,但如果可能的话,我希望我的文字是半透明的。

目前我正在这样做:

Graphics graphics = Graphics.FromImage(image);
graphics.DrawString("This is a watermark", 
    new Font("Arial", 40), 
    new SolidBrush(Color.Red), 
    0, 
    0);

【问题讨论】:

【参考方案1】:

试试

new SolidBrush(Color.FromArgb(0x78FF0000))

希望对你有帮助

【讨论】:

【参考方案2】:

试试:

int opacity = 128; // 50% opaque (0 = invisible, 255 = fully opaque)
Graphics graphics = Graphics.FromImage(image);
graphics.DrawString("This is a watermark", 
    new Font("Arial", 40), 
    new SolidBrush(Color.FromArgb(opacity, Color.Red)), 
    0, 
    0);

【讨论】:

以上是关于vb中使用graphics.drawstring画字符串窗体只能显示一部分,怎么设置显示全部的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中居中 Graphics.drawString()?

Graphics.DrawString 指定文本的不透明度

c#中e.Graphics.DrawString

为啥字体大小为 101 的 Graphics2D.drawString 的字母“o”会损坏?

为啥 Graphics2D.setStoke() 不适用于 Graphics2D.drawString?

Graphics DrawString 画出字体怎么不一样大啊?