Сделал небольшой пример переопределения отрисовки контрла (TButton): http://narod.ru/disk/24952094000/LCLSkin_Demo.7z.html. В идеале хотел бы отрисовывать контрол в OpenGL со сглаживанием шрифтов и плавной анимацией, но пока руки не дошли.
Раньше игрался с примером скинирования самой TForm, но бросил, так как получалось глючно и вызывала шок у пользователя нестандартным окном. Только Winamp - овское нестандартное окно по привычке не вызывает шок. Поэтому придерживаюсь мысли, что скины нужны для того, что бы контролы программы были приближены к общим контролам операционной системы, но при этом более плавно воспроизводилась анимация нажатия кнопок и отображения иконок, а так же менее рубленным (более сглаженным) был текст на кнопках. При этом все скины должны отключаться.
Если кто доведёт пример до готового компонента и поделится им, буду благодарен.
Lazarus и скины: пример переопределения отрисовки контрола
Модератор: Модераторы
- FedeX
- постоялец
- Сообщения: 422
- Зарегистрирован: 27.03.2006 09:25:34
- Откуда: украина, житомир
- Контактная информация:
Re: Lazarus и скины: пример переопределения отрисовки контрола
Контрол ещё не смотрел, он есть два вопроса по замыслу, касательно OpenGL.
1. Что планируеться для каждого контрола иметь свой контекст OpenGL (какой срам!
) или отрисовывать все контролы на одном контексте (тогда как это реализовать и как быть с не-OpenGL контролами? )?
2. Как OpenGL поможет сгладить шрифты (и почему вы считаете, что это будет быстрее, чем обычные методы сглаживания)?
1. Что планируеться для каждого контрола иметь свой контекст OpenGL (какой срам!
2. Как OpenGL поможет сгладить шрифты (и почему вы считаете, что это будет быстрее, чем обычные методы сглаживания)?
Re: Lazarus и скины: пример переопределения отрисовки контрола
Пример?
Ну уж извините....
мммдаа
Ну уж извините....
Код: Выделить всё
// Отрисовываем кнопку по умолчанию (иначе будет глючить)
inherited WMPaint(Msg);
// Получаем HDC кнопки
DC := GetDC(Handle);
// Отрисовка изображения из картинки поверх уже отрисованной кнопки
BitBlt(DC, 0, 0, Width, Height, Form1.Image1.Picture.Bitmap.Canvas.Handle,
0, 0, SRCCOPY);мммдаа
- Slavikk
- постоялец
- Сообщения: 208
- Зарегистрирован: 15.01.2007 21:34:52
- Откуда: Из лесов...
- Контактная информация:
Re: Lazarus и скины: пример переопределения отрисовки контрола
>FedeX
по п.1.: для каждого контрола иметь свой контекст OpenGL - это проще всего, но это и бредовее всего. Отрисовывать все контролы на одном контексте правильнее всего, но нужно чего то придумать, что бы отрисовывались и стандартные контролы.
по п.2.: мне просто анимация нужна более плавная и быстрая при рисовании графиков / блок схем в основном для этого и нужен конкретно мне OpenGL.
>Mr.Smart
Соласен пример ламерский, но главное, что стремился показать как переопределить процедуру отрисовки и как что то поверх контрола отрисовать. Т.е. это не из серии готовых кодов, а просто указатель в каком направлении копать.
Вот тут у человека пример компонента с полностью переопределённой TButton и своей процедурой отрисовки для неё (не переопределение отрисовки, а полностью своя): http://lirein.org.ru/cgi.php/index?topic=Bio.MaskImageControls.
по п.1.: для каждого контрола иметь свой контекст OpenGL - это проще всего, но это и бредовее всего. Отрисовывать все контролы на одном контексте правильнее всего, но нужно чего то придумать, что бы отрисовывались и стандартные контролы.
по п.2.: мне просто анимация нужна более плавная и быстрая при рисовании графиков / блок схем в основном для этого и нужен конкретно мне OpenGL.
>Mr.Smart
Соласен пример ламерский, но главное, что стремился показать как переопределить процедуру отрисовки и как что то поверх контрола отрисовать. Т.е. это не из серии готовых кодов, а просто указатель в каком направлении копать.
Вот тут у человека пример компонента с полностью переопределённой TButton и своей процедурой отрисовки для неё (не переопределение отрисовки, а полностью своя): http://lirein.org.ru/cgi.php/index?topic=Bio.MaskImageControls.
