摘抄自:万一的博客

安装头文件:http://www.cnblogs.com/del/archive/2008/06/06/1215319.html

目录

  1. 基本使用方法(绘制直线)
  2. 绘制一组直线
  3. 绘制矩形
  4. 绘制一组矩形
  5. 绘制椭圆型
  6. 绘制绘制弧线
  7. 绘制扇形(饼型)
  8. 绘制多边形
  9. 绘制闭合曲线

绘制曲线

基本使用方法:unit Unitinterfac

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs; type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
end; var
Form1: TForm1; implementation {$R *.dfm} uses GDIPOBJ, GDIPAPI; //头文件 procedure TForm1.FormPaint(Sender: TObject);
var
g: TGPGraphics; //我试了一下
p: TGPPen;
begin
 {这里我遇到一个问题,我把 g 的 Create 放到FormCreate方法中,把g.free放到FormDestroy里面的时候
  下面的draw会画不出东西来,包括g.Clear也没用了,为什么?为什么??}

g := TGPGraphics.Create(Canvas.Handle);//记住这个东西一定要随操作放在一起,在一起,在一起……  
p := TGPPen.Create(MakeColor(,,), );

 g.Clear(MakeColor(,,)); g.DrawLine(p, , , , ); {参数是整数} g.DrawLine(p, MakePoint(,), MakePoint(,)); {参数是点(整数)} g.DrawLine(p, 20.9, 80.0, 200.9, 80.0); {参数是小数} g.DrawLine(p, MakePoint(20.9, 100.0), MakePoint(200.9, 100.0)); {参数是点(小数)} g.Free; p.Free; end; end.

绘制一组直线

//使用数组记录端点
PtArr: array of TGPPoint; //绘制一组直线, 其实就是从七点开始依次将相邻的点连接
{如果是动态数组的话, 需要 @PtArr, 但动态数组本身就是个指针}
g.DrawLines(p, PGPPoint(PtArr), Length(PtArr));

绘制矩形

//绘制矩形
//x, y, w, h:Integer;
p.SetColor(aclRed);
g.DrawRectangle(p, x, y, w, h); p.SetColor(aclGold);
g.DrawRectangle(p, MakeRect(x, y, w, h));

一组矩形

//矩形变量
Rect: TGPRect;
RectArr: array[..] of TGPRect;
//矩形的属性
Rect.X := ;
Rect.Y := ;
Rect.Width := ClientWidth;
Rect.Height := ClientHeight;
//绘制矩形
g.DrawRectangles(p, PGPRect(@RectArr), Length(RectArr));

椭圆型

//椭圆形
g.DrawEllipse(p, x, y, w, h);

绘制弧线(其实就是没画完椭圆形)

//绘制椭圆形
//x, y, w, h:Integer;
//a1, a2:Integer;
//a1是开始角度( 表示在圆心的正右边开始画),a2是要画的弧度.
//a1 + a2 > 是顺时针角度,< 是逆时针角度 g.DrawArc(p, x, y, w, h, a1, a2);

绘制扇形(饼型)

//绘制扇形,具体参考绘制弧形
g.DrawPie(p, x, y, w, h, a1, a2);

多边形

//可参考绘制一组直线的方法,差别只是多了一条起点和重点间的连线
g.DrawPolygon(p, PGPPoint(PtArr), Length(PtArr));

闭合曲线

//参考多边形,差别是多边形曲线多了一个属性tension(控制弯曲程度)
var
tension: Single; {最后一个参数是可选的, 默认值是 0.5, 为 0 时曲线会转为直线段}
g.DrawClosedCurve(p, PGPPoint(PtArr), Length(PtArr),tension);

曲线

//参考闭合曲线,区别是不闭合
//第四、五位是数组中的起始和结束的序数
{后面三个参数是可选的, 最后参数的默认值是 0.5, 为 0 时曲线会转为直线段}
g.DrawCurve(p, PGPPoint(PtArr), Length(PtArr), n1, n2, tension);

