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

Вниз

Копирование Printer.Canvas в Bitmap   Найти похожие ветки 

 
AlexKocharin ©   (2004-10-13 20:59) [0]

Как скопировать изображение из канвы принтера (printer.canvas)
в Bitmap?
Пробовал и BitBlt, и StretchBlt, и canvas.CopyRect,
и canvas.assign - не помогает.


 
Гаврила ©   (2004-10-13 21:33) [1]

Через метафайл попробуй


 
TUser ©   (2004-10-13 21:52) [2]

Почему Canvas.CopyRect не помогает?


 
Sun bittern ©   (2004-10-14 06:03) [3]

BrushCopy()?


 
AlexKocharin ©   (2004-10-14 07:59) [4]

bmp.Width:=printer.PageWidth;
bmp.Height:=printer.PageHeight;
bmp.Canvas.CopyRect(
rect(0,0,printer.PageWidth,printer.PageHeight),printer.Canvas,
rect(0,0,printer.PageWidth,printer.PageHeight));
bmp.SaveToFile("1.bmp");


Выводит файл, содержащий белое полотно 2892x3969 px.
(А на канва принтера у меня не пустая)


 
AlexKocharin ©   (2004-10-14 08:16) [5]

Через BrushCopy вроде то же самое.


 
ЮЮ ©   (2004-10-14 08:26) [6]

А кто обещал, что нарисованное на printer.Canvas где-то хранится?
TBitmap.Canvas - да, т.к.  Drawing on the canvas effectively modifies the underlying bitmap image pixels.


 
AlexKocharin ©   (2004-10-14 08:34) [7]

//Через метафайл попробуй
А как скопировать в метафайл?
И какая будет разница?


 
AlexKocharin ©   (2004-10-14 08:51) [8]

А кто обещал, что нарисованное на printer.Canvas где-то хранится?
При печати сначала формируется изображение, а потом методом EndDoc посылается на печать.
Должно же оно до EndDoc"а где-то храниться.

Каждое следующее изображение, наносимое на канву, затирает то,
что было раньше на этом месте, т.е. изменяет канву, а не просто добавляет новые байты (иначе при наложении изображений было бы много глюков).


 
AlexKocharin ©   (2004-10-14 16:55) [9]

Что, никак нельзя, что ли?


 
Fenik   (2004-10-14 22:06) [10]

Как изображение попало на printer.Canvas?
Может лучше до этого момента его ловить?


 
_iceman_ ©   (2004-10-15 00:29) [11]

To AlexKocharin ©
Я так понимаю, что ты тоже наступил на те же грабли, что и я когда-то. Приведенная ниже процедура почти полностью взята с Unoficial Delphi Printer Pages (кажется так). А дело все, видимо, в принтере, а точнее в драйверах. Например, для HP LJ 2200 с драйверами PS и PCL6 CopyRect для одного будет работать, а для другого нет.

procedure PrintImage(AImage: TImage);
var
 Info: PBitmapInfo;
 InfoSize, ImageSize: DWord;
 Image: Pointer;
begin
 Printer.BeginDoc;
 GetDIBSizes(AImage.Picture.Bitmap.Handle, InfoSize, ImageSize);
 Info:=AllocMem(InfoSize);
 try
   Image:=AllocMem(ImageSize);
   try
     GetDIB(AImage.Picture.Bitmap.Handle, 0, Info^, Image^);
     StretchDIBits(Printer.Canvas.Handle,
                   0, 0, Printer.PageWidth, Printer.PageHeight,
                   0, 0, AImage.Width, AImage.Height,
                   Image, Info^, DIB_RGB_COLORS, SRCCOPY);
   finally
     FreeMem(Image, ImageSize);
   end;
 finally
   FreeMem(Info, InfoSize);
 end;
 Printer.EndDoc;
end;</code



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

Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.033 c
1-1098084343
NewDelpher
2004-10-18 11:25
2004.10.31
Точки останова


4-1095945717
shelest
2004-09-23 17:21
2004.10.31
работа с TService


8-1091407249
widoms
2004-08-02 04:40
2004.10.31
Компоненты для работы с изображениями.


14-1097235368
Brenagwynn
2004-10-08 15:36
2004.10.31
A call to an OS function failed


14-1097261055
123
2004-10-08 22:44
2004.10.31
Администраторам!





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