C#窗体程序OpenGL绘制立方体多边形旋转示例教程(VS2008,Winform)

简介:

朋友做毕业设计需要通过采集下位机数据绘制一个立方体,帮忙查了一下资料,发现用OpenGL可以很好的解决问题,鼓弄了2个小时弄出了这个示例程序,虽然简陋但是可以提供给朋友使用了,下面就放出代码和效果图给大家:

核心代码:

复制代码

    
    
private void openGLControl1_OpenGLDraw( object sender, PaintEventArgs e)
{
// 创建一个GL对象
SharpGL.OpenGL gl = this .openGLControl1.OpenGL;

gl.Clear(OpenGL.COLOR_BUFFER_BIT
| OpenGL.DEPTH_BUFFER_BIT); // 清空屏幕
gl.LoadIdentity(); // 重置
gl.Translate( 0.0f , 0.0f , - 6.0f ); // 设置坐标,距离屏幕距离为6

gl.Rotate(_x,
1.0f , 0.0f , 0.0f ); // 绕X轴旋转
gl.Rotate(_y, 0.0f , 1.0f , 0.0f ); // 绕Y轴旋转
gl.Rotate(_z, 0.0f , 0.0f , 1.0f ); // 绕Z轴旋转

gl.Begin(_model);
// 绘制立方体
gl.Color( 0.0f , 1.0f , 0.0f ); // 设置颜色
// 绘制其中一个面
gl.Vertex( 1.0f , 1.0f , - 1.0f );
gl.Vertex(
- 1.0f , 1.0f , - 1.0f );
gl.Vertex(
- 1.0f , 1.0f , 1.0f );
gl.Vertex(
1.0f , 1.0f , 1.0f );

// 如下类同
gl.Color( 1.0f , 0.5f , 0.0f );
gl.Vertex(
1.0f , - 1.0f , 1.0f );
gl.Vertex(
- 1.0f , - 1.0f , 1.0f );
gl.Vertex(
- 1.0f , - 1.0f , - 1.0f );
gl.Vertex(
1.0f , - 1.0f , - 1.0f );

gl.Color(
1.0f , 0.0f , 0.0f );
gl.Vertex(
1.0f , 1.0f , 1.0f );
gl.Vertex(
- 1.0f , 1.0f , 1.0f );
gl.Vertex(
- 1.0f , - 1.0f , 1.0f );
gl.Vertex(
1.0f , - 1.0f , 1.0f );

gl.Color(
1.0f , 1.0f , 0.0f );
gl.Vertex(
1.0f , - 1.0f , - 1.0f );
gl.Vertex(
- 1.0f , - 1.0f , - 1.0f );
gl.Vertex(
- 1.0f , 1.0f , - 1.0f );
gl.Vertex(
1.0f , 1.0f , - 1.0f );

gl.Color(
0.0f , 0.0f , 1.0f );
gl.Vertex(
- 1.0f , 1.0f , 1.0f );
gl.Vertex(
- 1.0f , 1.0f , - 1.0f );
gl.Vertex(
- 1.0f , - 1.0f , - 1.0f );
gl.Vertex(
- 1.0f , - 1.0f , 1.0f );

gl.Color(
1.0f , 0.0f , 1.0f );
gl.Vertex(
1.0f , 1.0f , - 1.0f );
gl.Vertex(
1.0f , 1.0f , 1.0f );
gl.Vertex(
1.0f , - 1.0f , 1.0f );
gl.Vertex(
1.0f , - 1.0f , - 1.0f );
gl.End();
// 结束绘制
}
复制代码

示例程序下载地址:旋转立方体示例.rar




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2011/03/06/1972597.html,如需转载请自行联系原作者

相关文章
|
1月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
|
1月前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
25天前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
|
1月前
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
67 0
|
1月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
49 0
|
1月前
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
61 0
|
2月前
|
C# 容器
C#中的命名空间与程序集管理
在C#编程中,`命名空间`和`程序集`是组织代码的关键概念,有助于提高代码的可维护性和复用性。本文从基础入手,详细解释了命名空间的逻辑组织方式及其基本语法,展示了如何使用`using`指令访问其他命名空间中的类型,并提供了常见问题的解决方案。接着介绍了程序集这一.NET框架的基本单位,包括其创建、引用及高级特性如强名称和延迟加载等。通过具体示例,展示了如何创建和使用自定义程序集,并提出了针对版本不匹配和性能问题的有效策略。理解并善用这些概念,能显著提升开发效率和代码质量。
96 4
|
1月前
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
86 0
|
1月前
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
77 0
|
1月前
|
API C#
异步轮询 Web API 的实现与 C# 示例
异步轮询 Web API 的实现与 C# 示例
75 0