6

彼の答えの中で、 Rick Brewster は「PictureBoxしばしば誤解されている」と述べています。そして「あなたはおそらくそれを使いたくないでしょう。」

残念ながら、彼は の何が問題なのかを説明しませんでしたPictureBox。私はそれを使って画像を表示したり操作したりしていますが、ちょっと遅いですが、画像を表示するためでなければ何の意味があるのでしょうか?

4

1 に答える 1

5

これは便利なコントロールで、ポイント アンド クリックの UI デザインに役立ちます。しかし、確かに、それは非常に無駄です。Label コントロールにキャンドルを保持していませんが。画像を描画するためだけに、Windows ウィンドウ全体を焼き尽くしています。ネイティブ ウィンドウ オブジェクトは、非常に高価なシステム リソースです。別の方法は、OnPaint() メソッド内の 1 行のコード、e.Graphics.DrawImage() です。

また、Rick が指摘するように、これはあまりスマートなコントロールではありません。それ自体をペイントする必要があるたびに、コントロールに合わせて画像を再スケーリングします。また、画像のピクセル形式も最適化されないため、GDI+ も毎回ピクセル変換を行う必要があります。最終的な影響として、UI が遅くなる可能性があります。画像の描画が必要以上に 100 倍遅くなることは、確かに珍しいことではありません。それ以外の場合は、汎用コントロールで行うのが難しい種類のトレードオフです。このような最適化は無料ではなく、メモリ要件が 2 倍になる可能性があります。

比較のために、Outlook のような Microsoft Office プログラムは約 50 のウィンドウを使用しますが、そのほとんどはツールバーです。それが、Winforms で 10 分以内にまとめられるものです。利便性には代償があります。Office プログラムも同様で、多くのプログラマーが必要です。

于 2013-11-08T16:16:29.903 に答える