代码之家  ›  专栏  ›  技术社区  ›  Bob

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

  •  0
  • Bob  · 技术社区  · 15 年前

    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)
    

    1 回复  |  直到 15 年前
        1
  •  2
  •   Vojislav Stojkovic    15 年前

    事实证明,我最初发布的答案并没有真正解决问题,它在我的机器上工作,因为我引入了一个额外的更改,即更改 填充模式 :

    GraphicsPath path = new GraphicsPath(FillMode.Winding);
    

    当你使用 模式下,即使没有按顺序添加行,算法也会检测到闭合路径。