Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Менюшки, хр-стайл.. 
:(
    Опции темы
Exception
Дата 8.10.2005, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 5
Всего: 186



приспичило мне вот прогу написать. и хочется её красивенькой такой сделать. и не взлюбил я менюшки стандартные.
но узрел я свойство OwnerDraw. после рытья в мсдне я понял, как его юзать, да вот не могу понять, как при селекте нарисовать свой бэкграунд (как в вижл студио). а то при ОунерДрове менюха ваще не выделяется, как-то эт самому надо..
если у кого есть код прорисовки своего бэкграунда при выделении меню - киньте плз
PM   Вверх
Spawn™Production®
Дата 9.10.2005, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тестер ПО, VB.NET Developer
**


Профиль
Группа: Участник
Сообщений: 398
Регистрация: 12.4.2005
Где: Зеленоград

Репутация: 1
Всего: 12



Код
Private Const FONT_NAME As String = "Times New Roman"
Private Const FONT_SIZE As Single = 12
Private Const FONT_STYLE As FontStyle = FontStyle.Bold
Private Const MENU_CAPTION As String = "Say Hi"

' Tell Windows how big to make the menu item.
Private Sub mnuFileSayHi_MeasureItem(ByVal sender As _
    System.Object, ByVal e As _
    System.Windows.Forms.MeasureItemEventArgs) Handles _
    mnuFileSayHi.MeasureItem
    ' Create the font we will use to draw the text.
    Dim menu_font As New Font( _
        FONT_NAME, FONT_SIZE, FONT_STYLE)

    ' See how big the text will be.
    Dim text_size As SizeF = _
        e.Graphics.MeasureString(MENU_CAPTION, menu_font)

    ' Set the necessary size.
    e.ItemHeight = text_size.Height
    e.ItemWidth = text_size.Width
End Sub

' Draw the menu item.
Private Sub mnuFileSayHi_DrawItem(ByVal sender As _
    System.Object, ByVal e As _
    System.Windows.Forms.DrawItemEventArgs) Handles _
    mnuFileSayHi.DrawItem
    ' Create the font we will use to draw the text.
    Dim menu_font As New Font( _
        FONT_NAME, FONT_SIZE, FONT_STYLE)

    ' See if the mouse is over the menu item.
    If e.State And DrawItemState.Selected Then
        ' The mouse is over the item.
        ' Draw a shaded background.
        Dim clr As Double
        Dim dclr As Double
        Dim Y As Long

        clr = 255
        dclr = 128 / e.Bounds.Height
        For Y = 0 To e.Bounds.Height - 1
            e.Graphics.DrawLine( _
                New Pen(Color.FromArgb(clr, 0, 0)), _
                e.Bounds.X, Y, e.Bounds.X + e.Bounds.Width, _
                    Y)
            clr -= dclr
        Next Y

        ' Draw the text.
        e.Graphics.DrawString(MENU_CAPTION, menu_font, _
            System.Drawing.Brushes.AliceBlue, _
            e.Bounds.X, e.Bounds.Y)
    Else
        ' The mouse is not over the item.
        ' Erase the background.
        e.Graphics.FillRectangle( _
            System.Drawing.Brushes.LightGray, _
            e.Bounds.X, e.Bounds.Y, _
            e.Bounds.Width, e.Bounds.Height)

        ' Draw the text.
        e.Graphics.DrawString(MENU_CAPTION, menu_font, _
            System.Drawing.Brushes.Black, _
            e.Bounds.X, e.Bounds.Y)
    End If
End Sub



--------------------
ОС: WinXP SP2 Rus
Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727
Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0)
PM WWW   Вверх
Gazon
Дата 11.10.2005, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 9.1.2005

Репутация: нет
Всего: 8



--------------------
Чем больше узнаешь, тем больше не знаешь, но до истины всегда можно добраться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.