文档章节

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
VC实现多格式图像的转换

色彩鲜艳漂亮的高品质图像,一个个形象生动的Windows图标,高速运动、活灵活现的三维动画,这些无一不显示出程序设计者的艺术才华。在程序设计中,图像处理已经成为每个程序员的必修课。 在V...

余二五
2017/11/06
0
0
Quartz 2D绘图

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

魏萌萌丶
2016/08/31
24
0
iOS——Quartz2D(二维图形绘制)

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

kinglin_fu
2016/01/25
196
0

没有更多内容

加载失败,请刷新页面

加载更多

iOS 官方文档

https://developer.apple.com/library/prerelease/content/navigation/#section=Platforms&topic=iOS...

walking_yxf
9分钟前
1
0
使用Mycat实现MySQL数据库的读写分离

前提准备 1.一台CentOS机器 2.Mycat安装包 (http://www.mycat.io/) 安装使用 1.解压Mycat的安装包到/user/local/下 2.设置mycat的环境变量 vi /etc/profile 3.使配置文件立即生效 source /...

吴伟祥
9分钟前
1
0
Aries数据库事务Recovery算法

背景知识 本文是一篇关于(分布式)数据库的文章,在开始阐述Aries是什么之前,需要先交代几个常识性的概念,这些概念对后文引出Aries显得尤为重要。 数据库体系结构 图1大致描述了一个(分布...

黑客画家
12分钟前
1
0
Rxjava Backpressure 32

原文:https://github.com/Froussios/Intro-To-RxJava/blob/master/Part 4 - Concurrency/4. Backpressure.md Rx将事件从管道的一端引导到另一端,在每一端发生的行动可能非常不同。当生产者...

woshixin
13分钟前
1
0
IDEA-Create Git Repository

1、概述 idea 开发完毕的项目没有及时的关联gitlab,如果整体项目关联gitlab。 2、干 2.1 gitlab 创建项目 2.2 idea 1、IDEA 点击 -> VCS -> import into version control -> create git re......

来来来来来
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部