Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];

Вниз

Рисование   Найти похожие ветки 

 
Washington ©   (2007-12-13 12:58) [0]

Как можно рисовать на кнопках и панелях?


 
{RASkov} ©   (2007-12-13 13:04) [1]

> [0] Washington ©   (13.12.07 12:58)

Вообщето не сложно, но зачем?????
Больше рисовать негде?


 
{RASkov} ©   (2007-12-13 13:05) [2]

> [0] Washington ©   (13.12.07 12:58)

TCanvasControl + F1


 
Washington ©   (2007-12-13 13:16) [3]

Ну насчёт канваса я знаю, создал, нарисовал, результат - фигня какая-то.

DC:=GetDC(OK_Button.Handle);
BtnCan := TCanvas.Create;
BtnCan.Handle := DC;
with BtnCan do
...
end;

Когда запускаю прогу, кнопка выглядит как обычно. Если к примеру нажать какую-нить другую кнопку, то данная прорисовывается так как надо.


 
Washington ©   (2007-12-13 13:18) [4]

Можно ли вручную прорисовать Glyph?


 
{RASkov} ©   (2007-12-13 13:23) [5]

> [3] Washington ©   (13.12.07 13:16)
> Если к примеру нажать какую-нить другую кнопку, то данная
> прорисовывается так как надо

А как ты думаешь вообще в Виндовс происходит прорисовка? И для чего в ней есть такие сообщения, как, например, - WM_PAINT?
Отсюда вывод, перерисовывать своё художество необходимо в специально определенный для этого момент....


 
{RASkov} ©   (2007-12-13 13:27) [6]

> Washington ©

А вот теперь задумайся и реши, что же тебе все-таки необходимо в первую очередь: (Кнопочка и ее ОнКлик) или (Кнопочка и Рисунок на ней)....
Так вот это все можно реализовать на TPaintBox... OnClick легче сюда прикрутить, чем рисование на TButton....
ЗЫ Есть еще и TBitBtn....?


 
{RASkov} ©   (2007-12-13 13:36) [7]

> [4] Washington ©   (13.12.07 13:18)
> Можно ли вручную прорисовать Glyph?

Ты как раз и привел пример ручного рисования на кнопке в [3]
:)
А вот для автоматической прорисовки все это дело(код не полный, но думаю у тебя есть и освобождение ресурсов...)
нужно "повесить" на сообщение WM_PAINT для контрола, который необходимо перерисовать....


 
Washington ©   (2007-12-13 14:08) [8]

То есть проще поместить Image, а при клике на нём показать Image нажатой кнопки?


 
{RASkov} ©   (2007-12-13 14:19) [9]

> [8] Washington ©   (13.12.07 14:08)
> То есть проще поместить Image, а при клике на нём показать
> Image нажатой кнопки?

Можно Имаге.... можно, еще раз, TPaintBox - который "сам ловит"(впрочем как и Имагес) сообщения для перерисовки(См OnPaint) и в отличии от TImage - не хранит рисунок в памяти, (т.е. "экономный") а перерисовывает его при необходимости....
"Рисунок" кнопки делается одним вызовом функции DrawControl(или как-то так, сейчас сразу и не вспомню) или DrawEdge(тоже примерно так, я про названия:) Делфи нет под рукой), там с разными параметрами можно рисовать либо нажатое либо отжатое состояние...

ЗЫ Есть свои плюсы и у TImage и TPaintBox, так же как и минусы....


 
{RASkov} ©   (2007-12-13 14:34) [10]

> "Рисунок" кнопки делается одним вызовом функции DrawControl

http://www.firststeps.ru/mfc/steps/help/r.php?763


 
Washington ©   (2007-12-14 10:55) [11]

Спасибо большое за помощь



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
2-1197845685
bpeguk
2007-12-17 01:54
2008.01.13
Элипс


2-1197553561
Крот
2007-12-13 16:46
2008.01.13
Проблем при подключении модуля


15-1196942904
Андрей
2007-12-06 15:08
2008.01.13
Проблема с Del???.MB


2-1197907063
morg
2007-12-17 18:57
2008.01.13
рисование в listbox


2-1197380457
Neo
2007-12-11 16:40
2008.01.13
проблема с paradox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский