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;

完整代码点此下载

(0)

相关推荐

  • 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

随机推荐