太怪异了,谁帮我看看???(关于canvas)(50分)

  • 主题发起人 主题发起人 cook
  • 开始时间 开始时间
C

cook

Unregistered / Unconfirmed
GUEST, unregistred user!
代码如下
procedure TForm1.Button1Click(Sender: TObject);
var Rect :TRect;
bti :TBitmap;
begin
bti := TBitmap.Create;
bti.LoadFromFile(t3.bmp');
Rect.Left := 0;
Rect.Top := 0;
Rect.Right := SpeedButton1.Width;
Rect.Bottom := SpeedButton1.Height;
Bti.Width := SpeedButton1.Width-2;
Bti.Height := SpeedButton1.Height-2;
Bti.Canvas.StretchDraw(Rect,SpeedButton1.Glyph);
SpeedButton1.Glyph := Bti;
Bti.Free;
end;
我想用上面的代码把t3.bmp拉伸后画到speedbutton1上
结果和很有意思
在win2000+delphi5下
按一下按钮,图象没有被拉伸,而是原样画到speedbutton上
按第二下,该图象拉伸了两个象素,以后每按一下增加两个象素。
如果把 Bti.Height := SpeedButton1.Height-2;
改为 Bti.Height := SpeedButton1.Height-10;
则每次长10个象素
在win98+delphi6下,图象不会拉伸,也不会长大。
在c++ builder4下一次就拉伸到整个按钮上了
 
改成如下代码:
procedure TForm1.Button1Click(Sender: TObject);
var Rect :TRect;
bti, bti2 :TBitmap;
begin
bti := TBitmap.Create;
bti.LoadFromFile('c:/temp/u10.bmp');
Rect.Left := 0;
Rect.Top := 0;
Rect.Right := SpeedButton1.Width;
Rect.Bottom := SpeedButton1.Height;
bti2 := TBitmap.Create;
bti2.Width := SpeedButton1.Width -2;
bti2.Height := SpeedButton1.Height - 2;
bti2.Canvas.StretchDraw(Rect, bti);
SpeedButton1.Glyph.Assign(bti2);
bti2.Free;
Bti.Free;
end;

在D5+XP下通过
 
接受答案了.
 
能告诉我为什么会这样么??
我的email
cook@sina.com
 
后退
顶部