2

ここ数か月、あるプロジェクトに取り組んできましたが、解決できない問題が 1 つあります。コントロールを含む Windows フォームがあります。ユーザーがコントロールのサイズを変更すると、アプリは sizechanged イベントを発生させ、それに応じてコントロールを移動します。主な問題は、ボタンに画像があるためです。実際には、より正確に言うと、フラットで境界線がなく、実際に描画されたボタンである画像があります (コードで描画しない理由は、画像が複雑です)。一部のマシンでは、アプリのサイズ変更中にちらつき始めます。Form は DoubleBuffered true に設定されており、この関数を使用してボタンにダブル バッファを設定しました。

public static void SetDoubleBuffered(System.Windows.Forms.Control c)
    {
        if (System.Windows.Forms.SystemInformation.TerminalServerSession)
            return;

        System.Reflection.PropertyInfo aProp =
              typeof(System.Windows.Forms.Control).GetProperty(
                    "DoubleBuffered",
                    System.Reflection.BindingFlags.NonPublic |
                    System.Reflection.BindingFlags.Instance);

        aProp.SetValue(c, true, null);
    }

助言がありますか?

4

1 に答える 1

1

これは、ダブル バッファリングで問題が発生したときに大いに役立ちました。コードは少し古いですが、基本的な部分はまだカバーされています。

http://www.codeproject.com/KB/graphics/DoubleBuffering.aspx

それが役立つことを願っています。:)

于 2011-10-18T07:40:54.570 に答える