以下是我打印的一段代码,打印出来是空白的,麻烦大家看一下是什么问题
var
bmp : TBitmap;
ScaleX, ScaleY: Integer;
R: TRect;
begin
bmp := TBitmap.Create;
bmp.Width := Panel2.Width;
bmp.Height := Panel2.Height;
with Printer do
begin
try
BeginDoc;
Panel2.PaintTo(bmp.Canvas, 0, 0);
ScaleX := GetDeviceCaps(hdc(Handle),logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(hdc(Handle),logPixelsY) div PixelsPerInch;
R := Rect(0, 0, bmp.Width * ScaleX, bmp.Height * ScaleY);
Canvas.StretchDraw(R, bmp);
finally
EndDoc;
bmp.Free;
end;
end;
end;
有没更好的打印方法。我的panel上放有image,edit,checkbox。
var
bmp : TBitmap;
ScaleX, ScaleY: Integer;
R: TRect;
begin
bmp := TBitmap.Create;
bmp.Width := Panel2.Width;
bmp.Height := Panel2.Height;
with Printer do
begin
try
BeginDoc;
Panel2.PaintTo(bmp.Canvas, 0, 0);
ScaleX := GetDeviceCaps(hdc(Handle),logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(hdc(Handle),logPixelsY) div PixelsPerInch;
R := Rect(0, 0, bmp.Width * ScaleX, bmp.Height * ScaleY);
Canvas.StretchDraw(R, bmp);
finally
EndDoc;
bmp.Free;
end;
end;
end;
有没更好的打印方法。我的panel上放有image,edit,checkbox。
解决方案 »
- 关于三层socket server的使用!
- 帮忙,.100RMB求老师帮忙写个HTTPS网业自动登陆程序
- inherited 为什么可以调用父类的private函数?
- 如何使用ADO面板中的ADOcommand控件中的SQL语句在数据库中创建一个表
- 如何求某一天的前几天的日期.
- 问一下,城市规划学科 哪个大学的这个专业好啊?
- ????????????/?????一大堆?
- DELPHI平台下能不能引用C语言开发的DLL?如果能请详细指教!最好有原代码!!
- DsgnCPort7串口通讯控件包安装出错怎么解决
- XE10安装了DEV,自带image播放gif报错
- Serversocket 服务,ClientSocket已经连接/ 请教`````````````````
- 'END' expected but 'ELSE' found
这段代码是不吗
bmp : TBitmap;
ScaleX, ScaleY: Integer;
R: TRect;
begin
bmp := TBitmap.Create;
bmp.Width := Panel2.Width;
bmp.Height := Panel2.Height;
with Printer do
begin
try
BeginDoc;
Panel2.PaintTo(bmp.Canvas, 0, 0);
bmp.SaveToFile('c:\aa.bmp');
ScaleX := GetDeviceCaps(Handle,logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle,logPixelsY) div PixelsPerInch;
bmp.LoadFromFile('c:\aa.bmp');
R := Rect(0, 0, bmp.Width*ScaleX, bmp.Height*ScaleY);
Printer.Canvas.StretchDraw(R, bmp);
finally
EndDoc;
bmp.Free;
DeleteFile('c:\aa.bmp');
end;
end;
end;
这样子就能打印出来了。不知有没更好的办法不用保存aa.bmp来实现的
var dc : hdc;
begin
dc := getdc(panel1.handle);
stretchblt(Printer.Canvas.handle,0,0,panel1.width,panel1.height,dc,0,0,panel1.width,panel1.height,
srccopy);
releasedc(panel1.handle,dc);
end;你自己调整一下里面的宽高值