怎样用Cshape画三维数据图
时间: 2023-09-30 10:07:48 浏览: 116
C#中可以使用多种库来绘制三维数据图,其中最常用的是OpenGL库和DirectX库。以下是一个基本的示例代码,使用OpenGL库来绘制一个简单的三维散点图:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tao.OpenGl;
using Tao.FreeGlut;
using Tao.Platform.Windows;
namespace ThreeDGraphExample
{
class Program
{
static void Main(string[] args)
{
// 初始化OpenGL
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);
Gl.glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
Gl.glClearDepth(1.0f);
Gl.glEnable(Gl.GL_DEPTH_TEST);
Gl.glDepthFunc(Gl.GL_LEQUAL);
Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST);
// 创建窗口
Glut.glutInitWindowSize(800, 600);
Glut.glutCreateWindow("ThreeDGraphExample");
// 设置视角
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Glu.gluPerspective(45.0f, 800.0f / 600.0f, 0.1f, 100.0f);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
// 开始绘制
Glut.glutDisplayFunc(RenderScene);
Glut.glutMainLoop();
}
static void RenderScene()
{
// 清空屏幕
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glLoadIdentity();
// 设置相机
Glu.gluLookAt(0.0f, 0.0f, 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
// 绘制坐标轴
Gl.glBegin(Gl.GL_LINES);
Gl.glColor3f(1.0f, 0.0f, 0.0f);
Gl.glVertex3f(-1.0f, 0.0f, 0.0f);
Gl.glVertex3f(1.0f, 0.0f, 0.0f);
Gl.glColor3f(0.0f, 1.0f, 0.0f);
Gl.glVertex3f(0.0f, -1.0f, 0.0f);
Gl.glVertex3f(0.0f, 1.0f, 0.0f);
Gl.glColor3f(0.0f, 0.0f, 1.0f);
Gl.glVertex3f(0.0f, 0.0f, -1.0f);
Gl.glVertex3f(0.0f, 0.0f, 1.0f);
Gl.glEnd();
// 绘制散点
Gl.glPointSize(5.0f);
Gl.glColor3f(0.0f, 0.0f, 0.0f);
Gl.glBegin(Gl.GL_POINTS);
Gl.glVertex3f(-0.5f, -0.5f, -0.5f);
Gl.glVertex3f(0.5f, 0.5f, 0.5f);
Gl.glVertex3f(-0.5f, 0.5f, 0.5f);
Gl.glVertex3f(0.5f, -0.5f, 0.5f);
Gl.glVertex3f(0.5f, 0.5f, -0.5f);
Gl.glVertex3f(-0.5f, -0.5f, 0.5f);
Gl.glVertex3f(0.5f, -0.5f, -0.5f);
Gl.glVertex3f(-0.5f, 0.5f, -0.5f);
Gl.glEnd();
// 刷新屏幕
Glut.glutSwapBuffers();
}
}
}
```
这段代码会创建一个窗口,并在窗口中绘制一个坐标轴和一些散点。你可以按照这个示例代码来编写你自己的三维数据图绘制程序。
阅读全文