在scrollbox   里面放一个paintbox,然后在paint   事件里面输出文字,但是当scrollbox滚动往下滚动时,字体大小发生变化。为什么? 
垂直滚动条要
ScrollBox1.VertScrollBar.Range := 1000; 
ScrollBox1.hight := 241; 
procedure TForm1.PaintBox1Paint(Sender: TObject); 
var 
  I : Integer; 
begin 
      for i := 0 to 99 do 
  begin 
    PaintBox1.Canvas.Font.Size := 12; 
      PaintBox1.Canvas.TextOut(10,i * 18,'大小'); 
  end; 
end;
有问题,我显示就有问题,是系统问题吗,

解决方案 »

  1.   

    没发现什么问题:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;type
      TForm1 = class(TForm)
        ScrollBox1: TScrollBox;
        PaintBox1: TPaintBox;
        procedure FormCreate(Sender: TObject);
        procedure PaintBox1Paint(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      ScrollBox1.VertScrollBar.Range := 1000;
      ScrollBox1.Height := 241;
    end;procedure TForm1.PaintBox1Paint(Sender: TObject);
    var
      I : Integer;
    begin
      for i := 0 to 99 do
      begin
        PaintBox1.Canvas.Font.Size := 12;
        PaintBox1.Canvas.TextOut(10, i * 18, '´óС');
      end;
    end;end.
      

  2.   

    Delphi6 + xp正常。另外你可以考虑先将文字输出到Bitmap中,然后再把这个Bitmap绘制到PaintBox,字体大小就不会变。
      

  3.   

    应该是汉字的关系,把字体设为宋体就不会变大了.
    PaintBox1.Canvas.Font.Name := '宋体';
      

  4.   

    我也是用d6 + xp 输出仍然不正常,不知道是不是DELPHI 的问题
      

  5.   

    我试了,是汉字的关系,谢谢,结贴。也应该是DELPHI 的问题。好像 滚动条位置为0的时候就正常输出,其他时候不正常