Controlを継承し、破線の枠線を描くはずのBorderControlというクラスを作成しました。ここでHatchBrushは、左上のダッシュだけを描画します。
はのOnPaint簡略法です::私は先に進む前に、これは結果である
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
Dim Height As Integer = ClientSize.Height
Dim Width As Integer = ClientSize.Width
With e.Graphics
Using HB As New HatchBrush(HatchStyle.DashedVertical, Color.Green, Color.Red)
Using P As New Pen(HB)
.DrawLine(P, Point.Empty, New Point(0, Height - 1))
.DrawLine(P, Point.Empty, New Point(Width - 1, 0))
.DrawLine(P, New Point(Width - 1, 0), New Point(Width - 1, Height - 1))
.DrawLine(P, New Point(0, Height - 1), New Point(Width - 1, Height - 1))
End Using
End Using
End With
End Sub
これと実際の方法の唯一の違いは、ブール値かどうかを決定するということです破線の枠線または実線の枠線を描画します。
アイデア?
EDIT あなたは明白なことを指摘する前に、実際の方法はまた、トップとボトムラインのHatchStyle.DashedHorizontalを使用していますので、それは問題ではありません。
私は 'HatchStyle.DarkDownwardDiagonel'か、おそらく' LargeCheckerBoard'を使ってみます。パターンからのアーチファクトが正しく整列しない可能性を完全に排除するはずです。それらのブラシが固定されている方法で、私はあなたが使用しているハッチのパターンの間隔のギャップでピックアップしていると思います。私はあなたがゆっくり長方形の幅と高さを調整すると、正確に描画するサイズを見つけることができるだろうと賭けています。 –
@BradleyUffner LargeCheckerBoard/SmallCheckerBoardがやった。これを回答として投稿すると、私はそれを受け入れます。ありがとう! – Audiopolis