Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2008, 15:41   #1
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию Вывод рисунка на печать

Добрый день, уважаемые программисты форума!!! Надеюсь поможете решить такую задачу: каким образом можно вывести на печать принтера изображение, находящееся в компоненте GLSceneViewer. Проблема в том, что оно не имеет свойство Canvas!!! Или раз оно его не имеет - это вообще не реально??? Примечание: GLSceneViewer - это компонент библиотеки компонентов GLScene
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 25.02.2008, 15:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Выведи на печать его родителя, например GLSceneViewer лежит на форме - прекрасно распечатай форму начиная от координат GLSceneViewer'а и заканчивая его габаритами.
Уловил идею?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.02.2008, 15:53   #3
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

ГЕНИАЛЬНО!!! Ша попробую

Хм, проблемка: я для вывода использую метод: Printer.Canvas.Draw(x: Integer, y: Integer, Graphics: TGraphics), а у Form.Canvas нет такого свойства, какое например есть у компонета Image - Image.Picture.Graphics. Может другой метод надо использовать???

From Stilet: Не стоит делать несколько своих постов подряд, это плохо смотрится, лучше отредактируй свой предидущий пост, так чтоб было понятно. Это предупреждение!

Последний раз редактировалось Stilet; 25.02.2008 в 16:27.
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 25.02.2008, 16:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

form1.GetFormImage
Только все равно повозиться придется, советую почитать литературу про распечатку, или поискать методы в GLScene
Так же на ДелфиВорлд загляни.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.02.2008, 09:26   #5
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

Я пробовал таким способом:
Printer.BeginDoc;
Image1.Visible := False;
Image1.Picture.Bitmap := Form1.GetFormImage;
Printer.Canvas.Draw(x,y,Image1.Pict ure.Graphic);
Printer.EndDoc;
При таком коде принтер распечатывает все, что находиться на форме(Buttonы, Editы и т.д.), кроме (как вы думаете кого?) - да вы угадали: GLSceneViewerа!!! P.S. черно-белый принтер вообще ничего печатать не хочет! В чем проблема и как ее можно решить???
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 26.02.2008, 10:08   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Пробуй так, только учти, что окно выбора принтера не должно перекрывать окно GLScene.
Код:
procedure TForm1.Button1Click(Sender: TObject);

begin
if PrintDialog1.Execute then begin
p.BeginDoc;
 StretchBlt(p.Canvas.Handle,0,0,p.PageWidth,p.PageHeight,
  GetDC(GLSceneViewer1.Handle),0,0,GLSceneViewer1.Width,
  GLSceneViewer1.Height,SRCCOPY);
p.EndDoc;
end;
end;
Здесь p - TPrinter заранее созданный.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.02.2008, 10:46   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

http://programmersforum.ru/showthread.php?t=14666
B_N вне форума Ответить с цитированием
Старый 26.02.2008, 11:16   #8
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

Сделал все как сказал уважаемый Stilet, все скомпилировалось, но вот при работе exeшника вылетает ошибка: EPrinter 'Printing in progress'!! Что я не так мог сделать, в чем ошибка???
-=<[Evklidd]>=- вне форума Ответить с цитированием
Старый 26.02.2008, 12:18   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

У тебя принтер походу чем то занят.
Кстати пробуй код Бьена, постом выше.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.02.2008, 12:22   #10
-=<[Evklidd]>=-
Форумчанин Подтвердите свой е-майл
 
Аватар для -=<[Evklidd]>=-
 
Регистрация: 22.01.2008
Сообщений: 161
По умолчанию

Странно, смотрел очередь печати перед запуском своей программы - она была пуста!!! Так что принтер был свободен!
-=<[Evklidd]>=- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод на печать sali_s Microsoft Office Excel 2 04.06.2008 12:05
Вывод на печать -=<[Evklidd]>=- Общие вопросы Delphi 6 22.02.2008 19:56
вывод на печать asembler udjal Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 10.11.2007 14:32
Вывод на печать StringGrid таблицу Македонский Общие вопросы Delphi 3 06.11.2007 01:21
Разгупировка рисунка asale Microsoft Office Excel 1 23.10.2007 22:30