文档章节

GdiPlus[2]: 获取绘图表面(Graphics)

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 284
阅读 5
收藏 0

绘图表面(Graphics, 这在 VCL 体系中叫 Canvas), 在 GdiPlus 中有四种获取方法:

1、通过窗口句柄获取;
2、通过窗口的 Canvas.Handle 获取;
3、通过 GdiPlus 利用 Helper 技术给部分 VCL 对象添加的 ToGPGraphics 方法获取;
4、通过图像对象获取.

本例效果图:



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses GdiPlus, GdiPlusHelpers;

//从窗口句柄获取 IGPGraphics
procedure TForm1.Button1Click(Sender: TObject);
var
  Graphics: IGPGraphics;
  Pen: IGPPen;
begin
  Graphics := TGPGraphics.Create(Handle);
  Pen := TGPPen.Create(TGPColor.Red, 2);
  Graphics.DrawEllipse(Pen, 20, 10, 150, 40);
end;

//从 HDC 获取 IGPGraphics
procedure TForm1.Button2Click(Sender: TObject);
var
  Graphics: IGPGraphics;
  Pen: IGPPen;
begin
  Graphics := TGPGraphics.Create(Canvas.Handle);
  Pen := TGPPen.Create(TGPColor.Green, 2);
  Graphics.DrawEllipse(Pen, 20, 40, 150, 40);
end;

//使用 GdiPlusHelpers 为 Canvas 添加的 ToGPGraphics 方法获取 IGPGraphics
procedure TForm1.Button3Click(Sender: TObject);
var
  Graphics: IGPGraphics;
  Pen: IGPPen;
begin
  Graphics := Canvas.ToGPGraphics;
  Pen := TGPPen.Create(TGPColor.Blue, 2);
  Graphics.DrawEllipse(Pen, 20, 70, 150, 40);
end;

//从图像建立 IGPGraphics
procedure TForm1.Button4Click(Sender: TObject);
var
  GraphicsImg: IGPGraphics;
  Pen: IGPPen;
  Image: IGPImage;
begin
  Image := TGPBitmap.Create(152, 42);
  GraphicsImg := TGPGraphics.Create(Image);
  Pen := TGPPen.Create(TGPColor.Fuchsia, 2);
  GraphicsImg.DrawEllipse(Pen, 0, 0, Image.Width-2, Image.Height-2);

  Canvas.ToGPGraphics.DrawImage(Image, 20, 100);
end;

end.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/12/11/1621847.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
MFC边框重绘

? 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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 pragma once incl......

江河海流
2016/01/30
509
0
C# WinForm开发系列 - GDI+

UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序。UI编程体现在两个方...

长征2号
2017/11/14
0
0
Android画布和图形绘制---Canvas and Drawables(二)

注:本文译自:http://developer.android.com/guide/topics/graphics/2d-graphics.html 在View对象上绘图 如果应用程序不需要大量的图形处理或很高的帧速率(如一个棋类游戏、Snake游戏或另外...

长平狐
2012/10/16
521
0
iOS——Quartz2D(二维图形绘制)

1、Quartz2D 基本概述 Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。它提供了低级别、轻量级、高保真度的2D渲染。 Quartz 2D是一个二维图形绘制引擎,适用于iOS...

kinglin_fu
2016/01/25
196
0
Quartz 2D绘图

Quartz 2D绘图 Quartz 2D 概述 概述: Quartz 2D是一个⼆维图形绘制引擎,支持iOS环境和Mac OS X环境。我们可以使⽤用Quartz 2D API来实现许多功能,如基本路径的绘制、透明度、描影、绘制阴影、...

魏萌萌丶
2016/08/31
24
0

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
58
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
50
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
54
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
59
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
54
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部