【问题标题】:How to start Picturebox events from button如何从按钮启动 Picturebox 事件
【发布时间】:2011-08-22 07:08:50
【问题描述】:

我有一个名为“Paint”的按钮,它应该允许在单击后在我的图片框上绘制矩形,即它就像一个允许绘制(开/关)的开关。

我已经使用鼠标位置绘制了矩形,如下所述:How Can I Capture Mouse Coordinate on PictureBox?。但是每当我在 PictureBox 上移动时都会绘制矩形。

如何实现仅在“Paint”为“on”时才必须实现绘图的功能 我尝试从 Picturebox 的事件开始实现:Paint、MouseDown、MoseMove、Mouse Up...

【问题讨论】:

  • 不太明白这个问题。您想单击按钮然后能够使用“Mousedown-Move-MouseUp”绘制矩形还是想在单击按钮后绘制一个 ractangle?为什么你必须从按钮调用鼠标事件是我没有得到的
  • 我不太确定我是否正确理解了您的问题,但是如果您想单击一个按钮以在另一个控件中生成框,为什么不获取图片框的大小并在两者之间取随机值0 和宽度以及 0 和高度以生成位置然后生成框。您必须将屏幕坐标转换为组件坐标。
  • "单击按钮,然后可以使用“Mousedown-Move-MouseUp”绘制矩形-这就是我想做的。抱歉描述不好。

标签: c# winforms events picturebox


【解决方案1】:
  1. 在您的应用程序中设置一个标志(布尔值),告诉您是否处于绘图模式(可以从您正在讲述的按钮激活)。
  2. 在鼠标按下时,从鼠标事件处理程序中获取起点(e.x,e.y)。 现在你有了矩形的左上角。

    3.当鼠标移动时,取 e.x 和 e.y 并在右下角绘制矩形。将绘图代码放在鼠标移动中,使其像“Paint”程序一样绘制(如果绘制标志为真,则执行此操作)。

  3. 鼠标向上重置绘图标志

    5.在图片框的绘制事件中绘制你拥有的所有形状,这样如果你最小化你的应用程序窗口然后最大化它你会发现你绘制的形状这可以通过使矩形成为一个类来实现它的一些实例(for 循环遍历你的形状并绘制它)。

【讨论】:

    【解决方案2】:

    最简单的解决方案是添加一个布尔 bDraw 变量,该变量仅在按钮单击时变为 TRUE。如果此变量为 FALSE,则所有其他绘图方法都不执行任何操作。

    其他解决方案可能只是订阅 按钮单击事件处理程序中的鼠标事件。因此,如果未单击按钮,则不会发生事件引发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      相关资源
      最近更新 更多