实例代码如下:procedure TForm1.Button1Click(Sender: TObject);
begin
  self.Canvas.Pen.Color := clRed;
  self.Canvas.Pen.Width := 2;
  self.Canvas.MoveTo(10,10);
  self.Canvas.LineTo(100,100);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
  self.Canvas.Brush.Color := clYellow;
  self.Canvas.FillRect(ClientRect);
  self.Canvas.TextOut(100,100,'wo love you');
  self.Font.Size := 30;
  self.Font.Color := clBlue;
end;为什么Button2要点击两下才能显示效果?

解决方案 »

  1.   


    執行後就 refresh   or   paint  or invalidate  下。  因為還沒來得及重繪
      

  2.   


    procedure TForm1.Button2Click(Sender: TObject);
    begin
      self.Canvas.Brush.Color := clYellow;
      self.Canvas.FillRect(ClientRect);
      Self.Canvas.Font.Size := 30;
      Self.Canvas.Font.Color := clBlue;
      self.Canvas.TextOut(100,100,'wo love you');
    end;
      

  3.   

    刚开始没看出来,亲自试了一下,你是改变Self.Font会导致的,改成下面的代码就可以了procedure TForm1.btn1Click(Sender: TObject);
    begin
      Self.Canvas.Pen.Color := clRed;
      Self.Canvas.Pen.Width := 2;
      Self.Canvas.MoveTo(10,10);
      Self.Canvas.LineTo(100,100);
    end;procedure TForm1.btn2Click(Sender: TObject);
    begin
      Self.Canvas.Brush.Color := clYellow;
      Self.Canvas.Font.Size := 30;
      Self.Canvas.Font.Color := clBlue;
      Self.Canvas.FillRect(ClientRect);
      Self.Canvas.TextOut(100,100,'wo love you');
    end;
      

  4.   

    @Bear_hx :"你是改变Self.Font会导致的"这句话我没太理解,能再说明白点吗?
      

  5.   

    下午没上CSDN了,改变Self.Font会导致重画的。
      

  6.   


    啊...才看到starluck兄问候,失礼。最近事务特忙,每天都在为一些鸡毛蒜皮的小事务耗费着生命