Помощь - Поиск - Пользователи - Календарь
Полная версия: Как рисовать на форме?((-:
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
BlackNightFear
Хочу взяться за игрушку... но хочется чего-то быстрого и скорее всего трехмерного. Выводит через канву на TImage компонент по-моему не выход... тормозить скорее всего будет... так как же тогда??
BlackNightFear
Че никто не знает? rolleyes.gif :D
а можно ли OpenGL на форму встроить? было бы очень кстати....
volvo
BlackNightFear
Дело не в том, что никто не знает... Сложно это объяснить... Скачай отсюда ФАК по Дельфи. Там было про использование OpenGL
BlackNightFear
там чето ОЧЕНЬ мало что с ОГЛ.... кстати, ну мне и не надо всю ОГЛ объяснять lol.gif мне только как через ОГЛ обратится к Image, а далее я уж сам!
Бродяжник
Если речь идет о Дельфи, то в книжке Краснова по ОГЛ+Дельфи написано, что выводить на комопонент типа TImage нежелательно, потому что этот компонент не имеет собственного окна (в отличие от TForm, TPanel или даже TButton). И мне это и правда не удалось. А вот рабочий пример по выводу на TPanel могу кинуть (из все той же книжки Краснова).
BlackNightFear
Бродяжник
если не затруднит кинь сюда: blacknightfear@mail.ru
BlackNightFear
кстати, не подскажешь, где закачать такую книжку?
BlackNightFear
Бродяжник
кстати, а вот ты тут говоришь про рисование на Панельке... ты имеешь ввиду с помощью канвы? ведь у панельки нет, на сколько мне известно, канвы....
Кто кого не допонял?((-:
GoodWind
Цитата
ведь у панельки нет, на сколько мне известно, канвы....

млин...... дельфи не стоЯт... а то бы точно сказал... по моему есть
^^^^^^^^^^^^^^^^^^
ой, лол получился lol.gif lol.gif
volvo
BlackNightFear
GoodWind
Читаем DRKB:
Цитата
Как рисовать на компоненте, если свойство Canvas недоступно?

У всех компонентов, порожденных от TCustomControl, имеется свойство Canvas типа TCanvas. Если свойство Canvas недоступно, Вы можете достучаться до него созданием потомка и переносом этого свойства в раздел Public.

Код

Type
 TcPanel = Class(TPanel)
 Public
   Property Canvas;
 End;
GoodWind
ну вот, пришел volvo и все разьяснил lol.gif
Бродяжник
Это не я имел в виду, а г-н Краснов.
Цитата
Вывод на компоненты Delphi средствами OpenGL
Теоретически с помощью функций OpenGL можно осуществлять вывод не только на поверхность формы, но и на поверхность любого компонента, если у него имеется свойство Canvas. Handle, для чего при получении ссылки на контекст воспроизведения необходимо указывать ссылку на контекст устройства, ассоциированную с нужным компонентом, например, image1. Canvas. Handle. Однако чаще всего это приводит к неустойчивой работе, вывод то есть, то нет, хотя контекст воспроизведения присутствует и не теряется. OpenGL прекрасно уживается с визуальными компонентами, так что чаще всего нет необходимости осуществлять вывод на поле не формы, а компонента Delphi. Вывод можно осуществить и на поверхность панели - компонента, вообще не имеющего свойства canvas. Для этого мы пользуемся тем, что панель имеет отдельное окно:

dc: = GetDC (Panell. Handle);
SetDCPixelFormat(dc);
hrc: = wglCreateContext(dc);

Аналогичным образом можно организовать вывод на поверхность любого компонента, имеющего свойство Handle (т. e. имеющего самостоятельное окно), например, на поверхность обычной кнопки.
Для вывода на компонент класса TImage можете записать.
dc: = Imagel. Canvas. Handle;
и удалить строки BeginPaint и EndPaint, поскольку класс TImage не имеет
свойства Handle, т. e. не создает отдельного окна. Однако вывод на компоненты, подобные компонентам класса Timage, т. e. не имеющие свойства Handle, отличается полной неустойчивостью

И вот мне самому удалось рисовать на панельке, а на Image - нет.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.