ええと、私は自分のコントロールのためにOnPaintイベントをコーディングしています。ピクセル精度にするために私は非常に必要です。
長方形の境界線に少し問題があります。
画像を参照してください:
削除されたImageShackリンクを削除
これらの2つの長方形は、同じ場所とサイズのパラメーターで描画されましたが、ペンのサイズが異なります。何が起こったの?境界線が大きくなると、長方形の前(左側)の空きスペースがなくなります。
四角形の内側に境界線を描くようなプロパティがあるので、四角形までの距離は常に同じになるのでしょうか。ありがとう。
PenAlignment を指定してこれを行うことができます
Pen pen = new Pen(Color.Black, 2);
pen.Alignment = PenAlignment.Inset; //<-- this
g.DrawRectangle(pen, rect);
四角形の外側の境界をすべての方向に拘束する場合は、ペンの幅に関連して再計算する必要があります。
private void DrawRectangle(Graphics g, Rectangle rect, float penWidth)
{
using (Pen pen = new Pen(SystemColors.ControlDark, penWidth))
{
float shrinkAmount = pen.Width / 2;
g.DrawRectangle(
pen,
rect.X + shrinkAmount, // move half a pen-width to the right
rect.Y + shrinkAmount, // move half a pen-width to the down
rect.Width - penWidth, // shrink width with one pen-width
rect.Height - penWidth); // shrink height with one pen-width
}
}
これは質問への直接の回答ではありませんが、 ControlPaint.DrawBorder
メソッド。境界線のスタイル、色、その他のさまざまなプロパティを指定できます。私も信じていますマージンの調整を処理します。
私はそうは思いません...しかし、描画位置をペンサイズの半分を右下に移動することができます