컨트롤 클래스를 상속하여 일부 모양을 넣는 데 사용되는 사용자 지정 사용자 정의 컨트롤을 만들었습니다. 컨트롤 counds 안에 삼각형을 그리고 싶습니다. 삼각형 안에 안쪽 테두리를 그렸지만 포인터로 머리를 엉망으로 만들었습니다. , 점수의 올바른 계산을 찾을 수 없습니다 (수학은 내 전문성이 아닙니다) 대신 삼각형 이이 추악한 그림을 얻습니다.
아래는 선을 그리는 코드의 관련 부분입니다. 문제는 네 번째라고 생각합니다. PointF
노트
p
object는 Pen
선을 그리는 데 사용 하는 인스턴스입니다.
BorderWidth
위의 이미지에서 속성 그리드의 속성은 단지를 설정하는 것입니다p.Width
암호
Case Figures.Triangle
Dim trianglePoints As PointF() =
{
New PointF(p.Width / 4.0F, CSng(Me.Height) + (p.Width / 2.0F)),
New PointF(CSng(Me.Width) / 2.0F, p.Width),
New PointF(CSng(Me.Width) - (p.Width / 4.0F), CSng(Me.Height) + (p.Width / 2.0F)),
New PointF(-CSng(Me.Height) + p.Width, CSng(Me.Width / 2) - p.Width)
}
Using gp As New Drawing2D.GraphicsPath(FillMode.Alternate)
gp.AddLines(trianglePoints)
gp.CloseFigure()
With e.Graphics
If Not Me._InnerColor = Color.Transparent Then
Using b As New SolidBrush(Me._InnerColor)
.FillPath(b, gp)
End Using
End If
.DrawLines(p, trianglePoints)
End With
End Using
배열의 마지막 요소는 첫 번째 요소와 동일해야합니다 (그림을 닫으려면).
Dim trianglePoints As PointF() =
{
New PointF(p.Width / 2.0F, CSng(Me.Height) - (p.Width / 2.0F)),
New PointF(CSng(Me.Width) / 2.0F, p.Width / 2F),
New PointF(CSng(Me.Width) - (p.Width / 2.0F), CSng(Me.Height) - (p.Width / 2.0F)),
New PointF(p.Width / 2.0F, CSng(Me.Height) - (p.Width / 2.0F))
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다