Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.18;
Скачать: CL | DM;

Вниз

Печать bitmap на canvas принтера.   Найти похожие ветки 

 
Дмитрий В. Белькевич ©   (2003-09-04 16:35) [0]

Переношу несколько bitmap нижеследующим способом. Иногда переносятся, иногда - нет (часть битмапов вообще не печатается). Входные параметры нормальные. Если ставить sleep(200) перед процедурой, то иногда легчает в зависимости от машины. Как я понимаю, где-то запускается асинхронный процесс, завершение которого нужно ждать. StretchDIBits всегда возвращает код успешнго завершения. Ну и как всегда, два вечных вопроса: кто виноват и что делать?

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^);
if StretchDIBits(Canvas.Handle,
DestRect.Left, DestRect.Top, // Destination Origin
DestRect.Right - DestRect.Left, // Destination Width
DestRect.Bottom - DestRect.Top, // Destination Height
0, 0, // Source Origin
Bitmap.Width, Bitmap.Height, // Source Width & Height
BitmapImage,
TBitmapInfo(BitmapHeader^),
DIB_RGB_COLORS,
SRCCOPY) = -1 then
ShowMessage(IntToStr(GetLastError));
finally
FreeMem(BitmapHeader);
FreeMem(BitmapImage);
end
end;


 
KSergey ©   (2003-09-05 07:47) [1]

Смотреть было лень
Код вот отсюда работает точно.
http://doc.trecom.tomsk.su/Delphi/UnofficialDevelopersFAQ/pages/printe r.htm
Где-то в конце списка пример есть печати картинок.



Страницы: 1 вся ветка

Текущий архив: 2003.09.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
8-58783
Stas Kmet
2003-05-20 19:30
2003.09.18
MP3 Radio


4-58970
mm0
2003-07-15 17:05
2003.09.18
Как убить процесс в зная только его название?


7-58957
Dmitriy_R
2003-07-07 08:58
2003.09.18
Win 2000 server и модем (dial-up)


14-58895
BALU1111
2003-08-29 14:01
2003.09.18
Философский вопрос.


3-58583
Vitalygavrilov
2003-08-26 08:22
2003.09.18
Скажите пожалуйста как сделать правильно просмотр.