读书人

动态创建的PaintBox无法填充吗?解决办

发布时间: 2012-02-29 16:44:11 作者: rapoo

动态创建的PaintBox无法填充吗?
如题,动态创建了一个PaintBox,但设置Canvas.Brush.Color却没有用,总是以背景色填充……请大家帮忙
代码如下:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
pb: TPaintBox;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

pb := TPaintBox.Create(Self);
pb.Parent := Self;
pb.Canvas.Pen.Color := clBlue;
pb.Canvas.Brush.Color := clRed; // <------Brush颜色设置无效!

end;

procedure TForm1.Button1Click(Sender: TObject);
begin

pb.Canvas.Rectangle(0,0,50,50);
end;

end.

[解决办法]

Delphi(Pascal) code
procedure TForm1.FormCreate(Sender: TObject);begin  pb := TPaintBox.Create(Self);  pb.Parent := Self;end;procedure TForm1.Button1Click(Sender: TObject);begin  pb.Canvas.Pen.Color := clBlue;  pb.Canvas.Brush.Color := clRed;  pb.Canvas.Rectangle(0,0,50,50);end;
[解决办法]
图形控件的Canvas是调用时动态建立的,你在TForm.OnCreate对PaintBox.Canvas的设置,在Button1.OnClick事件中“过期无效了”
[解决办法]
设置Canvas.Brush.Color只是设置了刷子的颜色, 你不用这把刷子去刷墙, 墙还是原来的颜色。

读书人网 >.NET

热点推荐