Главная страница
    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.035 c
4-1096035265
Ale}{(is)
2004-09-24 18:14
2004.10.31
Как получить хэндл главной формы ЧУЖОГО приложения


14-1096481984
Sergey_Masloff
2004-09-29 22:19
2004.10.31
Почти как в анекдоте


14-1097657094
klerk
2004-10-13 12:44
2004.10.31
Ссылка в Excel


1-1098080595
Uran
2004-10-18 10:23
2004.10.31
delphi5 в delphi7


9-1088195482
rs.falcon
2004-06-26 00:31
2004.10.31
Еще один 2D проект - римейк Doom2D





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