Почему круг, который я нарисовал, больше, чем ожидалось?
Я нарисовал эллипс / круг с графикой. Это правильный размер, когда я в редакторе WYSIWYG. Однако, когда я запускаю программу, круг становится больше.
круг правильного размера в редакторе
"Слишком большой размер круга" также имеет более низкое разрешение и неровные края.
Как мне сделать его такого же размера?
Protected Overrides Sub OnPaint(
ByVal pEvent _
As PaintEventArgs)
Me.Size = New Size(heightWidth, heightWidth)
'MyBase.OnPaint(pEvent)
Dim CenterCircle _
As New Rectangle(0, 0, heightWidth, heightWidth)
Dim colorBigCircle As Color = Color.FromArgb(218, 227, 243)
Dim colorSmallCircle As Color = Color.FromArgb(67, 99, 155)
pEvent.Graphics.FillEllipse(
New SolidBrush(
colorBigCircle
),
CenterCircle)
pEvent.Graphics.DrawEllipse(
New Pen(
colorSmallCircle, 3
),
CenterCircle)
2 ответа
"Слишком большой размер круга" также имеет более низкое разрешение и неровные края.
pEvent.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
Установка размера формы в событии рисования является большой нет-нет. Либо задайте размеры формы в конструкторе с границей формы, которая не имеет значительного размера, либо установите для MinimumSize и MaximumSize формы одинаковое измерение.
Вы должны избавиться от ваших объектов рисования. Установка SmoothingMode исправит неровные края круга. Ваш код рисования должен выглядеть примерно так:
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias
Dim centerCircle As New Rectangle(0, 0, Me.ClientSize.Width, Me.ClientSize.Height)
Dim colorBigCircle As Color = Color.FromArgb(218, 227, 243)
Dim colorSmallCircle As Color = Color.FromArgb(67, 99, 155)
Using br As New SolidBrush(colorBigCircle)
e.Graphics.FillEllipse(br, centerCircle)
End Using
Using p As New Pen(colorSmallCircle, 3) With {.Alignment = PenAlignment.Inset}
e.Graphics.DrawEllipse(p, centerCircle)
End Using
End Sub