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

Вниз

вывод содржимого Tcanvc на печать.   Найти похожие ветки 

 
алексей с.   (2007-02-13 08:20) [0]

Здравствуте!
возникла у меня следующая проблема: есть достаточно сложный и грамоздкий алгоритм вывода изображения(линии , круги, ...) на Tcanvs обьекта Timage, мне все это дело теперь надо распечатть. Пошел я таким путем: заминил в коде image1.canvs на printer.canvs , однако это не работает. вопрос подскажите есть ли другие способы печати Tcanvs обьекта Timage. спасибо!


 
TRUNK ©   (2007-02-13 09:27) [1]

А про Printer.BeginDoc, Printer.EndDoc не забыл?


 
алексей с.   (2007-02-13 09:39) [2]

в том то и дело, что нет, относительно этого все было сдела правильно.....


 
evvcom ©   (2007-02-13 09:42) [3]

> [2] алексей с.   (13.02.07 09:39)
> относительно этого все было сдела правильно.....

Судя по твоим "Tcanvs" и "сдела", очень сомневаюсь. Думаю, ты чего-то опять недописал. :)


 
TRUNK ©   (2007-02-13 09:44) [4]

А поподробнее, что именно происходит? Принтер печатает пустой лист или даже не пытается?


 
алексей с.   (2007-02-13 09:51) [5]

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


 
алексей с.   (2007-02-13 09:54) [6]

а вообще есть ли другой спослб печати, не через обьект Tprinter


 
TRUNK ©   (2007-02-13 10:02) [7]


> алексей с.   (13.02.07 09:51) [5]
принтер выводит беспорядочныйи набор символов

А координаты промасштабировать не забыл?


> алексей с.   (13.02.07 09:54) [6]
а вообще есть ли другой спослб печати, не через обьект Tprinter

Есть. Например, использовать CreateDC, BitBlt.


 
алексей с.   (2007-02-13 10:09) [8]

вот кстати координаты я не масштабировал, думал потумолчанию все проставлено, спасибо, домой приду - попробую...


 
RASkov   (2007-02-13 10:16) [9]

> [8] алексей с.   (13.02.07 10:09)

http://delphimaster.net/view/2-1171016071/
Посмотри последний мой пост, может поможет...


 
алексей с.   (2007-02-13 10:26) [10]

спасибо.


 
Алексей С.   (2007-02-13 22:59) [11]

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

procedure DrawImage(Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap);  
var
 Header, Bits: Pointer;
 HeaderSize: DWORD;
 BitsSize: DWORD;
begin
 GetDIBSizes(ABitmap.Handle, HeaderSize, BitsSize);
 Header := AllocMem(HeaderSize);
 Bits := AllocMem(BitsSize);
 try
   GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^);
   StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top,
     DestRect.Right, DestRect.Bottom,
     0, 0, ABitmap.Width, ABitmap.Height, Bits, TBitmapInfo(Header^),
     DIB_RGB_COLORS, SRCCOPY);
 finally
   FreeMem(Header, HeaderSize);
   FreeMem(Bits, BitsSize);
 end;
end;
procedure PrintImage(Image: TImage; ZoomPercent: Integer);
 // if ZoomPercent=100, Image will be printed across the whole page
var
 relHeight, relWidth: integer;
begin
 Screen.Cursor := crHourglass;
 Printer.BeginDoc;
 with Image.Picture.Bitmap do
 begin
   if ((Width / Height) > (Printer.PageWidth / Printer.PageHeight)) then
   begin  
     // Stretch Bitmap to width of PrinterPage
     relWidth := Printer.PageWidth;  
     relHeight := MulDiv(Height, Printer.PageWidth, Width);
   end
   else
   begin
     // Stretch Bitmap to height of PrinterPage
     relWidth  := MulDiv(Width, Printer.PageHeight, Height);
     relHeight := Printer.PageHeight;
   end;
   relWidth := Round(relWidth * ZoomPercent / 100);
   relHeight := Round(relHeight * ZoomPercent / 100);
   DrawImage(Printer.Canvas, Rect(0, 0, relWidth, relHeight), Image.Picture.Bitmap);
 end;
 Printer.EndDoc;
 Screen.cursor := crDefault;
end;



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

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

Наверх





Память: 0.49 MB
Время: 0.05 c
6-1161707045
Max.66RUS
2006-10-24 20:24
2007.04.08
Отправка почты...


15-1174169491
MikePetrichenko
2007-03-18 01:11
2007.04.08
Весеннее обострение?


15-1173816877
ArtemESC
2007-03-13 23:14
2007.04.08
Операционная система нового поколения...


2-1174372869
sapsi
2007-03-20 09:41
2007.04.08
Работа с 2-мя базами


2-1174149356
Malik
2007-03-17 19:35
2007.04.08
Вопрос про канву принтера





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