读书人

怎么对Timage.Canvas画布大小设置

发布时间: 2012-02-13 17:20:26 作者: rapoo

如何对Timage.Canvas画布大小设置?
我用Timage来实现打印预览,在改变窗口大小后,TImage的大小也相应改变,但是TImage的可视大小却没有改变。请问如何让TImage的可视大小也相应改变。


procedure TForm1.FormCreate(Sender: TObject);
begin
mf:=TMetaFile.Create;
dpi:=GetDeviceCaps(Printer.Handle, LogPixelsX);
dpm:=trunc(dpi/25.4);
image1.Top:=0; image1.left:=0; image1.Width:=self.ClientWidth;
re.Left:=0; re.Top:=0; re.Right:=trunc(210*dpm); re.Bottom:=trunc(297*dpm);
end;

procedure TForm1.Preview(vCanvas: TCanvas);
begin
with vCanvas do begin
try
Repaint;
Font.Size:=12;
Font.Name:='黑体';
Textout(0, 0, '中华人民共和国');
finally
free;
end;
end;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
image1.Width:=ClientWidth;
Preview(TMetaFileCanvas.Create(mf, Printer.Handle));
image1.Canvas.StretchDraw(re, mf);
end;

[解决办法]
image1.Picture.Bitmap.Width:= ClientWidth;
[解决办法]
哦,这样啊,,我理解了...
呵呵,,那你先用白色画刷填充Image1,
如下:
image1.Width:=ClientWidth;
//加入白色背景
image1.Canvas.Brush.Color:=clWhite;
image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.FillRect(Rect(0,0,image1.Width,image1.Height));

Preview(TMetaFileCanvas.Create(mf, Printer.Handle));
image1.Canvas.StretchDraw(re, mf);------这句有误!
[解决办法]

Delphi(Pascal) code
  image1.Width := trunc(210*dpm);   image1.Height := trunc(297*dpm);  image1.Picture.Bitmap.Width := image1.Width;  image1.Picture.Bitmap.Height := image1.Height;  image1.Canvas.FillRect(Rect(0, 0, image1.Width, image1.Height)); 

读书人网 >.NET

热点推荐