R
Robot5
Unregistered / Unconfirmed
GUEST, unregistred user!
我想在相片纸上把一个照片打印两次(排列方式为上下,相片纸是竖方到打印机里的。),要如何做?
还有我写的程序只能打一次,我是用Printer来做的。但不知道是为什么?(555555~~~好贵的相片纸呀,浪费了N张了!)请大家帮忙了!
我的程序如下:=====================================================
procedure PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
var
BitmapHeader: pBitmapInfo;
BitmapImage: POINTER;
HeaderSize: DWORD;
ImageSize: DWORD;
begin
GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);
GetMem(BitmapHeader, HeaderSize);
GetMem(BitmapImage, ImageSize);
try
GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^);
StretchDIBits(Canvas.Handle,
DestRect.Left, DestRect.Top,
DestRect.Right - DestRect.Left,
DestRect.Bottom - DestRect.Top,
0, 0, // 源初始坐标
Bitmap.Width, Bitmap.Height,
BitmapImage,
TBitmapInfo(BitmapHeader^),
DIB_RGB_COLORS,
SRCCOPY)
//位图按照要求进行拉伸
finally
FreeMem(BitmapHeader);
FreeMem(BitmapImage);
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Printer.BeginDoc;
PrintBitmap(Printer.Canvas,Rect(60, 100,2000,1410),Imageen1.Bitmap);
PrintBitmap(Printer.Canvas,Rect(60,1500,2000,1410),Imageen1.Bitmap);
end;
还有我写的程序只能打一次,我是用Printer来做的。但不知道是为什么?(555555~~~好贵的相片纸呀,浪费了N张了!)请大家帮忙了!
我的程序如下:=====================================================
procedure PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
var
BitmapHeader: pBitmapInfo;
BitmapImage: POINTER;
HeaderSize: DWORD;
ImageSize: DWORD;
begin
GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);
GetMem(BitmapHeader, HeaderSize);
GetMem(BitmapImage, ImageSize);
try
GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^);
StretchDIBits(Canvas.Handle,
DestRect.Left, DestRect.Top,
DestRect.Right - DestRect.Left,
DestRect.Bottom - DestRect.Top,
0, 0, // 源初始坐标
Bitmap.Width, Bitmap.Height,
BitmapImage,
TBitmapInfo(BitmapHeader^),
DIB_RGB_COLORS,
SRCCOPY)
//位图按照要求进行拉伸
finally
FreeMem(BitmapHeader);
FreeMem(BitmapImage);
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Printer.BeginDoc;
PrintBitmap(Printer.Canvas,Rect(60, 100,2000,1410),Imageen1.Bitmap);
PrintBitmap(Printer.Canvas,Rect(60,1500,2000,1410),Imageen1.Bitmap);
end;