动态创建的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只是设置了刷子的颜色, 你不用这把刷子去刷墙, 墙还是原来的颜色。