【问题标题】:GDI+: How to fill a triangle?GDI+:如何填充三角形?
【发布时间】:2011-01-19 14:46:29
【问题描述】:

我想填充一个矩形(即三角形)的左下半部分:

使用 LinearGradient,从颜色变为透明:

填充半个矩形:

我知道点 (x,y) 和矩形的大小。

如果我尝试使用LinearGradientBrush 来执行我的线性渐变:

brush = new LinearGradientBrush(
      MakePoint(0, y), //bottom left corner
      MakePoint(x, 0), //upper right corner
      MakeColor(255, c), //fully opaque color
      MakeColor(0, c)); //fully transparent color
graphics.FillRectangle(brush, MakeRect(0, 0, w, h));

线性渐变画笔填充整个矩形,如果它继续用最终(透明)颜色填充矩形的其余部分就可以了;但相反,它环绕:

我有我喜欢的LinearGradientBrush,我只想FillTriangleFillPolygon,而不是FillRectangle。除了没有 FillTriangle 或 FillPolygon,只有 FillRectangle 和 FillEllipse。

另见

link text

【问题讨论】:

标签: gdi+ linear-gradients


【解决方案1】:

Graphics 库中有一个 FillPolygon。我认为您应该可以这样做:

brush = new LinearGradientBrush(
      MakePoint(x, y), 
      MakePoint(0, h), 
      MakeColor(255, c), //fully opaque color
      MakeColor(0, c)); //fully transparent color

graphics.FillPolygon(brush, new PointF[] {
        new PointF(0, 0),
        new PointF(0, h),
        new PointF(w, h)
    });

【讨论】:

  • 即使我是个白痴,我认为这个问题仍然有帮助,因为FillTriangle 可以实现为`FillPolygon)。尽管您的语法可能适用于 .NET,但它可以很容易地转换为 GDI+。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 2019-01-23
  • 1970-01-01
  • 2020-11-12
相关资源
最近更新 更多