如何在GUI编辑器中围绕对象绘制正方形?

时间:2012-10-23 21:51:11

标签: c# controls

我想用C#为AutoIt编写GUI编辑器,但我对C#不够好。当按下GUI中的任何对象时,我想在对象周围绘制一个正方形(聚焦)。像这样:

http://i.imgur.com/c9TB8.png

是否有任何库可以更容易地编写这类内容?

2 个答案:

答案 0 :(得分:1)

使用DrawRectangle函数之一绘制Square。他们每个都需要一支笔。通常我们使用普通实心笔,但您需要具有更改DashStyle属性的笔。对于虚线,将此属性更改为DashStyle.Dot。您还可以试用DashPattern属性。

要在大方块周围绘制小方块,您需要FillRectangle个函数之一。他们每个人都需要刷子。您需要一个white brush,它可以方便地预定义供您使用。填充矩形后,您必须在其上绘制一个具有相同尺寸的矩形。这两个功能一起给人一种空的和带衬里的矩形的印象。

要使小方块略微圆整,就像它们在图像中一样,您必须更改调用DrawRectangle时使用的笔参数。试用LineJoinPen类的其他属性。

答案 1 :(得分:0)

对于您发布的简单问题,这很难。你需要照顾很多事情。

  1. 首先,我建议创建一个具有Rectangle属性的类,因为它不能继承Rectangle,因为它是一个结构。
  2. 您将需要处理绘图,这是其他答案中提到的最简单的任务,所以我不会具体说明。
  3. 由于你有小方块表明矩形可以调整大小,你必须实现检查鼠标点是否在大矩形或一些小suqares中的方法。在这种情况下,您应该更改光标以指示调整大小的可能性。
  4. 要处理矩形的移动(但不调整大小),您可以创建一个新的小方块,其中的符号可以在所有方向上移动,或者当鼠标位置在大矩形内时,您将使用光标处理。 / LI>
  5. 主要问题是确定调整大小时要更改的内容,您有两种选择:(1)更改LocationSize属性或更改XY ,矩形的Width和(2)Height属性。例如,当您移动右上角时,您应该在第一种情况下更改位置和大小,或者Y和宽度是否使用第二种选项。
  6. 单击鼠标时移动鼠标时,应注意鼠标移动的方向。如果将视口分割为象限,其中矩形的中心是Decartes坐标系的中心,通过识别鼠标的哪个象限,您将知道需要移动的象限的哪个角(或边)。
  7. 每次鼠标移动都必须调用Invalidate(),因为你不能在C ++中使用Xor。因此,当显示矩形时,您应该处于一种特殊模式,其中所有不移动的内容(不是更改,除了Rectangle和所选控件之外的所有内容)都应该绘制到两次重绘之间使用的Bitmap,而您应该只绘制移动。
  8. 正如您所看到的,有很多事情需要注意。只有在确定已经实现了程序的其他部分之后,才应该从这开始。