procedure TForm1.FormCreate(Sender: TObject);
var
  Row, Ht: Word ;begin
 Ht := (ClientHeight + 255) div 276 ;
  for Row := 0 to 255 do
    with Canvas do begin
       Brush.Color := RGB(Row, 100, 100) ;
       FillRect(Rect(0, Row * Ht, ClientWidth, (Row + 1) * Ht)) ;
    end ;
end;end.
以上在初始化的时候 窗体还是白板 也就是说没有填充成功
procedure TForm1.FormCreate(Sender: TObject);
beginform1.paint;end;procedure TForm1.FormPaint(Sender: TObject);
var
  Row, Ht: Word ;begin
 Ht := (ClientHeight + 255) div 276 ;
  for Row := 0 to 255 do
    with Canvas do begin
       Brush.Color := RGB(Row, 100, 100) ;
       FillRect(Rect(0, Row * Ht, ClientWidth, (Row + 1) * Ht)) ;
    end ;
end;
这样便好用了  所以我想问 是不是填充窗体必须在paint事件中进行啊

解决方案 »

  1.   

    是的,绘制过程有OnPaint处完成
      

  2.   

    基类 Control 通过其 Paint 事件提供绘制功能。控件在需要更新其显示时引发 Paint 事件。
    Paint 事件的事件数据类 PaintEventArgs 保存绘制控件所需的数据,即表示绘制区域的图形对象或矩形对象的句柄。
    所以虽说“必须”不一定正确,但这样应该是比较简单的,没必要绕个大弯子。