Delphi下OpenGL2d绘图之画四边形的方法
一、前言:
Delphi实现画四边形的方法基本上与前几遍文字代码是相同的。其区别知识在于glBegin()的参数“GL_QUADS”。绘制的框架代码可以使用Delphi下OpenGL2d绘图初始化中的代码,地址为http://www.jb51.net/article/52141.htm。修改的部份为 Draw 函数的内容。
二、画四边形方法:
使用GL_QUADS:绘制由四个顶点组成的一组单独的四边形。顶点4n-3、4n-2、4n-1和4n定义了第n个四边形。总共绘制N/4个四边形。这里学画四边形是为了画位图做准备。
设置颜色:
glColor3f(1, 0.5, 0); 可以设置四边形的颜色,参数为三部份,分别为 R、G、B的值,取得范围为0到1,1表示255,0.5表128。这里需要特别予以注意!
设置四边形的点:
glVertex2f(nleft, ntop); nleft、ntop表示四边形的点在窗口上的像素点位置。每个点的位置需按顺时针或逆时针设置。
代码如下:
procedure TForm1.Draw; var l, t, w: Integer; begin // 清空缓冲区 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // 设置四边形的颜色 glColor3f(1, 0.5, 0); // 绘制第一个多边形 l := 10; t := 10; w := 64; glBegin(GL_QUADS); glVertex2f(l, t); glVertex2f(l + w, t); glVertex2f(l + w, t + w); glVertex2f(l, t + w); glEnd(); // 绘制第二个多边形 l := 80; t := 10; glColor3f(0, 0.5, 0); glBegin(GL_QUADS); glVertex2f(l, t); glVertex2f(l + w, t + w); glVertex2f(l + w, t); glVertex2f(l, t + w); glEnd(); SwapBuffers(FDC); //交换双缓冲区内容,这将把刚绘制的图形翻印到屏幕上。 end;
完整代码点此下载
相关推荐
-
delphi中exit,abort,break,continue的区别介绍
delphi中表示跳出的有break,continue, exit,abort, halt, runerror. 1.break 强制退出循环(只能放在循环中),用于从For语句,while语句或repeat语句中强制退出. 2.continue 用于从For语句,while语句或repeat语句强行结束本次称称循环,并开始下一次循环. 3.exit 用于从当前代码块中退出.若该代码为主程序,则终止该程序,若是函数或过程,则立即该过程或函数. 4.abort 中止程序的运行,产生不报错的异常信息
-
Delphi实现毫秒级别的倒计时实例代码
本文以实例简述了Delphi实现毫秒级别倒计时的方法.一般来说可以获得系统的高性能频率计数器在一毫秒内的震动次数,如果时钟震动次数超过10毫秒的次数则刷新edit3的显示,显示从开始记数到记数实际经过的时间,具体实现代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, mmsystem; type
-
Delphi用TActionList实现下载文件的方法
Delphi中的TActionList有个标准动作TDownLoadURL,内部是使用的URLDownloadToFile,它下载文件时会定时产生OnDownloadProgress 事件,这样就可以用进度条显示. 本文讲述了Delphi用TActionList实现下载文件的方法,实现代码如下所示: uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtActns,
-
Delphi7中Listview的常用功能汇总
有些时候我们在使用Delphi7的Listview过程中总是要改一些默认的设置,现在把它们集中起来汇总如下. MultiSelect := True; 使Listview可以同时选择多行 GridLines := True; 使Listview显示格线 ViewStyle := vsReport; 显示数据项的详细列表 HideSelection := True; 使listview失去焦点时,选中行不高亮 //设置颜色 procedure TForm1.ListView1Cust
-
Delphi常用关键字用法详解
本文详细介绍了Delphi中常用的各个关键字名称及用法,供大家在编程过程中借鉴参考之用.详情如下: absolute: //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: string[32]; StrLen: Byte absoluteStr; //这个声明指定了变量StrLen起始地址与Str相同. //由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度. begin Str := 'abc'; Edit1.Text := I
-
Delphi实例演示Rect、Bounds生成TRect的区别
本文以实例演示Rect.Bounds生成TRect的区别,实例代码如下: unitUnit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; RadioGroup1: TRadioGroup; procedure Ra
-
Delphi实现读取系统时间与日期完整实例
本文讲述了Delphi读取系统时间与日期的实现方法,首先设置各个控件用于显示时间.读取时间与设置时间.再添加如下代码: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Button2: TButton; pr
-
Delphi控件ListView的属性及使用方法详解
Delphi的ListView组件位于组件板的Win32页,可使用4种图形方式(大图标.小图标.列表.详细列表)来描述选项内容,类似于Windows操作系统中的"我的电脑",数据项图形保存在ImageList组件中. 1.ListView主要属性 (1)ViewStyle属性 ViewStyle属性用于选择数据项的4种显示方式,因此该属性有4个选项值:vsIcon大图标.vsSmallIcon小图标.vsList列表.vsReport详细列表. (2)Items属性 Items属性用于
-
Delphi实现Listbox中的item根据内容显示不同颜色的方法
本文简述了Delphi实现Listbox中的item根据内容显示不同颜色的方法,实现步骤如下: ListBox1 的 Style 属性改为 lbOwnerDrawVariable 在ListBox的OnDrawItem事件裡,根据item的值,改变Canvas属性 示例代码如下: procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
-
Delphi下OpenGL2d绘图之画四边形的方法
一.前言: Delphi实现画四边形的方法基本上与前几遍文字代码是相同的.其区别知识在于glBegin()的参数"GL_QUADS".绘制的框架代码可以使用Delphi下OpenGL2d绘图初始化中的代码,地址为http://www.jb51.net/article/52141.htm.修改的部份为 Draw 函数的内容. 二.画四边形方法: 使用GL_QUADS:绘制由四个顶点组成的一组单独的四边形.顶点4n-3.4n-2.4n-1和4n定义了第n个四边形.总共绘制N/4个四边形.这
-
Delphi下OpenGL2d绘图之画点的方法
一.前言 Delphi图形的绘制可以在glBegin().glEnd()之间完成,绘制的框架代码可以使用Delphi下OpenGL2d绘图的初始化代码,具体内容可参考本站http://www.jb51.net/article/52141.htm.修改的部份为 Draw 函数的内容. 二.画点 使用glPointSize 函数指定栅格化点的直径.默认为1.0,只在GL_POINTS下起作用,关于消锯齿等功能以后再研究.使用glBegin(GL_POINTS)告诉OpenGL画点,参数GL_POIN
-
Delphi下OpenGL2d绘图之画线的方法
一.前言: Delphi画线方法与画点基本上是相同的.区别在于glBegin()的参数.绘制的框架代码可以参考Delphi下OpenGL2d绘图初始化中的代码,地址为http://www.jb51.net/article/52141.htm.修改的部份为 Draw 函数的内容. 二.画线步骤: GL_LINES:把每一个顶点作为一个独立的线段,顶点2n-1和2n之间共定义了n条线段,总共绘制N/2条线段 GL_LINE_STRIP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,第n和n+1个
-
Delphi下OpenGL2d绘图之初始化流程详解
一.前言: Delphi默认支持OpenGl,可以使用uses OpenGL单元进行引用,之后就可以使用OpenGL的函数.OpenGl是跨平台的,而且Windows很早就支持并集成在系统中,存在于system32中的opengl32.dll,不需要再额外进行安装.虽然windows本身有d3d,但是其能力有限,相关学习资料页相对较少. 通常OpenGL仅仅支持以下几种基本几何图形:点,线和多边形.没有表面或者更高级的图形(比如球状图形)能被作为基本图形元素绘制.但是它们能够用多边形来完美的模仿
-
Delphi使用OpenGL2d绘图之画图片Bmp的方法
一.前言: 对于Delphi来说,要画图片要先处理一下,需要引用别的单元,而Delphi中没带,需要另外下载Gl.pas.网上常见自带的OpenGl单元封装的是1.0版的,有此函数未声明.网上可以找到Gl.pas单元.另外需要一个Glaux.pas单元与glaux.dll,是辅助库.在本文最后会提供下载. 二.实现流程: 绘画图片需要以下几个流程.Window本身的绘图是以位图为基础的,png,jpg等,绘画时,可以转为bmp再画. 1.加载bmp图片:使用auxDIBImageLoadA或其他
-
python海龟绘图之画国旗实例代码
画之前肯定要知道规格图,我找了一个大致的图. 参考图片: 绘制大星的方法很简单,五角星的补角是144度. 绘制小五角星有点麻烦,因为我国国旗上的小五角星并不是平放的(美帝曾经这样把我们的国旗搞错过),而是总有一个角正对着大五角星的中心!我的方法是,定位到小五角星的中心点,然后根据角度后退一定的长度.这个角度可以根据反勾股定理算出来(这有计算工具),长度我是按照大五角星的中心点到角尖的距离除以3得到的. 代码: from turtle import * screensize(2000,2000,'
-
js实现两点之间画线的方法
本文实例讲述了js实现两点之间画线的方法.分享给大家供大家参考.具体分析如下: 最近有点无聊,琢磨了很久,想到了一消磨时间的点子,也就是做js版的连连看. 两点之间画线也只是连连看最基本功能的一部分,所以我画的线也仅是折线,而且还只能向左折,后面将根据连连看中图片位置点来确定折线的方向. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
-
Android编程绘图操作之弧形绘制方法示例
本文实例讲述了Android编程绘图操作之弧形绘制方法.分享给大家供大家参考,具体如下: /** * 绘制弧形图案 * @description: * @author ldm * @date 2016-4-25 下午4:37:01 */ public class ArcsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns
-
使用matplotlib画散点图的方法
如下所示: import matplotlib.pyplot as plt import numpy as np a = np.array([1,2,3,4]) b = np.array([1,2,3,4]) c = np.array([2,3,4,5]) d = np.array([2,3,4,5]) ''' figure的作用新建绘画窗口,独立显示绘画的图片 figsize 表示新建绘画窗口的大小 dpi是分辨率 ''' plt.figure(figsize = (8,5),dpi = 80
-
win7下从ruby源代码编译安装的方法
工作中需要在c++代码中嵌入ruby c api,然而在vs工程中编译失败,所以现在通过手动从源代码编译ruby寻找原因(之前使用rubyinstaller安装). 先从官网下载ruby 2.4.1 版本,https://www.ruby-lang.org/en/downloads/ 从安装指导可以看到,官方只提供了linux平台下的编译安装步骤,https://www.ruby-lang.org/en/documentation/installation/#building-from-sour
随机推荐
- Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
- js history对象简单实现返回和前进
- ECMAScript5(ES5)中bind方法使用小结
- 用VBS修改IIS Metabase 的代码
- iOS轻点、触摸和手势代码开发
- 处理Python中的URLError异常的方法
- implicitly convert type 'int' to 'short'的原因与解决方法
- Laravel中七个非常有用但很少人知道的Carbon方法
- Android中Notification用法实例总结
- 深入解析Python中的urllib2模块
- C# Dynamic关键字之:解析dynamic就是Object
- 求素数,用vector存储的实现方法
- Mysql事务处理详解
- Mysql 5.5.56版本(二进制包安装)自定义安装路径步骤记录
- javascript删除数组重复元素的方法汇总
- jquery分析文本里url或邮件地址为真实链接的方法
- javascript拖拽效果延伸学习
- js 右侧浮动层效果实现代码(跟随滚动)
- node使用UEditor富文本编辑器的方法实例
- Java 本地方法Native Method详细介绍