摘抄自:万一的博客

安装头文件: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 4826: [Hnoi2017]影魔【单调栈+树状数组+扫描线】

    参考:https://www.cnblogs.com/lcf-2000/p/6789680.html 这是一个相对码量少的做法,用到了区间修改区间查询的树状数组,详见:www.cnblogs.com/ ...

  2. 51nod 1122 机器人走方格 V4 【矩阵快速幂】

    首先建立矩阵,给每个格子编号,然后在4*4的格子中把能一步走到的格子置为1,然后乘n次即可,这里要用到矩阵快速幂 #include<iostream> #include<cstdio ...

  3. 51nod 1120 机器人走方格 V3 【卡特兰数+卢卡斯定理+组合数】

    -我并不知道为什么事卡特兰数,反正用dp打的表就是卡特兰数,因为是两个三角所以再乘个2 卡特兰数使用\( h(n)=\frac{C_{2n}^{n}}{n+1} \)因为范围比较大所以组合数部分用卢卡 ...

  4. 【插件开发】—— 14 Site is incorrect!编辑器启动报错!

    前言 博文纵览 最近在弄编辑器的时候出现了一个十分尴尬的错误!这里收录一下: BUG如下图所示: 目测堆栈,与自己开发的代码无关.完全是Eclipse自己初始化的时候遇到了问题,最头疼的就是这种问题. ...

  5. 【爬坑系列】之kubernetes环境搭建:二进制安装与镜像安装

    准备: 网上教如何编译与安装kubernetes的教程很多,需要提前准备的也很多,比如关闭selinux,防火墙啦....但有一点一定要注意,编译kubernetes源码时要求有2G内存,这个可是实打 ...

  6. 有了Git这些操作,我再也不怕开发了!

    Git 是什么? Git 是一个分布式的代码管理容器,本地和远端都保有一份相同的代码. Git 仓库主要是由是三部分组成:本地代码,缓存区,提交历史. Git 有哪些常规操作? Git的常规操作你了解 ...

  7. 置换测试: Mock, Stub 和其他

    简介 在理想情况下,你所做的所有测试都是能应对你实际代码的高级测试.例如,UI 测试将模拟实际的用户输入(Klaas 在他的文章中有讨论)等等.实但际上,这并非永远都是个好主意.为每个测试用例都访问一 ...

  8. Android开发中查看未root真机的app数据库

    在Android开发中,如果用到数据库来储存数据,那么难免就要查看数据库中的内容,可是对于未root的真机来说,查看数据库就不是那么容易了,如果仅仅为了查看数据库再把手机root了,有点得不偿失,所以 ...

  9. windows server 2008 r2 IIS7下网站配置 只允许指定的IP地址访问

    步骤一.找到ip地址和域限制 步骤二.添加全部拒绝 步骤三.添加允许访问的ip地址(局域网填写局域网ip,公网填写公网ip)  步骤四:如果想要拒绝某些ip访问,直接在规则中添加拒绝条目就可以  

  10. SOA测试之浏览器插件

    1. Chrome HTTP Rest Client 插件: 1.1 Postman: https://chrome.google.com/webstore/detail/postman-rest-c ...