打印位图.txt
来自「打印屏幕上显示的位图」· 文本 代码 · 共 57 行
TXT
57 行
#include <printers.hpp>
void PrintAsScreen( TCanvas *CanvasSource,TPrinter *Prntr,
TRect RectSource,TRect RectTarget)
{//所见即所得打印方式
Prntr->BeginDoc();
int OriginalMapMode = GetMapMode(Prntr->Handle);//当前影射模式
SetMapMode(Prntr->Handle,MM_ISOTROPIC);//设置图形影射模式
SIZE ss;
ss.cx = Screen->Width;
ss.cy = Screen->Height;
SetWindowExtEx( Prntr->Handle, ss.cx, ss.cy, &ss);//设置窗口
//获取打印机x方向每英寸象素点数
float xLogPixelsPerInch = GetDeviceCaps(Prntr->Handle,LOGPIXELSX);
//获取y方向每英寸象素点数
float yLogPixelsPerInch = GetDeviceCaps(Prntr->Handle,LOGPIXELSY);
ss.cx = xLogPixelsPerInch;
ss.cy = yLogPixelsPerInch;
SetViewportExtEx(//设置视口
Prntr->Handle,
Screen->Width * xLogPixelsPerInch/Screen->PixelsPerInch,
Screen->Height * yLogPixelsPerInch/Screen->PixelsPerInch,
&ss);
Prntr->Canvas->CopyRect(
RectTarget, //Target Rect
CanvasSource, //Source Canvas
RectSource ); //Source Rect
Prntr->EndDoc();
SetMapMode(Prntr->Handle,OriginalMapMode);//复原影射模式
}
//---------------------------------------------------------------------------
调用 Bitmap
Graphics::TBitmap *bmp = new Graphics::TBitmap();
bmp->LoadFromFile(...);
PrintAsScreen(
bmp->Canvas,
Printer(),
bmp->Canvas->ClipRect,
bmp->Canvas->ClipRect);
delete bmp;
如果是 JPEG
#include <jpeg.hpp>
Graphics::TBitmap *bmp = new Graphics::TBitmap();
TJPEGImage *jpeg = new TJPEGImage();
jpeg->LoadFromFile(...);
bmp->Assign(jpeg);
PrintAsScreen(
bmp->Canvas,
Printer(),
bmp->Canvas->ClipRect,
bmp->Canvas->ClipRect);
delete jpeg;
delete bmp;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?