Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 24.05.2011
Сообщений: 63
1

Рамка у круглого label

26.06.2012, 23:19. Показов 4926. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Подскажите как можно сделать рамку для круглого лейбла.

Есть свой класс, унаследованный от label


Круглым я его сделал таким образом:

VB.NET
1
2
3
    Private gPath As New System.Drawing.Drawing2D.GraphicsPath()
       gPath.AddEllipse(0, 0, Me.Width, Me.Height)
        Me.Region = New Region(gPath)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.06.2012, 23:19
Ответы с готовыми решениями:

Рамка вокруг Label в JavaFX
Собственно подскажите пожалуйста как сделать простую черную рамку вокруг Label в JavaFX. Смотрел...

Верстка круглого прогресс-бара
Можно ли заверстать прогресс бар такого вида на HTML+CSS? <div class="progress"> <span...

Вращение круглого объекта в SFML (и C++)
Имеется функция Control() в проекте SFML (приложение 2D), управляемым объектом является шар, и...

Вращение круглого изображения вокруг центра
Собственно вопрос в заголовке

8
251 / 163 / 14
Регистрация: 10.03.2012
Сообщений: 544
26.06.2012, 23:23 2
Поставить свойство BorderStyle у label в FixedSingle?

И вообще: у Вас код на VB.NET, с этим в соответствующий раздел.
0
1 / 1 / 0
Регистрация: 24.05.2011
Сообщений: 63
27.06.2012, 05:40  [ТС] 3
к сожелению данное свойство не делает нормальную рамку для круглого лейбла, оно там квадратное >.<
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
27.06.2012, 11:52 4
WizarD_89, вам надо нарисовать два эллипса - один большой будет иметь цвет рамки, а другой чуть по меньше и будет основным полем для метки - таким образом второй накладывается на первый и получается эффект границы вокруг второго эллипса
0
1 / 1 / 0
Регистрация: 24.05.2011
Сообщений: 63
27.06.2012, 13:07  [ТС] 5
Вы имеете в виду что то типа того?

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
  
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        border()
        MyBase.OnPaint(e)
 
    End Sub
Private Sub border()
        Dim dw As Graphics = Me.CreateGraphics
         Dim p As New Pen(Color.Black, 4)
        dw.DrawEllipse(p, 0, 0, Me.Width, Me.Height)
        dw.DrawEllipse(p, 1, 1, Me.Width, Me.Height)
    End Sub
только вот таким способ на лейбле не каких изменений не происходит.
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
27.06.2012, 13:11 6
Цитата Сообщение от WizarD_89 Посмотреть сообщение
Вы имеете в виду что то типа того?
нет, я имел ввиду нарисовать два эллиса, а не один
0
1 / 1 / 0
Регистрация: 24.05.2011
Сообщений: 63
27.06.2012, 13:25  [ТС] 7
да дело не в этом, даже если FillEllipse использовать то не каких изменений не видно. ничего не прорисовывается. И с двумя элипсами точно так же
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
27.06.2012, 13:34 8
Цитата Сообщение от WizarD_89 Посмотреть сообщение
да дело не в этом, даже если FillEllipse использовать то не каких изменений не видно. ничего не прорисовывается. И с двумя элипсами точно так же
если так делать
VB.NET
1
2
dw.DrawEllipse(p, 0, 0, Me.Width, Me.Height)
        dw.DrawEllipse(p, 1, 1, Me.Width, Me.Height)
то кончено, ничего и не будет. На фига у второго эллипса задавать ширину и высоту области, равную первому. Потом можно было использовать не 1. а как то пошире отступ сделать.
И самое главное, ничего и не будет видно, потому что в данном случае используется один и тот же цвет для обоих эллипсов.
0
1 / 1 / 0
Регистрация: 24.05.2011
Сообщений: 63
27.06.2012, 20:25  [ТС] 9
VB.NET
1
2
3
4
5
        Dim dw As Graphics = Me.CreateGraphics
        Dim p As New Pen(Color.Black, 4)
        Dim p2 As New Pen(Color.Red, 3)
        dw.DrawEllipse(p, 0, 0, Me.Width, Me.Height)
        dw.DrawEllipse(p2, 3, 3, Me.Width - 3, Me.Height - 3)
вот сделал как вы просили).Сейчас что то мигает при создании элемента, но потом исчезает и все равно можно сказать нечего не прорисовывается

Добавлено через 11 минут
Если допустим использовать круглый panel то прорисовывается все на ура.

Добавлено через 1 минуту
бррр, я понял как это сделать.
Нужно было напримую рисовать через событие onPaint, и использовать e.Graphics.

Не понятно почему не работало через Me.CreateGraphics

Спасибо парни за помощь
0
27.06.2012, 20:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2012, 20:25
Помогаю со студенческими работами здесь

Вращение круглого изображения вокруг центра
Вот этим кодом вращаю колесо автомобиля как сделать так чтобы можно было вращать не одно колесо а 4...

Задача растяжения балки круглого сечения
Требуется аналитическое решение задачи - растяжения балки круглого сечения. Из данных: d=10mm, N=10...

Исправить баги в вёрстке круглого progressbar
Всем привет. Пытался написать круглый Progress Bar, и вроде как вышло, но есть одна проблема. Он...

Определите положение центра масс половины круглого диска
Определите положение центра масс половины круглого диска радиусом R, считая его однородным. Ответ:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru