0

私のツールでは、aa パネルを使用してページを変更します。各ページには独自のパネルがあり、ページを変更すると、パネルにコントロールが送信されます。キャンバスとして使用するパネルには、次のペイント イベントがあります。

    private void panelContent_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
        e.Graphics.SmoothingMode = SmoothingMode.HighQuality;

        // Paints a border around the panel to match the treeview control
        e.Graphics.DrawRectangle(Pens.CornflowerBlue,
            e.ClipRectangle.Left,
            e.ClipRectangle.Top,
            e.ClipRectangle.Width - 1,
            e.ClipRectangle.Height - 1);

        e.Graphics.Flush();

        base.OnPaint(e);
    }

このメソッドは、基本的にパネルの周りに素敵な境界線を描画して、見栄えを良くします。何らかの理由で、このパネルの上に別のフォームを移動すると、境界線を構成する線が少し走り始めます。境界から小さな線が引かれることもあります。この問題は、パネル全体が再描画されるまでの数秒間だけ発生します。これを防ぐためにできることはありますか?

4

1 に答える 1

0

ClipRectangle は、コントロールのどの部分を再描画する必要があるかを示します。その上に何かを移動している場合、これはおそらくオブジェクトと移動中のオブジェクトの交点になります。この情報を使用して、コントロールをより効率的に再描画できます。

おそらく、(0, 0) から (panelContent.Width-1, panelContent.Height-1) までの長方形を描画する必要があります。

于 2010-02-16T21:08:13.763 に答える