zoukankan      html  css  js  c++  java
  • delphi GDI+ [1]

    摘抄自:万一的博客 

    安装头文件: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(255,0,0), 2);
    
    
     g.Clear(MakeColor(255,255,255)); g.DrawLine(p, 20, 40, 200, 40); {参数是整数} g.DrawLine(p, MakePoint(20,60), MakePoint(200,60)); {参数是点(整数)} 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[0..31] of TGPRect;
    //矩形的属性
      Rect.X := 0;
      Rect.Y := 0;
      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是开始角度(0 表示在圆心的正右边开始画),a2是要画的弧度. 
    //a1 + a2 > 0 是顺时针角度,< 0 是逆时针角度
    
    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);
  • 相关阅读:
    UVA
    codeforces #371div2 B
    POJ-3278 Catch That Cow
    巴士博弈
    权势二进制
    HDU
    SQL 函数
    SQL 查询语句×45
    SQL 触发器
    SQL 连接查询
  • 原文地址:https://www.cnblogs.com/laymond/p/3401478.html
Copyright © 2011-2022 走看看