我用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;
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;
begin
image1.Width:=ClientWidth;
Preview(TMetaFileCanvas.Create(mf, Printer.Handle));
image1.Canvas.StretchDraw(re, mf);------这句有误!
end;
窗体改变大小之后,re也需要跟着改变的,这样才会放大
呵呵,,那你先用白色画刷填充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);------这句有误!
imgPic.Height := trunc(297*dpm);
imgPic.Picture.Bitmap.Width := imgPic.Width;
imgPic.Picture.Bitmap.Height := imgPic.Height;
imgPic.Canvas.FillRect(Rect(0, 0, PageWidth, PageHeight));
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));