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();
}
}
}