c# - 使用c#在两条线之间绘制链接或路径

标签 c# winforms gdi+ system.drawing

我正在尝试在两条线之间绘制一条路径,如下所示。

wanted graph

我使用下面的代码来做到这一点

        Pen usedpen= new Pen(Color.Black, 2);
        //Point[] p = {
        //    new Point(518,10),
        //    new Point(518,20),
        //    new Point(518-85,15)
        //};
        GraphicsPath path = new GraphicsPath();

        path.StartFigure();
        path.AddLine(new Point(518, 10), new Point(433, 10));
        path.AddLine(new Point(518, 40), new Point(433, 40));
        path.AddLine(new Point(433,10), new Point(433,40));
        //usedpen.LineJoin = LineJoin.Round;
        e.Graphics.DrawPath(usedpen, path);

但使用这段代码后,绘制了如下图形:

Result

任何帮助
提前致谢

最佳答案

哦,你正在使用 onPaint 事件,所以问题是你正在绘制一条路径,这意味着点将从第一行的末尾到下一行的开头。

第一行之后

path.AddLine(new Point(518, 10), new Point(433, 10));

现在点在 (433, 10)

现在下一行说从 (518, 40) 到 (433, 40)

现在实际发生的是从 (433, 10) 到 (518, 40) 绘制了一条线,因为它是一条继续绘制的路径。

 GraphicsPath path = new GraphicsPath();
 path.StartFigure();
 path.AddLine(new Point(518, 10), new Point(433, 10));
 path.AddLine(new Point(433, 10), new Point(433, 40));
 path.AddLine(new Point(433, 40), new Point(518, 40));
 usedpen.LineJoin = LineJoin.Round;

关于c# - 使用c#在两条线之间绘制链接或路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50028728/

相关文章:

c# - 通过 WebRequest 发送文件

c# - Microsoft Sync Framework 2.0 中的选择性同步

c# - MF SinkWriter写入样本失败

c# - 如何在单个 webapi 请求中使用单个对象并在所有子进程中填充其属性?

c# - 是否有用于显示 HTML 的 .Net WinForm 应用程序的控件

c# - 如果 MenuStrip 设置了此快捷方式,则快捷方式 Ctrl+C Ctrl+V 在文本框中不起作用

c# - 无法使用 Color.FromArgb 设置透明度(但 Color.Transparent 有效)

C# GDI+/System.Drawing.Graphics - 创建缓冲区并手动 blitting?

c# - imageList.Draw 不会以不同的尺寸绘制?

c# - GDI+ 无法保存 PNG C#