using OpenTK.Graphics.OpenGL; using OpenTK.Mathematics; namespace Yw.WinFrmUI.Hydro { /// /// 绘制2d辅助类 /// internal class Draw2dHelper { /// /// 绘制节点 /// public static void DrawNode(NodeL3d node) { var size = node.Style2d.Normal.Radiu * 2; var color = node.Style2d.Normal.Color; if (node.IsSelected) { size = node.Style2d.Selected.Radiu * 2; color = node.Style2d.Selected.Color; } if (node.IsHovered) { size = node.Style2d.Hovered.Radiu * 2; color = node.Style2d.Hovered.Color; } DrawPoint(size, color, node.Position); } /// /// 绘制点 /// /// 点大小 /// 点颜色 /// 点位置 public static void DrawPoint(float size, Color color, PointL3d pt) { GL.PointSize(size); GL.Begin(PrimitiveType.Points); GL.Color3(color); GL.Vertex3(pt.X, pt.Y, pt.Z); GL.End(); } /// /// 绘制点 /// /// 点大小 /// 点颜色 /// 点位置 public static void DrawPoint(float size, Color color, Vector3 pt) { GL.PointSize(size); GL.Begin(PrimitiveType.Points); GL.Color3(color); GL.Vertex3(pt.X, pt.Y, pt.Z); GL.End(); } /// /// 绘制线 /// /// 线宽 /// 线色 /// 开始点 /// 结束点 public static void DrawLine(float width, Color color, PointL3d spt, PointL3d ept) { GL.LineWidth(width); GL.Begin(PrimitiveType.Lines); GL.Color3(color); GL.Vertex3(spt.X, spt.Y, spt.Z); GL.Vertex3(ept.X, ept.Y, ept.Z); GL.End(); } /// /// 绘制 /// /// 线宽 /// 线色 /// 开始点 /// 结束点 public static void DrawLine(float width, Color color, Vector3 spt, Vector3 ept) { GL.LineWidth(width); GL.Begin(PrimitiveType.Lines); GL.Color3(color); GL.Vertex3(spt.X, spt.Y, spt.Z); GL.Vertex3(ept.X, ept.Y, ept.Z); GL.End(); } } }