Аналог CreateRoundRectRgn

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Аналог CreateRoundRectRgn

Сообщение VB-constructor » 11.05.2007 (Пт) 17:58

Добрый день, уважаемые!

Скажите, есть ли аналог CreateRoundRectRgn в VB.NET, а то АПИ юзать как-то не хочется и если нет, то возможно ли как-то его симитировать

Помогите пожалуйста, заранее спасибо!
Человек рождён для того, чтобы достичь жизни...

Alex[fj]
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 278
Зарегистрирован: 17.02.2007 (Сб) 20:10
Откуда: Питер

Сообщение Alex[fj] » 11.05.2007 (Пт) 20:36

Всегда использовал Api... В справке тоже, вроде, ничего нет.
Изображение
Стараюсь быть вполне хорошим (c) Лев Толстой

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.05.2007 (Сб) 6:17

Через GraphicsPath можно попробовать
Весь мир матрица, а мы в нем потоки байтов!

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 12.05.2007 (Сб) 11:37

Да, стоит объектами, начиная с Graphics поиграться.
Посмотрите, например:
http://www.eggheadcafe.com/articles/gdi ... orners.asp

Вот еще функция может пригодится:

Код: Выделить всё
Private Function GetRoundedRect(ByVal BaseRect As RectangleF, ByVal
Radius As Single) As Region
' If corner radius is less than or equal to zero, return the
original rectangle
If Radius <= 0 Then Return New Region(BaseRect)
' If corner radius is greater than or equal to half the width or
height (whichever is shorter) then
' return a capsule instead of a lozenge.
If Radius >= (Math.Min(BaseRect.Width, BaseRect.Height) / 2.0) Then
Return GetCapsule(BaseRect)

Dim Diameter As Single = Radius + Radius
Dim ArcRect As New RectangleF(BaseRect.Location, New SizeF(Diameter,
Diameter))
Dim RR As New Drawing2D.GraphicsPath()

With RR
' top left arc
.AddArc(ArcRect, 180, 90)

' top right arc
ArcRect.X = BaseRect.Right - Diameter
.AddArc(ArcRect, 270, 90)

' bottom right arc
ArcRect.Y = BaseRect.Bottom - Diameter
.AddArc(ArcRect, 0, 90)

' bottom left arc
ArcRect.X = BaseRect.Left
.AddArc(ArcRect, 90, 90)

.CloseFigure()
End With

Return New Region(RR)
End Function
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 64

    TopList