- - PR -
フォームのOpacityを半透明に設定すると動作が極端に遅くなる
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-28 02:03
初めて投稿させて頂きます。
現在、VS2003にてWinFormアプリの開発を行っているのですが、 フォームのOpacityを半透明(1.0より小さく)に設定すると、 その後のフォームの移動やリサイズの動作が極端に遅くなることがあり、 困っています。 グラフィックの透過処理などに時間を要するものだと思うので、 マシンスペックが低かったり、フォームのウィンドウサイズが 大きかったりした場合、ある程度の速度低下は覚悟しているのですが、 予想以上に遅くなっているような印象です。 また、とても疑問に感じることが2点あります。 1つは、VSを立ち上げて、VSからCtrl+F5などでデバッグなし実行した場合は、 それほど遅さは感じられないのですが、VSを終了し、上記と同じexeを ダブルクリックで実行させた場合は、極端に動作が遅くなることです。 もう1つは、極端に遅くなったあと、ウィンドウをリサイズしたり、 移動したりしていると、急にに動作が普通に戻ることがあるのです。 同じような経験をお持ちの方はいらっしゃいませんか? これは一体どういったことによるものなのでしょうか? 有効な回避方法などあるのでしょうか? ご存知の方がいらっしゃいましたら、教えてください。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-05-28 08:51
これは起動方法というよりは、起動後のウィンドウの下にある「背景」の問題ではないでしょうか?
これは、途中の描画をサボっているんじゃないでしょうか。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-05-28 09:27
違うマシンで試してみたらどうなりますか?
OSの設定によっても変わるかもしれませんし。 パフォーマンスの設定や画面のプロパティの内容なども考慮して試してみると何かヒントがつかめるかもしれませんね。 実際に Opacity の値によってのみで、そのような現象が生じるのでしたら、できることと言えば、使用を諦めるか細工してしのぐことになるかと思います。 | ||||||||
|
投稿日時: 2006-05-28 10:21
じゃんぬねっとさん、コメント頂きまして、ありがとうございます。
試してみましたが、背景を同じ条件にしても、VSから起動した場合と単独起動した 場合では、やはり、動作速度に大きな差がでるようでした。 やっていて気づいたのですが、「VSから起動」というよりは、「VSでそのexeの ソリューションを開いた状態にしておいて起動する」という表現の方が正しいよう です。その場合は、exeダブルクリックで起動しても、動作はスムーズな状態と なります。 かなり想像なのですが、VS起動による.NET Frameworkのロード処理が、 exe単独起動時のそれとは何かが異なっているとか、そういった根本的な問題 なのかなーと思っております。
これは動かしいるexeの描画処理のことでしょうか? こちらで問題確認用にすごく単純なテストプログラム(C#でWinFormのスケルトン を作成し、プロパティでOpacityを50%に設定しただけのプログラム)でも、 本問題の発生を確認しています。 ですので、特に複雑な描画ロジックが組み込まれたようなexeでの話ではないのですが。 | ||||||||
|
投稿日時: 2006-05-28 10:25
関係ないとおもうけれど参考までに
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3986&forum=7&5 | ||||||||
|
投稿日時: 2006-05-28 10:30
田中さん、コメントありがとうございます。
私の動作環境については以下となります。 ・OS : Windows XP SP2 ・CPU : Intel Celeron M360 1.40GHz ・メモリ: 512MB ・グラフィック: チップセット内臓 あまり他のマシン環境で試していないのですが、 おっしゃる通り、環境依存の可能性も高いのかもしれません。
アドバイスありがとうございます。 設定をいろいろ変えて、試してみようと思います。 | ||||||||
|
投稿日時: 2006-05-28 11:26
こんにちは
http://www.atmarkit.co.jp/fdotnet/dotnettips/410vshost/vshost.html VS2005を試してみたところでは、 デバッグなし実行でもvhhost化で実行しているようです。 上記からの推測にすぎませんが、 VS2003でも裏ではなんらかの処理が動いているかもしれません。 参考までに。 | ||||||||
|
投稿日時: 2006-05-28 13:08
まあ、IDE からの起動と言えども、アセンブリを作ってから起動しているに過ぎない、 直接起動した場合とで、起動されたプログラムが変わることはあり得ないので、 あるとすれば、"IDE が起動しているから" という解釈の方が正しいと思います。 とはいえ、私の環境だと再現できないですね。(どちらにしても重い...)
いえ、たとえば激しく動かせば途中の描画を当然サボります。 これは、.NET Framework 側というよりは、OS 側の都合です。 ということが言いたかったのですが、 これは最初の件に関連して "極端に遅くなったあと" と仰られているようですね。(;~_~) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |