Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Вниз

Печать 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;
Скачать: [xml.tar.bz2];

Наверх




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


14-58828
Igorek
2003-08-30 15:34
2003.09.18
Ну и про меня замолвите словечко


3-58522
asd
2003-08-27 18:55
2003.09.18
Вставка записей в таблицу InterBase


7-58922
maxon
2003-07-08 16:57
2003.09.18
запуск от другого имени


1-58779
Юлия
2003-09-05 13:47
2003.09.18
Работа с excel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский