在屏幕上绘制图形

时间:2013-03-23 02:20:10

标签: vb.net graphics

我正在使用Visual Basic.Net并在屏幕上绘制图形。

这是我的代码:

Private Sub Button1_Click(ByVal sender As System.Object, 
                          ByVal e As System.EventArgs) Handles Button1.Click
Dim gr As Graphics = Graphics.FromHwnd(New IntPtr(0))
gr.DrawString("text on screen", 
               New Font(Me.Font.FontFamily, 25, 
               FontStyle.Regular), Brushes.Red, 50, 50)
End Sub

在上面的代码中,文本在屏幕上绘制。我的问题是:如何删除绘制到屏幕的文本?我看到有一个.Clear方法,但是,这个'清除整个绘图表面并用指定的背景颜色填充它',而不是仅删除绘制的文本。

提前致谢。

修改

我想开发一个潜意识消息应用程序,它将在用户使用其他应用程序时在屏幕上显示消息。透明的形式是最好的方式吗?

3 个答案:

答案 0 :(得分:0)

我发现以下代码有效:

    Private WithEvents TextForm As New Form
Private Zipper As New FontFamily("Zipper")

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    With TextForm
        .BackColor = Color.DimGray
        .TransparencyKey = Color.DimGray
        .FormBorderStyle = Windows.Forms.FormBorderStyle.None
        .ShowInTaskbar = False
        .WindowState = FormWindowState.Maximized
        .Opacity = 0
        .Show(Me)
    End With
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Static showText As Boolean
    showText = Not showText
    If showText Then TextForm.Opacity = 0.99 Else TextForm.Opacity = 0
End Sub

Private Sub TextForm_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles TextForm.Paint
    e.Graphics.DrawString("text on screen 12345", New Font(Zipper, 30, FontStyle.Bold), Brushes.Red, 50, 50)
End Sub

答案 1 :(得分:0)

获取不同的位图并在单独的位图中绘制每个新内容,并在将新位图与旧位图合并之后绘制。当你想删除文本重新加载没有文本的旧位图。 在新位图中搜索绘图并保存绘图。

答案 2 :(得分:0)

您可以尝试以下方法:

Dim Graphics0 as Graphics = Graphics.fromHwnd(0) 'This is the desktop's graphics
Graphics0.DrawText("Test 1..2..3..",New Font(Arial,10),Brushes.Black,New Point(0,0))