【问题标题】:Drawing tapered lines programatically in c#在 C# 中以编程方式绘制锥形线
【发布时间】:2018-11-12 09:40:39
【问题描述】:

是否可以通过代码用c#绘制锥形曲线?

我可以像这样画曲线:

var g = panel1.CreateGraphics();
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
var p = new Pen(Color.Black);            
var sb = new SolidBrush(Color.Red);            
PointF[] points = new PointF[] {
    new PointF(1,0),
    new PointF(100,0),
    new PointF(200,100),
    new PointF(400,0),
};
g.DrawBeziers(p,points);

但是这样我不能设置不同的宽度。

这就是我想要实现的

【问题讨论】:

  • 不,没有内置的东西可以产生这样的效果。请注意,它需要相当多的参数来定义变化的角度。您可以创建第二个贝塞尔曲线并填充一个 pth,但漂亮坐标的计算并不总是微不足道的。最好利用图形旋转。

标签: c# drawing line bezier curve


【解决方案1】:

好的,一旦我知道我必须做什么,这很容易:

画两条线并填充它们之间的空间:

var g = panel1.CreateGraphics();
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

PointF[] points1 = new PointF[] {
    new PointF(0,0),
    new PointF(100,150),
    new PointF(500,0),
    //new PointF(400,0),
};
PointF[] points2 = new PointF[] {
    new PointF(0,0),
    new PointF(100,160),
    new PointF(500,0),
    //new PointF(400,0),
};

panelPath = new GraphicsPath();
panelPath.AddCurve(points1);
panelPath.AddCurve(points2);
g.FillPath(Brushes.Black, panelPath);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多