如何在按钮单击上绘制矩形?

萨尔马尼

我想在单击按钮时向表单中添加一个矩形,
我可以在表单绘画中添加多少,但是我无法通过单击按钮添加矩形之类的形状,因此我对其进行了搜索,但没有找到解决方案
这里有人知道怎么做吗?

这是我在窗体绘画中的代码

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
            locationX = locationX + 20;
            locationY = locationY + 20;
            e.Graphics.DrawRectangle(Pens.Black, 
                       new Rectangle(10 + locationX, 10 + locationY, 50, 30));
    }

这是我的按钮代码

    private void button1_Click(object sender, EventArgs e)
    {
        this.Paint += Form1_Paint;
    }

但是当我单击按钮时它不起作用。为什么它不起作用?

西里尔·甘登(Cyril Gandon)

线

 this.Paint += Form1_Paint;

Paint您的窗体的事件与您的函数Form1_Paint相关联。它不会触发它。这是您只想执行1次的操作,而不是每次按下按钮时都要执行的操作。

要触发Paint事件,通常的方法是调用Invalidate()方法Form实际上,Invalidate是Control的一种方法但是Form源自Control,因此我们也可以访问该方法Form

因此,在Windows窗体中触发重新绘制的正确方法是将subscription放入Load方法中:

private void Form1_Load(object sender, EventArgs e)
{
    this.Paint += Form1_Paint;
}

它应该已经隐藏在自动生成的代码中。您的方法Form1_Paint还可以。

最后,按钮单击方法应为:

private void button1_Click(object sender, EventArgs e)
{
    this.Invalidate(); // force Redraw the form
}

从文档

Invalidate():使控件的整个表面无效,并使控件重绘

编辑 :

使用此方法,一次只能绘制1个矩形,因为整个表面都被重绘,因此该表面被完全擦除,然后它仅绘制您在Form1_Paint方法中要求的内容。

对于如何绘制多个矩形的答案,您应该创建一个矩形列表。在每个单击按钮处,将“矩形”添加到列表中,然后重新绘制所有矩形。

List<Rectangle> _rectangles = new List<Rectangle>();
private void button1_Click(object sender, EventArgs e)
{
    locationX = locationX + 20;
    locationY = locationY + 20;
    var rectangle = new Rectangle(locationX, locationY, 50, 30));
    this._rectangles.Add(rectangle);
    this.Invalidate(); // force Redraw the form
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
    foreach(var rectangle in this._rectangles)
    {
        e.Graphics.DrawRectangle(Pens.Black, rectangle);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在按钮上单击使用TypeScript

来自分类Dev

如何在按钮上运行代码单击Android片段

来自分类Dev

如何在按钮上单击加载页面

来自分类Dev

如何在按钮单击上浏览选项卡

来自分类Dev

如何在按钮上运行代码单击Android片段

来自分类Dev

如何在按钮上单击ios更改UICollectionView的数据?

来自分类Dev

如何在按钮单击上添加一行?

来自分类Dev

如何在按钮单击上添加更多元素

来自分类Dev

如何在按钮上单击以重新加载砌体

来自分类Dev

是否可以在按钮上绘制彩色矩形?

来自分类Dev

Matplotlib:如何在图形上绘制点而不是在按钮上绘制点?

来自分类Dev

如何在按钮上单击后启动按钮上的活动复选框

来自分类Dev

如何在按钮的单击方法上在Uiimageview上设置按钮图像?

来自分类Dev

如何在按钮单击时在自定义视图中绘制圆圈

来自分类Dev

在按钮单击/ JavaScript上重新绘制Google图表

来自分类Dev

在按钮单击/ JavaScript上重新绘制Google图表

来自分类Dev

单击按钮时如何在按钮上创建警报对话框?

来自分类Dev

如何在矩形的边界上绘制点?

来自分类Dev

如何在 CameraX TextureView 上绘制矩形

来自分类Dev

javafx如何在按钮单击事件上扩展整个treeItem?

来自分类Dev

如何在按钮上单击打开instagram应用程序

来自分类Dev

如何在按钮上单击“意图”来启动Facebook lite

来自分类Dev

如何在按钮上单击javascript中创建动态数组

来自分类Dev

如何在按钮上添加单独的HTML元素单击Python Dash

来自分类Dev

如何在按钮上单击以显示其类的另一个布局(xml)?

来自分类Dev

javafx如何在按钮单击事件上扩展整个treeItem?

来自分类Dev

如何在按钮上单击将ListView更改为GridView

来自分类Dev

如何在按钮上播放不同的音频单击android java

来自分类Dev

如何在按钮上单击打开instagram应用程序

Related 相关文章

  1. 1

    如何在按钮上单击使用TypeScript

  2. 2

    如何在按钮上运行代码单击Android片段

  3. 3

    如何在按钮上单击加载页面

  4. 4

    如何在按钮单击上浏览选项卡

  5. 5

    如何在按钮上运行代码单击Android片段

  6. 6

    如何在按钮上单击ios更改UICollectionView的数据?

  7. 7

    如何在按钮单击上添加一行?

  8. 8

    如何在按钮单击上添加更多元素

  9. 9

    如何在按钮上单击以重新加载砌体

  10. 10

    是否可以在按钮上绘制彩色矩形?

  11. 11

    Matplotlib:如何在图形上绘制点而不是在按钮上绘制点?

  12. 12

    如何在按钮上单击后启动按钮上的活动复选框

  13. 13

    如何在按钮的单击方法上在Uiimageview上设置按钮图像?

  14. 14

    如何在按钮单击时在自定义视图中绘制圆圈

  15. 15

    在按钮单击/ JavaScript上重新绘制Google图表

  16. 16

    在按钮单击/ JavaScript上重新绘制Google图表

  17. 17

    单击按钮时如何在按钮上创建警报对话框?

  18. 18

    如何在矩形的边界上绘制点?

  19. 19

    如何在 CameraX TextureView 上绘制矩形

  20. 20

    javafx如何在按钮单击事件上扩展整个treeItem?

  21. 21

    如何在按钮上单击打开instagram应用程序

  22. 22

    如何在按钮上单击“意图”来启动Facebook lite

  23. 23

    如何在按钮上单击javascript中创建动态数组

  24. 24

    如何在按钮上添加单独的HTML元素单击Python Dash

  25. 25

    如何在按钮上单击以显示其类的另一个布局(xml)?

  26. 26

    javafx如何在按钮单击事件上扩展整个treeItem?

  27. 27

    如何在按钮上单击将ListView更改为GridView

  28. 28

    如何在按钮上播放不同的音频单击android java

  29. 29

    如何在按钮上单击打开instagram应用程序

热门标签

归档