Всем привет!
Возникла проблема при печати скриншота на принтере. Вот исходник:
Код:
program Project1;
uses
Windows, Graphics, Forms, Printers, Types;
{$R *.res}
var
PRect: Trect;
PBitMap: TBitmap;
DC: HDC;
Canva:Tcanvas;
Buffer: array[0..1023] of Char;
tmp: String;
begin
try
Canva := TCanvas.Create;
PBitmap := TBitMap.Create;
DC := GetDC(0);
Canva.Handle := DC;
with Screen do
begin
PBitmap.Width := Width;
PBitmap.Height := Height;
PBitmap.Canvas.CopyRect(Rect(0,0, Width, Height), Canva, Rect(0, 0, Width, Height));
SetString(tmp, Buffer, GetTempPath(Sizeof(Buffer) - 1, Buffer));
PBitmap.SaveToFile(tmp+'tmp294u2.bmp');
end;
Pbitmap.LoadFromFile(tmp+'tmp294u2.bmp');
with PRect do
begin
left := 0;
top := 0;
right := Printer.PageWidth;
Bottom := Printer.PageHeight;
end;
printer.BeginDoc;
printer.Canvas.StretchDraw(Prect, Pbitmap);
printer.EndDoc;
finally
ReleaseDC(0, DC);
PBitmap.Free;
Canva.Free;
end;
end.
Проблема в том, что после получения экрана в PBitmap, я не хочу его сохранять в файл, а хочу сразу выводить на принтер. Но если его не сохранять, то печатается чистый лист. Если сохранить, а потом тут же загрузить, всё печатается нормально. Я думаю, что во время загрузки файла, в PBitmap, подставляются какие то параметры, которые необходимы для печати. Только не могу понять какие. Ктонибудь сталкивался с этой проблемой?