2011-08-22 59 views
0

我有一个名为“Paint”的按钮,它应该允许在点击后在我的图片框上绘制矩形,即它可以像开关一样允许绘图(开/关)。如何从按钮启动Picturebox事件

我画的矩形使用鼠标位置,如这里解释:How Can I Capture Mouse Coordinate on PictureBox?。但是,当我移过PictureBox时,绘制矩形。

我如何能实现在那里绘制必须执行,只有当“画图”是“开” 我尝试从图片框的事件开始执行的功能:油漆,的MouseDown,MoseMove,鼠标向上...

+1

真的不明白这个问题。你想单击按钮,然后可以使用“Mousedown-Move-MouseUp”绘制矩形,或者在点击按钮后是否要绘制一个矩形?为什么你必须从按钮中调用鼠标事件是我没有得到的 – Carsten

+0

我不太确定我是否正确理解了你的问题,但是如果你想单击一个按钮来在另一个控件中生成框,为什么不获得图片框的大小,并取0到宽度和0和高度之间的随机值,以便生成一个位置,然后生成盒子。您将不得不从屏幕坐标转换到组件坐标。 –

+0

“单击按钮,然后可以使用”Mousedown-Move-MouseUp“绘制矩形 - ”这就是我想要做的。对不好的描述抱歉。 – Elfoc

回答

2
  1. 在你的应用程序中设置一个标志(bool),告诉你你是否在绘制模式(可以从你所说的按钮激活)。
  2. 在鼠标下取鼠标事件处理程序的起点(e.x,e.y)。 现在您有矩形的左上角点。

    3.while鼠标移动需要e.x和e.y,这是右下角的点,绘制矩形。将绘图代码放在鼠标移动中,以便它像“绘制”程序那样绘制(如果绘制标记为真,则执行此操作)。

  3. 在鼠标向上复位绘制标志

    5.in在PictureBox的Paint事件绘制所有你必须形状,这样,如果你最小化的应用程序窗口,然后最大化它,你会发现你的形状绘制这可以通过使矩形是一个类并创建它的一些实例来实现(用于在您的形状上绘制并绘制它)。

0

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

其他解决方案可以简单地订阅 按钮单击事件处理程序中的鼠标事件。所以如果按钮没有被点击,则不会发生事件。