delphi GDI+ [1]的更多相关文章

  1. Delphi GDI+ Library

    GDI+ LibraryThis library enables GDI+ functionality for Delphi 2009 and later. It differs from other ...

  2. Delphi GDI+ 安装方法

    [转]Delphi GDI+ 安装方法转自:万一博客(http://www.cnblogs.com/del/)GDI+ 是 Windows 的一个函数库, 来自 Windows\System32\GD ...

  3. Delphi GDI(一)

    Delphi 7下IGDIPlus库的使用 IGDI+是一个免费开源封装微软GDI+功能的Delphi库,该库使得可以用Delphi语言代码快速简短的实现复杂GDI+应用程序. 官方网站:http:/ ...

  4. Delphi GDI+基本用法总结

    GDI+以前只是听说过,还没怎么用过,这段时间用了用,觉得挺好用的.在这里总结一下.留个备忘. GDI+(Graphics Device Interface plus)是Windows XP中的一个子 ...

  5. Delphi+GDI

    源:Delphi 初试GDI+学习笔记 Delphi 深入GDI+学习笔记

  6. Delphi GDI对象之绘制位图

    http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579334.html 绘制位图(Drawing Bitmaps) 绘制位图听起来似乎很难, ...

  7. Delphi GDI对象之绘制文本

    转载:http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579185.html 基本绘图操作(Basic Drawing Operations ...

  8. delphi GDI 图片压缩代码 据说是位图缩放保持原图视觉效果最好的算法

    delphi 图片压缩代码 据说是位图缩放保持原图视觉效果最好的算法 若有更好的,请大神留言我也学习下,感谢! uses WinAPI.GDIPAPI, WinAPI.GDIPOBJ; var  Bi ...

  9. Delphi GDI对象之剪切区域

    原文链接: http://www.cnblogs.com/pchmonster/archive/2012/07/05/2577627.html 剪切区域(Clipping Regions) Regio ...

  10. Delphi GDI对象之脱屏位图(Offscreen Bitmaps),也叫内存位图

    http://www.cnblogs.com/pchmonster/archive/2012/07/09/2583613.html 脱屏位图(Offscreen Bitmaps) 脱屏位图,也叫内存位 ...

随机推荐

  1. bzoj 5195: [Usaco2018 Feb]Directory Traversal【树形dp】

    注意到目录是一颗树结构,然后就简单了,预以1为根的处理出dis[u]为以这个点为根,到子树内的目录总长,si为子树内叶子数 第二遍dfs换根即可 #include<iostream> #i ...

  2. 洛谷 P3953 逛公园【spfa+记忆化dfs+bfs】

    spfa预处理出最短路数组dis,然后反向建边bfs出ok[u]表示u能到n点 然后发现有0环的话时候有inf解的,先dfs找0环判断即可 然后dfs,设状态f[u][v]为到u点,还可以跑最短路+v ...

  3. bzoj 1565 [NOI2009]植物大战僵尸【tarjan+最大权闭合子图】

    一上来以为是裸的最大权闭合子图,上来就dinic -然后没过样例.不得不说样例还是非常良心的给了一个强连通分量,要不然就WA的生活不能自理了 然后注意到有一种特殊情况:每个植物向他保护的植物连边(包括 ...

  4. 洛谷 P2634 [国家集训队]聪聪可可

    点分板子2333 注释都是错过的地方 #include<cstdio> #include<algorithm> using namespace std; typedef lon ...

  5. Android推送服务(1)几种实现方式

    1.几种常见的解决方案实现原理 1)轮询(Pull)方式:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等.而且你还要考虑轮询的频率,如果 ...

  6. Ubuntu编译安装Apache

    第一步:编译安装依赖包apr,apr-util和pcre ./configure --prefix= make && make install 第二步:编译安装Apache ./con ...

  7. WPF学习10:基于MVVM Light 制作图形编辑工具(1)

    图形编辑器的功能如下图所示: 除了MVVM Light 框架是一个新东西之外,本文所涉及内容之前的WPF学习0-9基本都有相关介绍. 本节中,将搭建编辑器的界面,搭建MVVM Light 框架的使用环 ...

  8. ASP.NET中调用事务处理的方法

    /// <summary> /// 事务处理 /// </summary> /// <param name="strSql"></para ...

  9. Sql Server中清空所有数据表中的记录

    Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: 代码如下:exec sp_msforeachtable  @Command1 ='truncate table ?'删除所有数据 ...

  10. iOS截取特定的字符串(正则匹配)

    有时候我们会有需求从一个字符串中截取其他的字符串,根据情况的不同,我们来分析几种方法~~ 一. 固定长度字符串中截取固定位置长度的字符串 // 这是比较简单的一种情况:比如截取手机号的后4位 let ...