打印位图.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 + -
显示快捷键?