怎么对Timage.Canvas画布大小设置
如何对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);------这句有误!
------解决方案--------------------
我用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));