Delphi 与 DirectX 之 DelphiX(81): TDIB.ColoredLine();


本例效果图:

Delphi 与 DirectX 之 DelphiX(81): TDIB.ColoredLine();

代码文件:

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, DIB, StdCtrls, ExtCtrls;



type

  TForm1 = class(TForm)

    DXPaintBox1: TDXPaintBox;

    RadioGroup1: TRadioGroup;

    RadioGroup2: TRadioGroup;

    Button1: TButton;

    LabeledEdit1: TLabeledEdit;

    procedure FormCreate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



uses TypInfo;



procedure TForm1.Button1Click(Sender: TObject);

var

  w,h: Integer;

  pt1,pt2,pt3,pt4: TPoint;

begin

  w := DXPaintBox1.ClientWidth;

  h := DXPaintBox1.ClientHeight;



  pt1 := Point(w div 6, h div 3);

  pt2 := Point(w div 6 * 5, h div 3);



  pt3 := Point(w div 6, h div 3 * 2);

  pt4 := Point(w div 6 * 5, h div 3 * 2);



  DXPaintBox1.DIB.SetSize(w, h, 24);

  DXPaintBox1.DIB.FillDIB8(0);  {快速填充}



  DXPaintBox1.DIB.ColoredLine(pt1, pt2,

                              TColorLineStyle(RadioGroup1.ItemIndex),

                              clRed, clYellow,

                              TColorLinePixelGeometry(RadioGroup2.ItemIndex),

                              StrToIntDef(LabeledEdit1.Text, 1));



  DXPaintBox1.DIB.ColoredLine(pt3, pt4,

                              TColorLineStyle(RadioGroup1.ItemIndex),

                              clWhite, clBlue,

                              TColorLinePixelGeometry(RadioGroup2.ItemIndex),

                              StrToIntDef(LabeledEdit1.Text, 1));



  DXPaintBox1.Repaint;

end;



procedure TForm1.FormCreate(Sender: TObject);

var

  i: Integer;

begin

  DXPaintBox1.Align := alTop;

  LabeledEdit1.EditLabel.Caption := '线宽';

  LabeledEdit1.Text := '10';



  RadioGroup1.Caption := 'TColorLineStyle';

  RadioGroup2.Caption := 'TColorLinePixelGeometry';



  for i := 0 to 2 do begin {巧了, 这两个枚举都包含 3 个元素}

    RadioGroup1.Items.Add(GetEnumName(TypeInfo(TColorLineStyle), i));

    RadioGroup2.Items.Add(GetEnumName(TypeInfo(TColorLinePixelGeometry), i));

  end;



  RadioGroup1.ItemIndex := 1;

  RadioGroup2.ItemIndex := 2;



  RadioGroup1.OnClick := Button1Click;

  RadioGroup2.OnClick := Button1Click;

  LabeledEdit1.OnChange := Button1Click;

  //Button1.Click;

end;



end.


 
   

窗体文件:

object Form1: TForm1

  Left = 0

  Top = 0

  Caption = 'Form1'

  ClientHeight = 214

  ClientWidth = 335

  Color = clBtnFace

  Font.Charset = DEFAULT_CHARSET

  Font.Color = clWindowText

  Font.Height = -11

  Font.Name = 'Tahoma'

  Font.Style = []

  OldCreateOrder = False

  OnCreate = FormCreate

  PixelsPerInch = 96

  TextHeight = 13

  object DXPaintBox1: TDXPaintBox

    Left = 0

    Top = 0

    Width = 121

    Height = 129

    AutoStretch = False

    Center = False

    KeepAspect = False

    Stretch = False

    ViewWidth = 0

    ViewHeight = 0

  end

  object RadioGroup1: TRadioGroup

    Left = 8

    Top = 135

    Width = 97

    Height = 71

    Caption = 'RadioGroup1'

    TabOrder = 0

  end

  object RadioGroup2: TRadioGroup

    Left = 111

    Top = 135

    Width = 138

    Height = 71

    Caption = 'RadioGroup2'

    TabOrder = 1

  end

  object Button1: TButton

    Left = 255

    Top = 181

    Width = 75

    Height = 25

    Caption = 'Button1'

    TabOrder = 2

    OnClick = Button1Click

  end

  object LabeledEdit1: TLabeledEdit

    Left = 263

    Top = 154

    Width = 43

    Height = 21

    EditLabel.Width = 61

    EditLabel.Height = 13

    EditLabel.Caption = 'LabeledEdit1'

    TabOrder = 3

  end

end


 
   

你可能感兴趣的:(Delphi)