1

ちらつきを減らすにはどうすればよいですか?

スクロール値が変更されたときの C# パネルのちらつき

これは Windows フォーム ベースのプロジェクトです

[Translate は、2 つのテキスト ボックスと青色の背景色を含むユーザー コントロールです。]

私の実装:

    ScrollBar sb = new VScrollBar();
    translate[] t = new translate[5];

    private void btnSearch_Click(object sender, EventArgs e)
    {
        //
        sb.Dock = DockStyle.Right;
        sb.Scroll += sb_Scroll;
        panel1.HorizontalScroll.Value = 0;
        sb.Top = panel1.Top;
        sb.Height = panel1.Height;
        this.Controls.Add(sb);
        //


        Point p = new Point(10, 0);
        for (int i = 0; i < 5; i++)
        {
            t[i] = new translate();
            t[i].Left = p.X;
            t[i].Top = p.Y;
            panel1.Controls.Add(t[i]);

            //p.X += 100;
            p.Y += 110;
        }
    }

    void sb_Scroll(object sender, ScrollEventArgs e)
    {
        //panel1.Invalidate();
        panel1.VerticalScroll.Value = sb.Value;
    }
4

2 に答える 2

1

Control.DoubleBufferedWinForms にはこれに対する戦術がいくつかあります。まず、プロパティを trueに設定して、ウィンドウやコントロールのダブル バッファリングを有効にすることを検討してください。

ちらつきを軽減または防止するために、このコントロールがセカンダリ バッファーを使用してその表面を再描画する必要があるかどうかを示す値を取得または設定します。

したがって、これによりちらつきが軽減されますが、必ずしもなくなるわけではありません。場合によります。

于 2013-06-10T19:04:32.117 に答える