【问题标题】:how do I create a rectangle that shows height?如何创建一个显示高度的矩形?
【发布时间】:2021-01-23 06:26:55
【问题描述】:

我正在尝试制作一个表格,该表格使用一堆使用图形的立方体创建一个矩形,但它只显示宽度。

【问题讨论】:

  • 显示高度是什么意思?
  • 我使用的代码只取了宽度并将其变成了盒子,但如果我想让我的矩形高度为 6 个立方体,我将如何显示它,如图所示
  • 删除这个:Graphics g = this.CreateGraphics();。使用提供的 PaintEventArgs.Graphics 对象处理 Paint 事件以绘制图形。 -- 你需要两个嵌套循环,使用形状的宽度和高度。
  • “这张照片就是它的样子”对于这样的问题总是有帮助的。 ps;立方体是 3D 形状
  • 查看使用正方形或矩形 here 绘制网格的两种方法。最好画直线而不是矩形,因为它更快,而且因为画矩形时 GDI+ 处理 Pen 的方式(另外,这意味着画的线比需要的多)。

标签: c# winforms graphics


【解决方案1】:

对于这个特定问题,一种更有效的方法是使用一个矩形作为第一行、第二行等......然后使用一个矩形作为第一列、第二列等......

var rowSize = width * size;
var columnSize = height * size;
for(var x = 0; x < width; x++)
    g.DrawRectangle(linepen, new Rectangle(x*size, Y, size, columnSize)
for(var y = 0; y < height; y++)
    g.DrawRectangle(linepen, new Rectangle(X, y *size, rowSize, size)

【讨论】:

  • 或者甚至只有一个矩形作为边界,然后是线条?
  • 是的,我不知道绘制线条是否比绘制矩形快很多,但可能
  • 我只是在想,这个解决方案至少会覆盖每个像素两次......“矩形和 15 条线”方法只会覆盖线条交叉的像素......主要是因为您以“更高效”为主导。 .
  • 是的,你也可以说更有效率,我的解决方案仍然比其他答案更有效......不知道为什么当我只是想帮助时有人反对我^^这就是为什么我不和现实生活中的人说话......
  • 您的解决方案很好。如果我可以投票,我会的。
【解决方案2】:

应该很简单:

for (var x = 0; x < width; x++)
for (var y = 0; y < height; y++)
   g.DrawRectangle(linepen, new Rectangle(x * size, y * size, Size, Size));

@Jimi 一样,这应该在paint 事件中完成,它为您提供Graphics 对象。这将允许它在重新绘制、刷新、调整大小等时存活下来。

【讨论】:

  • 这是否也会使用给定 X 和 Y 坐标中的位置
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
相关资源
最近更新 更多