#0012:新增etalon 文件格式的解析与可视化,和控制
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using SharpGL;
|
||||
using SharpGL.SceneGraph;
|
||||
using Telerik.WinControls.UI;
|
||||
|
||||
namespace HexcalMC.Base
|
||||
{
|
||||
public partial class SharpGLViewportControl : UserControl
|
||||
{
|
||||
private readonly OpenGLControl openGLControl;
|
||||
private List<Point3D> pointCloud;
|
||||
|
||||
public SharpGLViewportControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
openGLControl = new OpenGLControl
|
||||
{
|
||||
Dock = DockStyle.Fill
|
||||
};
|
||||
|
||||
|
||||
Controls.Add(openGLControl);
|
||||
|
||||
openGLControl.OpenGLInitialized += OpenGLControl_OpenGLInitialized;
|
||||
openGLControl.OpenGLDraw += OpenGLControl_OpenGLDraw;
|
||||
|
||||
pointCloud = new List<Point3D>();
|
||||
}
|
||||
|
||||
|
||||
public void SetPointCloud(List<Point3D> points)
|
||||
{
|
||||
pointCloud = points;
|
||||
openGLControl.Invalidate();// 重绘
|
||||
}
|
||||
|
||||
private void OpenGLControl_OpenGLInitialized(object sender, EventArgs e)
|
||||
{
|
||||
var gl = openGLControl.OpenGL;
|
||||
gl.Enable(OpenGL.GL_DEPTH_TEST);
|
||||
|
||||
// 设置清除背景色为黑色
|
||||
gl.ClearColor(0.0f, 0.0f, 1.0f, 0.0f);
|
||||
}
|
||||
|
||||
private void OpenGLControl_OpenGLDraw(object sender, RenderEventArgs args)
|
||||
{
|
||||
var gl = openGLControl.OpenGL;
|
||||
gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
gl.LoadIdentity();
|
||||
|
||||
gl.Begin(OpenGL.GL_POINTS);
|
||||
gl.Color(Color.White);
|
||||
|
||||
foreach (var point in pointCloud)
|
||||
{
|
||||
// 设置点的颜色
|
||||
gl.Color(1.0f, 0.0f, 0.0f); // 红色
|
||||
|
||||
// 设置点的大小
|
||||
gl.PointSize(5.0f); // 大小为5个单位
|
||||
gl.Vertex(point.X, point.Y, point.Z);
|
||||
}
|
||||
|
||||
gl.End();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user