本例效果图:
代码文件:
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.