• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Delphi > Delphi下OpenGL2d绘图之画线的方法

Delphi下OpenGL2d绘图之画线的方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了delphi 画线,delphi 清除画线,delphi方法,delphi xe8破解方法,delphi 类方法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、前言:

Delphi画线方法与画点基本上是相同的。区别在于glBegin()的参数。绘制的框架代码可以参考Delphi下OpenGL2d绘图初始化中的代码,地址为http://www.weikejianghu.com/article/52141.htm。修改的部份为 Draw 函数的内容。

二、画线步骤:

GL_LINES:把每一个顶点作为一个独立的线段,顶点2n-1和2n之间共定义了n条线段,总共绘制N/2条线段
GL_LINE_STRIP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,第n和n+1个顶点定义了线段n,总共绘制n-1条线段
GL_LINE_LOOP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,然后最后一个顶点和第一个顶点相连,第n和n+1个顶点定义了线段n,总共绘制n条线段

画线可能用到以下函数:

glLineWidth() 设置线条宽度
glShadeModel() 设置颜色过渡模式
glColor3f() 设置线条颜色

procedure TForm1.Draw;
begin
  // 清空缓冲区
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  // ----------- GL_LINES -----------
  // 设置线宽
  glLineWidth(5);
  // 两点间渐变色
  glShadeModel(GL_SMOOTH);
  glBegin(GL_LINES);  // 画线
  // 设置起点线的颜色
  glColor3f(1, 0, 0);
  // 绘制起点
  glVertex2f(50, 50);
  // 设置末点线的颜色
  glColor3f(0, 0, 1);
  // 绘画末点
  glVertex2f(200, 200);
  glEnd;
  // 两点间同颜色
  glShadeModel(GL_FLAT);
  glBegin(GL_LINES);
  glColor3f(0, 1, 0);
  glVertex2f(200, 50);
  glColor3f(1, 1, 0);
  glVertex2f(50, 200);
  glEnd;
  // ----------- GL_LINE_LOOP -----------
  // 三个点闭环形成一个三角形  glShadeModel(GL_SMOOTH); 不起作用
  glLineWidth(1);
  glBegin(GL_LINE_LOOP);
  glColor3f(0, 0, 1);
  glVertex2f(250, 50);
  glVertex2f(250, 200);
  glVertex2f(280, 150);
  glEnd;
  // ----------- GL_LINE_STRIP -----------
  // 多点折线    glShadeModel(GL_SMOOTH); 不起作用
  glLineWidth(1);
  glBegin(GL_LINE_STRIP);
  glColor3f(1, 0, 255);
  glVertex2f(350, 50);
  glVertex2f(400, 200);
  glVertex2f(480, 150);
  glVertex2f(490, 60);
  glEnd;
  SwapBuffers(FDC); //交换双缓冲区内容,这将把刚绘制的图形翻印到屏幕上。
end;
</div>

可以看到第一个X线条颜色渐变的,OpenGL默认情况下是这种样式。opengl中提供了一个函数glShadeModel来决定如何处理这种不同颜色的情况。

glShadeModel(GL_SMOOTH); // 平滑方式,这也是opengl的默认处理方式,实现颜色渐变的效果
glShadeModel(GL_FLAT);  // 单色方式,线段的颜色以某一个顶点的颜色为准,由具体实现决定。为了避免不确定性,应尽量在多边形中使用同一种颜色

</div>

经过测试后发现,在GL_LINE_LOOP与GL_LINE_STRIP样式下,渐变效果无效!具体原因有待进一步查明。

另外,OpenGL提供了抗锯齿的功能,函数为

glEnable(GL_LINE_SMOOTH); //启用
glHint(GL_LINE_SMOOTH,GL_NICEST);
glDisable(GL_LINE_SMOOTH); //关闭

</div>

使用后发现抗锯齿效果不明显。有待进一步继续再研究。

完整代码点此下载

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Delphi下OpenGL2d绘图之画线的方法

相关文章

  • 2017-05-28Delphi XE5 为Android应用制作签名的方法(图文)
  • 2017-05-28截取指定符号之间的字符串(随机读取)delphi实例代码
  • 2017-05-28Delphi解析FTP地址的方法
  • 2017-05-28delphi制作wav文件的方法
  • 2017-05-28delphi实现保存和读取图片的方法
  • 2017-05-28Delphi实现判断网址是否存在及是否可以打开的方法
  • 2017-05-28Delphi修改操作注册表权限的代码
  • 2017-05-28Delphi基本图像处理方法汇总
  • 2017-05-28Delphi中设置条件断点的方法讲解
  • 2017-05-28delphi mysql adbquery数据提供程序或其他服务返回 E_FAIL 状态

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • TImage组件实现保存图片到Stream
    • Delphi使用OpenGL2d绘图之画图片Bmp的方法
    • delphi mysql adbquery数据提供程序或其他服务返回 E_FAIL 状态
    • Delphi实现树型结构具体实例
    • Delphi实现木马文件传输代码实例
    • Delphi中设置条件断点的方法讲解
    • Delphi编程常用快捷键大全
    • delphi实现保存和读取图片的方法
    • 插件管理框架 for Delphi(一)
    • Delphi实现获取句柄并发送消息的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有