首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-02-29 
动态创建的PaintBox无法填充吗?如题,动态创建了一个PaintBox,但设置Canvas.Brush.Color却没有用,总是以背

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

热点排行