【问题标题】:How can I draw a square around an object, like this, in my GUI editor?如何在我的 GUI 编辑器中围绕对象绘制一个正方形,像这样?
【发布时间】:2012-10-13 22:36:51
【问题描述】:

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

有没有什么库可以让写这种东西更容易?

【问题讨论】:

  • 没什么。我刚试过 square 但没有任何意义。
  • 先尝试一个不那么雄心勃勃的项目。
  • 先学习语言。如果你不擅长 C#,那么编写 GUI 编辑器将会非常困难。
  • 其实我没有你想的那么差。我以前有编程经验。我可以动态创建对象,我可以移动它但我不能专注于它,我没有找到解决方案。如果你有想法请告诉我。

标签: c# controls


【解决方案1】:

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

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

要使小正方形像图像中的那样稍微圆润,您必须更改调用 DrawRectangle 时使用的笔参数。试验LineJoin 和Pen 类的其他属性。

【讨论】:

  • 非常感谢,这对我来说是非常有价值的信息。
【解决方案2】:

这对于您发布的一个简单问题来说非常困难。有很多事情你需要照顾。

  1. 首先,我建议创建一个具有Rectangle 属性的类,因为您不能子类化 Rectangle,因为它是一个结构。
  2. 您将需要处理绘图,这是其他答案中提到的最简单的任务,因此我不会对此进行具体说明。
  3. 由于您有指示矩形可以调整大小的小方块,因此您必须实现检查鼠标点是否在大矩形或某些小矩形内的方法。在这种情况下,您应该更改光标以指示调整大小的可能性。
  4. 要处理矩形的移动(但不调整大小),您必须制作一个带有向所有方向移动的标志的新小正方形,或者当鼠标位置在大矩形内时使用光标来处理。
  5. 主要问题是确定调整大小时要更改的内容,您有两种选择:(1)更改Location和Size属性或更改X、Y、Width和(2) Height 矩形的属性。例如,当您移动右上角时,您应该在第一种情况下更改位置和大小,或者在使用第二个选项时更改 Y 和宽度。
  6. 在单击鼠标时移动鼠标时,应注意鼠标移动的方向。如果将视口拆分为矩形中心是笛卡尔坐标系中心的象限,通过识别鼠标在哪个象限中,您将知道需要移动象限的哪个角(或边缘)。
  7. 每次鼠标移动都必须调用 Invalidate(),因为您不能像在 C++ 中那样使用 Xor。因此,当您的 Rectangle 显示时,您应该处于一种特殊模式,其中不移动的所有内容(不更改,除 Rectangle 和选定控件之外的所有内容)都应该绘制到在两次重绘之间使用的位图上,并且您应该只绘制什么是移动。

如您所见,有很多事情需要注意。只有在确定您已经实现了程序的其他部分之后,您才应该从这里开始。

【讨论】:

  • 我觉得还有很多事情等着我,谢谢你对我说。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多