zoukankan      html  css  js  c++  java
  • GdiPlus[2]: 获取绘图表面(Graphics)


    绘图表面(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.
    
  • 相关阅读:
    (转)Java 详解 JVM 工作原理和流程
    sql复杂查询语句总结
    公众平台服务号、订阅号、企业号的相关说明
    新公司注册流程
    认缴出资额和实缴出资额的区别
    ***iOS学习之Table View的简单使用和DEMO示例(共Plain普通+Grouped分组两种)
    APP后端处理视频的方案
    iOS应用程序生命周期(前后台切换,应用的各种状态)详解
    app后端搜索入门
    APP后端处理表情的一些技巧
  • 原文地址:https://www.cnblogs.com/del/p/1621847.html
Copyright © 2011-2022 走看看