как рисовать нестандартные окна?
подскажите, кто знает, технологию создания нестандартных (не просто со скруглёнными углами) окон..
Форма без заголовка (BorderStyle=bsNone) + TImage во всю форму. У формы еще TransparentColor=true и TransparentColorValue=<Какой-нибудь цвет>. Если на TImage нарисовано окно твоей мечты с дырами цвета <Какой-нибудь цвет>, то все в шоколаде.
Форма без заголовка (BorderStyle=bsNone) + TImage во всю форму. У формы еще TransparentColor=true и TransparentColorValue=<Какой-нибудь цвет>. Если на TImage нарисовано окно твоей мечты с дырами цвета <Какой-нибудь цвет>, то все в шоколаде.
... и видимый объект будет наследовать свойства формы?...
... и видимый объект будет наследовать свойства формы?...
Нет, видеть и щелкотить мышью ты будешь по TImage и события все, соответственно, ее.
Нет, видеть и щелкотить мышью ты будешь по TImage и события все, соответственно, ее.
я думал, что можно изменить конфигурацию окна... ну скажем подменив прорисовку по OwnerDraw
я думал, что можно изменить конфигурацию окна... ну скажем подменив прорисовку по OwnerDraw
Используй CombineRgn() из Win32
Используй CombineRgn() из Win32
Поддерживаю, клочевое слово RGN (искать в WinAPI) - регион окна.
Там несколько функций: прямоугольный регион, полигональный, элиптический, и функция комбинирования регионов.
После того как создашь регион желаемой формы - применяешь его к окну(тоже отдельная функция) - готово.
Через прозрачный цвет - нехороший вариант, такая прога будет много кушать процессора на перерисовке, а если площадь большая, то значит будет заметно лагать.
Поддерживаю, клочевое слово RGN (искать в WinAPI) - регион окна.
Там несколько функций: прямоугольный регион, полигональный, элиптический, и функция комбинирования регионов.
После того как создашь регион желаемой формы - применяешь его к окну(тоже отдельная функция) - готово.
Через прозрачный цвет - нехороший вариант, такая прога будет много кушать процессора на перерисовке, а если площадь большая, то значит будет заметно лагать.
Народ! речь шла не о том КАК а скорее о том КОГДА.
Требовалось перерисовать окно TForm чтобы НОВОЕ (перерисованное) окно унаследовало свойства и методы СТАРОГО.
Я вообще думал, что можно как-то подменить (перегрузить) функцию прорисовки окна
Народ! речь шла не о том КАК а скорее о том КОГДА.
Требовалось перерисовать окно TForm чтобы НОВОЕ (перерисованное) окно унаследовало свойства и методы СТАРОГО.
Я вообще думал, что можно как-то подменить (перегрузить) функцию прорисовки окна
Что-то совсем не понятно... Как это "перерисовать...чтобы...окно унаследовало свойства и методы" ?
Опиши поподробней, плз: что есть НОВОЕ окно, что есть СТАРОЕ, и как они связаны?
Опиши поподробней, плз: что есть НОВОЕ окно, что есть СТАРОЕ, и как они связаны?
да нечего писАть... просто канва окна должна иметь другую форму - ну например - кольцо
да нечего писАть... просто канва окна должна иметь другую форму - ну например - кольцо
На то, о чем ты написал отвечено четырьмя постами выше (мой пост).
Если важен вопрос КОГДА:
Форма окна изменяется единожды, как правило при создании окна, до его отображения. Обновлять это потом на оконной перерисовке нет необходимости.
На то, о чем ты написал отвечено четырьмя постами выше (мой пост).
Если важен вопрос КОГДА:
Форма окна изменяется единожды, как правило при создании окна, до его отображения. Обновлять это потом на оконной перерисовке нет необходимости.
когда-то... лет так... 10 назад была программка на васике которая удобно и в векторном виде позволяла создавать формы и вставлять их в проект
когда-то... лет так... 10 назад была программка на васике которая удобно и в векторном виде позволяла создавать формы и вставлять их в проект
Собственно, и при работе с RGN нет ничего сложного. Для начала на бумаге изображаешь фигуру, которую хочешь получить. При этом используешь только два типа линий - эллиптические дуги и прямые, отмечая концы этих линий. Далее с прямыми линиями и так все просто, а выпуклые эллиптические получаются объединением региона окна и эллиптического, а вогнутые - вычитанием эллиптического. В общем объединяем/вычитаем регионы... И применяем это все к окшку в момент его Create'а.
Собственно, и при работе с RGN нет ничего сложного.
вообще-то я это делал... (сказать откровенно) и даже получалось, но НЕУЖЕЛИ ДО СИХ ПОР нет проги автоматизирующей сей СКОРБНЫЙ процесс
вообще-то я это делал... (сказать откровенно) и даже получалось, но НЕУЖЕЛИ ДО СИХ ПОР нет проги автоматизирующей сей СКОРБНЫЙ процесс
Ты сам то понял чего хочешь? В теме пишешь КАК, потом оказывается что КОГДА, обалдеть линейность. А для работы с формами, в том числе и нестандартными, существует целое море компонентов. Ну, к примеру, библиотека Rz...
Ты сам то понял чего хочешь? В теме пишешь КАК, потом оказывается что КОГДА, обалдеть линейность. А для работы с формами, в том числе и нестандартными, существует целое море компонентов. Ну, к примеру, библиотека Rz...
Где взять?
Где взять?
ну хотя бы здесь