Главная страница
    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.44 MB
Время: 0.007 c
7-58927
MakNik
2003-07-07 11:02
2003.09.18
sheduler


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


1-58686
Den 2002
2003-09-04 16:16
2003.09.18
MDI Child question


1-58683
Dimich1978
2003-09-04 15:47
2003.09.18
Как БЫСТРО найти слово в текстовом файле


6-58809
ALaKO
2003-07-17 11:43
2003.09.18
опять Tembeddewb





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский