![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рисование
Washington © (2007-12-13 12:58:00)Как можно рисовать на кнопках и панелях?
Washington (2007-12-14 10:55:00) [1]Спасибо большое за помощь
{RASkov} (2007-12-13 14:34:00) [2]> "Рисунок" кнопки делается одним вызовом функции DrawControl
http://www.firststeps.ru/mfc/steps/help/r.php?763
{RASkov} (2007-12-13 14:19:00) [3]> [8] Washington © (13.12.07 14:08)
> То есть проще поместить Image, а при клике на нём показать
> Image нажатой кнопки?
Можно Имаге.... можно, еще раз, TPaintBox - который "сам ловит"(впрочем как и Имагес) сообщения для перерисовки(См OnPaint) и в отличии от TImage - не хранит рисунок в памяти, (т.е. "экономный") а перерисовывает его при необходимости....
"Рисунок" кнопки делается одним вызовом функции DrawControl(или как-то так, сейчас сразу и не вспомню) или DrawEdge(тоже примерно так, я про названия:) Делфи нет под рукой), там с разными параметрами можно рисовать либо нажатое либо отжатое состояние...
ЗЫ Есть свои плюсы и у TImage и TPaintBox, так же как и минусы....
Washington (2007-12-13 14:08:00) [4]То есть проще поместить Image, а при клике на нём показать Image нажатой кнопки?
{RASkov} (2007-12-13 13:36:00) [5]> [4] Washington © (13.12.07 13:18)
> Можно ли вручную прорисовать Glyph?
Ты как раз и привел пример ручного рисованияна кнопке в [3]
:)
А вот для автоматической прорисовкивсе это дело(код не полный, но думаю у тебя есть и освобождение ресурсов...)
нужно "повесить" на сообщение WM_PAINT для контрола, который необходимо перерисовать....
{RASkov} (2007-12-13 13:27:00) [6]> Washington ©
А вот теперь задумайся и реши, что же тебе все-таки необходимо в первую очередь: (Кнопочка и ее ОнКлик) или (Кнопочка и Рисунок на ней)....
Так вот это все можно реализовать на TPaintBox... OnClick легче сюда прикрутить, чем рисование на TButton....
ЗЫ Есть еще и TBitBtn....?
{RASkov} (2007-12-13 13:23:00) [7]> [3] Washington © (13.12.07 13:16)
> Если к примеру нажать какую-нить другую кнопку, то данная
> прорисовывается так как надо
А как ты думаешь вообще в Виндовс происходит прорисовка? И для чего в ней есть такие сообщения, как, например, - WM_PAINT?
Отсюда вывод, перерисовывать своё художество необходимо в специально определенный для этого момент....
Washington (2007-12-13 13:18:00) [8]Можно ли вручную прорисовать Glyph?
Washington (2007-12-13 13:16:00) [9]Ну насчёт канваса я знаю, создал, нарисовал, результат - фигня какая-то.
DC:=GetDC(OK_Button.Handle);
BtnCan := TCanvas.Create;
BtnCan.Handle := DC;
with BtnCan do
...
end;
Когда запускаю прогу, кнопка выглядит как обычно. Если к примеру нажать какую-нить другую кнопку, то данная прорисовывается так как надо.
{RASkov} (2007-12-13 13:05:00) [10]> [0] Washington © (13.12.07 12:58)
TCanvasControl + F1
{RASkov} (2007-12-13 13:04:00) [11]> [0] Washington © (13.12.07 12:58)
Вообщето не сложно, но зачем?????
Больше рисовать негде?