GraphicsPath - 为什么 AddLine 方法的顺序很重要

发布于 2024-07-12 11:37:02 字数 614 浏览 5 评论 0原文

我正在使用以下代码绘制一个三角形

int x = x coordinate for center;
int ax = x coordinate for left;
int bx = x coordinate for right;
int top = y coordinate for top;
int bottom = y coordinate for bottom;

//           (x, top)
//(ax, bottom)      (bx, bottom) 

GraphicsPath path = new GraphicsPath();
// _
path.AddLine(ax, bottom, bx, bottom);
// /
path.AddLine(ax, bottom, x, top);
// \
path.AddLine(bx, bottom, x, top);
// order of drawing is _ / \ (bottom line, left side, right side)

当我调用 DrawPath 时,它总是绘制我的线条,无论顺序如何。 但是当我调用 FillPath 时,它什么也没做。 只有当我的订单是/_\或\_/时,我的三角形才会真正填充。 为什么是这样?

I am drawing a triangle with the following code

int x = x coordinate for center;
int ax = x coordinate for left;
int bx = x coordinate for right;
int top = y coordinate for top;
int bottom = y coordinate for bottom;

//           (x, top)
//(ax, bottom)      (bx, bottom) 

GraphicsPath path = new GraphicsPath();
// _
path.AddLine(ax, bottom, bx, bottom);
// /
path.AddLine(ax, bottom, x, top);
// \
path.AddLine(bx, bottom, x, top);
// order of drawing is _ / \ (bottom line, left side, right side)

When I call DrawPath, it always draws my lines, no matter the order. But when I call FillPath, it does nothing. Only when my order is / _ \ or \ _ / does my triangle actually fill. Why is this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

音栖息无 2024-07-19 11:37:02

事实证明,我最初发布的答案并没有真正解决问题,并且它在我的机器上有效,因为我引入了额外的更改,即更改 FillMode

GraphicsPath path = new GraphicsPath(FillMode.Winding);

当您使用 < strong>缠绕模式,即使您没有按顺序添加线条,算法也会检测到闭合路径。

It turns out that the answer I posted originally didn't really solve the problem and that it worked on my machine because of an additional change I introduced, which is to change the FillMode:

GraphicsPath path = new GraphicsPath(FillMode.Winding);

When you use the Winding mode, the algorithm will detect a closed path even if you didn't add the lines in order.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文