Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Форма кнопок


Автор: PashaSem 13.5.2006, 23:35
Всем Привет!
Подскажите как сделать обычную кнопку круглой или триугольной.

Спасибо! 

Автор: Ch0bits 14.5.2006, 09:09
Нарисовать кнопку самому. 

Автор: mr.DUDA 14.5.2006, 09:56
Назначить кнопке background-картинку с прозрачностью, вот и всё. Если ещё хочется чтобы и нажималась кнопка только внутри круга/треугольника - нужно наследоваться от Button и перекрывать WndProc. 

Автор: PashaSem 14.5.2006, 23:48
Я  обыную фигуру нарисовать смогу.
Но как сделать чтою она имела все те же свойства что и обычная кнопка?
button1 system.Windows.Forms.Button
Там картинку подставить или цвет поменять.

Если кто знает подскажите или ссылку кинте где прочитать можно.  

Автор: VisualProgrammerNET 15.5.2006, 00:24
PashaSem, 
Цитата(mr.DUDA @  14.5.2006,  09:56 Найти цитируемый пост)
Если ещё хочется чтобы и нажималась кнопка только внутри круга/треугольника - нужно наследоваться от Button и перекрывать WndProc.


Насколько помню я, вернее, как написано было в книжке от MS Press (хоть убей, не могу вспомнить точно, чё было написано), но кажется надо было просто наследоваться от формы и перегружать методы отрисовки...  smile  

Автор: mr.DUDA 15.5.2006, 10:29
Цитата(VisualProgrammerNET @  14.5.2006,  23:24 Найти цитируемый пост)
Насколько помню я, вернее, как написано было в книжке от MS Press (хоть убей, не могу вспомнить точно, чё было написано), но кажется надо было просто наследоваться от формы и перегружать методы отрисовки...  

Можно и так. Но тогда такую кнопку можно использовать только на той форме, где объявлен обработчик Paint.


PashaSem, вот тут неплохая кнопка:
http://www.codeproject.com/cs/miscctrl/XCtrls.asp  

Автор: PashaSem 15.5.2006, 16:53
microsoft предлагает такое решение с помощью регионов 
http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.region.aspx#

The following code example demonstrates how to use the Region property by creating a round button. To run the example, paste the following code in a form containing a button called roundButton. This example requires that the Paint event is connected to the event handler defined in the example.

Я только учусь и вопрос может показаться глупым

Если я хочу чтобы на форме Form1 при загрузке была круглая кнопка вствляю код по ссылке.

Вопрос поскольу   event handler у меня Form1  как мне присоеденить к ней Paint event ?

Спасибо 

Автор: mr.DUDA 15.5.2006, 18:52
В свойствах формы на закладке Events выбрать из комбобокса около Paint метод, на который нужно повесить событие. 

Автор: lioness 20.11.2006, 19:18
Я посмотрела примеры, но что-то они сложные очень.
А у Charles-а  Petzold-а что-то совсем просто: нарисовал эллипсоидную кнопку и больше ничего не объяснял. Где бы мне еще посмотреть... Нужно всего-то их мне штук шесть на одной форме одинаковых, одна за другой, но красивых, трехмерных, нажимающихся ... Только состояние у них будет меняться: нейтральное, нажатое, отжатое, отработанное.  smile 

Автор: mr.DUDA 21.11.2006, 11:50
lioness, на кодпрожекте их полным-полно, искать по слову aqua button

Автор: lioness 23.11.2006, 12:04
Действительно,  аква батончики есть просто симпомпончики  smile 

Интересно, на исходном примере все шесть разноцветных сразу видны на форме, как только их приплюсовываешь к Controls.
А когда я сделала одну на своей форме, то она работает, меняет цвет и подмаргивает, всё как надо, но после this.Controls.Add(aquabutton1)   я у себя в дизайнере их не вижу.  Вручную редактирую properties и events и можно, конечно, наплевать и так оставить.
Но интересно, отчего бы так?  
На исходном примере все строки комментариями отключила. Кроме new для первой аква кнопки. И после add  она тут же появляется на форме в дизайнере.  А у меня вроде бы тоже так же, но НЕ появляется.  smile 

Интересно, что когда экспериментировала на простом примере - то кнопки в дизайнере не появлялись. А когда стала заменять  свою обычную кнопку на новую AquaButton, то распрекрасно вижу новую красивую кнопку и её properties в дизайнере, могу кнопку таскать по полю, изменять размер и т.д. и т.п. Если уберу "this.Controls.Add(...)", то кнопка, естественно, исчезает. 
Почему эта строка не срабатывала на простом примере - так и осталось невыясненным.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)