如何使用 keyup 事件击键来加载 paintevent 形状。是否可以使用委托?

Hui Liu-MSFT 48,566 信誉分 Microsoft 供应商
2024-04-19T07:33:51.7+00:00

我发现了一种使用键控事件在主屏幕上显示正方形的可能性。 方法

    Sub Rechteck()
    Dim Entschlossen As Graphics = Me.CreateGraphics()
    With Entschlossen
        .DrawRectangle(Pens.Blue, 100, 100, 100, 100)
    End With
    End Sub

使用命令“CreateGraphics”是一个选项。我想还有更多。我还考虑 了有关“CreateGraphics”的文档帖子,该命令用于组件 和控件以更改图形。

我的extension.vb文件保存了上面的代码

Imports System.ComponentModel
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Windows.Forms

Public Class Form1
    Inherits Form

    Public Sub New()
    End Sub

    Sub Rechteck()
    Dim Entschlossen As Graphics = Me.CreateGraphics()
    With Entschlossen
        .DrawRectangle(Pens.Blue, 100, 100, 100, 100)
    End With
    End Sub
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    End Sub

    Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs) Handles Me.KeyUp
        Select Case  e.KeyCode
            Case Keys.Space
                Rechteck()
        End Select
    End Sub
        <STAThread()> _
    Shared Sub Main()
        Application.EnableVisualStyles()
        Application.Run(New Form1())
    End Sub
End Class

我没有时间记住每一条代码线。我的痛苦。但我尝试了。因此 ,我搜索一条路径来从 paintevent 获得 keyup 事件根。 我在搜索和记忆时遇到的最大问题是,painteventargs 的变量名 必须在例如 keyup 事件中进行配置。我认为这不是一个 vb.net 语言 问题,这对我来说仍然是一个问题。

Note:此问题总结整理于:How to use keyup event keystrikes to load paintevent shapes. Is it possible to use a delegate?

VB
VB
Microsoft 开发的一种面向对象的编程语言,其在 .NET Framework 上实现。 以前称为 Visual Basic .NET。
73 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Jiale Xue - MSFT 46,296 信誉分 Microsoft 供应商
    2024-04-19T08:04:45.08+00:00

    感谢您的反馈。 可以参考以下方法在keyup事件中使用setclip方法。

        Private state As String  
        Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp  
            Select Case e.KeyCode  
                Case Keys.O  
                    state = "O"  
                Case Keys.Space  
                    state = "Space"  
            End Select  
            Me.Invalidate()  
        End Sub  
        Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint  
            Select Case state  
                Case "O"  
                    Dim clipRect As New Rectangle(100, 100, 100, 100)  
                    e.Graphics.SetClip(clipRect, CombineMode.Replace)  
                    e.Graphics.FillRectangle(New SolidBrush(Color.Red), 0, 0, 500, 500)  
                Case "Space"  
                    Dim clipRect As New Rectangle(50, 50, 50, 50)  
                    e.Graphics.SetClip(clipRect, CombineMode.Replace)  
                    e.Graphics.FillRectangle(New SolidBrush(Color.Green), 0, 0, 500, 500)  
            End Select  
        End Sub  
    

    按“O”: 按“空格”:157045-1.png 157063-2.png

    希望对您有所帮助。


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。