2)使用IGDIPlus接口

(1)下载安装所需软件

可以在以下地址下载IGDI+最新的安装程序。

http://www.mitov.com/products/igdi+

www.igdiplus.org

打开压缩包:

其中有三个文件是我们需要的:

IGDIPlus.pas

IGDIPlusAPI.inc

VCL.IGDIPlusExt.pas

(2)使用IGDI+绘图

将这三个文件加入到工程文件当中,或者设置包含目录,使工程能够找到上述文件。

工程文件如下:

窗口文件如下:

Pascal Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  object GDIPlusDemoForm2: TGDIPlusDemoForm2
  Left = 0 
  Top = 0 
  Caption = 'GDIPlusDemo2' 
  ClientHeight = 289 
  ClientWidth = 554 
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11 
  Font.Name = 'Tahoma' 
  Font.Style = []
  OldCreateOrder = False 
  PixelsPerInch = 96 
  TextHeight = 13 
  object pb1: TPaintBox
    Left = 24 
    Top = 16 
    Width = 473 
    Height = 209 
    OnPaint = pb1Paint
  end 
end

代码如下:

Pascal Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  unit GDIPlusDemo2;

interface

uses 
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.ExtCtrls, IGDIPlus, VCL.IGDIPlusExt;

type 
  TGDIPlusDemoForm2 = class(TForm)
    pb1: TPaintBox;
    procedure pb1Paint(Sender: TObject);
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end;

var 
  GDIPlusDemoForm2: TGDIPlusDemoForm2;

implementation

{$R *.dfm}

procedure TGDIPlusDemoForm2.pb1Paint(Sender: TObject);
var 
   g: IGPGraphics;
   p: IGPPen;
   b: IGPBrush;
   r: TIGPRect;
 begin 
   g := TIGPGraphics.FromCanvas(pb1.Canvas);
   p := TIGPPen.Create(aclRed, 2);
   b := TIGPSolidBrush.Create(aclAliceBlue);
   r := TIGPRect.Create(20, 20, 100, 60);
   g.FillRectangle(b, r);
   g.DrawRectangle(p, r);
end;

end.

结果如下:

注意:与Delphi内置的GDI+接口相比,IGDI+明显要简单得多,所有的类全部使用接口,所以不必再考虑对象的释放问题,只需要创建即可,对象会使用Delphi的接口机制实现自动地垃圾收集。

http://blog.sina.com.cn/s/blog_591968570102vwul.html

Delphi中使用GDI+进行绘图(2)的更多相关文章

  1. Delphi中使用GDI+进行绘图(1)

    Delphi的VCL类库中,默认使用的是GDI绘图接口,该接口封装了Win32 GDI接口,能够满足基本的绘图功能,但如果要实现更高级的绘图功能,往往比较困难,GDI+是微软在GDI之后的一个图形接口 ...

  2. VS2013中使用GDI+绘图

    VC范例,400多个例子源代码下载 http://download.csdn.net/detail/bigtree_mfc/7727977 VS2013中使用GDI+绘图和VC6.0不同,在VC6.0 ...

  3. 在MFC中使用GDI+的一般方法,以VC6.0编译器为例

    1.载解压GDI+开发包: 2.正确设置include & lib 目录: 设置如下:VC6.0编译器菜单Tools->Options->Directories中添加inlude ...

  4. delphi 中几种多线程操作方式

    在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程. 为了保证线程的安全性请大家看看下面介绍 Delphi多线程同步的一些处理方案大家可以参考:http: ...

  5. DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)

    函数重载重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同.实际上,编译器是通过检测参数来确定需要调用的例程.下面是从VCL 的数学单元(Math Unit)中摘录的一 ...

  6. DELPHI中多线程知识【转】

    本文的内容取自网络,并重新加以整理,在此留存仅仅是方便自己学习和查阅.所有代码均亲自测试 delphi7下测试有效.图片均为自己制作. 多线程应该是编程工作者的基础技能, 但这个基础我从来没学过,所以 ...

  7. delphi中panel控件应用

    delphi中的panel控件是怎么使用的?研究了很久了,还是搞不懂,只知道把它放到form上面,其他操作一律不懂了,有谁可以请教一下,如何把其他控件放到里面去呢?谢谢 提问者采纳   直接把控件放到 ...

  8. 在Delphi中使用系统对应文件类型的图标

    在应用程序的编写中,组合框(ComboBox).列表框(ListBox).等常见的部件,通常不仅要用于显示文字,而且还要显示其与文字相关的图标.在一般的Windows应用程序中,这些图标的显示都要随列 ...

  9. Delphi中stringlist分割字符串的用法

    Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...

随机推荐

  1. JSU省赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)

    JSU省赛队员选拔赛个人赛1 一.题目概述: A.Coin Change(暴力求解.动态规划)     B.Fibbonacci Number(递推求解) C.Max Num(排序.比较) D.单词数 ...

  2. Android灭亡论之Firefox OS操作系统出现

    今天是2014年7月1日,过几天就要到深圳实训去了,实训核心内容是Android开发.尽管Android现在很火,但作为程序猿的我们必须时刻保持清醒的头脑.我虽不是什么预言家,但近期接触的Androi ...

  3. 以xml的方式实现动画

    1.java代码 package com.example.tweenanim; import android.os.Bundle; import android.app.Activity; impor ...

  4. WinForm 小程序 NotePad

    运行效果: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  5. AFNetworking2.5使用2

    链接地址:http://blog.csdn.net/abc4715760/article/details/46521111 官网下载2.5版本:http://afnetworking.com/ 此文章 ...

  6. VMware 11安装Mac OS X 10.10 及安装Mac Vmware Tools(超详细),以及动态调整虚拟机硬盘大小

    先上一张效果图兴奋一下,博主穷屌丝一个,只能通过虚拟黑苹果体验下高富帅的生活,感觉超爽的,废话不多说的,直接上图了! 目录: 1.安装所需软件下载: 2.Mac OS X10.10 安装基本步骤: 3 ...

  7. StrPos,StrScan,

    Delphi提供的字符串函数里有一个Pos函数,它的定义是: function Pos(Substr: string; S: string): Integer; 它的作用是在字符串S中查找字符串Sub ...

  8. ie6背景透明的设置方法 ie6背景颜色透明和png图像透明解决方法

    IE6浏览器,让我们又爱又恨.爱它的是,可以让我们写的代码的时候,可以更标准,恨的是,它有太多无厘头的IE6常见bug(详情点击),让我们焦头烂额.现在现在用百度浏览器调查,国内占有率不到6%了,但是 ...

  9. 相邻数字的基数不等比:skew数

    2973:Skew数 描述在 skew binary表示中, 第 k 位的值xk表示xk*(2k+1-1). 每个位上的可能数字是0 或 1,最后面一个非零位可以是2, 例如, 10120(skew) ...

  10. 怎样让js不产生冲突,避免全局变量的泛滥,合理运用命名空间

    为了避免变量之间的覆盖与冲突.能够生成命名空间.命名空间是一种特殊的前缀,在js中,通过{ }对象实现. 在不同的匿名函数中,依据功能声明一个不同的命名空间,每一个匿名函数中GLOBAL对象的属性都不 ...