0

現在のサイズに合わせて適切に描画するカスタムコントロールを作成しようとしています。サイズ設定にはClientRectangleプロパティを使用する必要があると想定していましたが、クライアントの長方形の右と下がクリップされているようです。

描画イベントハンドラーをで埋める

Rectangle smaller = new Rectangle(5, 5, ClientRectangle.Width - 10, ClientRectangle.Height - 10);
e.Graphics.DrawRectangle(System.Drawing.Pens.Black, smaller);  
e.Graphics.DrawRectangle(System.Drawing.Pens.Red, ClientRectangle);

これを生成します:

ClientRecangleがクリップされます

コントロールの描画可能領域を取得するには、何を使用する必要がありますか?

4

1 に答える 1

2

次のいずれかを使用できます。

ControlPaint.DrawBorder(g, this.ClientRectangle, _
                        Color.Red, ButtonBorderStyle.Solid);

どこでGraphics g = e.Graphics;

または、同じように描画しますが、幅と高さから 1 を引きます (1 は、幅と高さが含まれますが、四角形を描画するには、最後のピクセルを除いたサイズが必要なx + w/y + hためです。したがって、最後のピクセルの位置を取得するには、1 を引く必要があります)。

rectangle r = this.ClientRectangle;
r.Width -= 1;
r.Height -= 1;

g.DrawRectangle(System.Drawing.Pens.Red, r);

そしてもちろん、これはOnPaintイベント ハンドラー内からです。

于 2012-12-17T16:16:58.427 に答える