DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Form上のLabel描画について

環境/言語:[WindowsXPPro VC.Net2005(評価版)]
分類:[.NET]

はじめまして。

タイトルについてご存知な方が居られたら教えてください。

新規プロジェクトでCLR->Windowsフォームアプリを作成し、新規FormにLabelを追加して、
背景色、文字色をRGB値で設定し、Ctrlキーで30個程同じフォームにコピーして縦に並べました。

この状態でデバッグ実行したところ、表示更新が遅い事に気がつきました。

具体的に言うと、Labelの上を別なウィンドウ(Windows標準電卓)でドラッグし
Labelの再描画が起きるような状態になったのですが、CPU使用率が90〜100に
なり、ちらつき(コントロール表示域のクリア)が起きています。

ネットで調べたところ、コントロールのちらつきにはSetStyleという処理で
DoubleBufferとUserPaintとAllPaintingWmPaintを組み合わせると良い
という事だったので、Labelを継承したクラスを作成し(LabelEx)、
LabelからLabelExに置き換えてみましたが、結果は少し改善されたかな?という
状態でした。

またLabelからCheckBoxに置き換えて同様の事を試してみましたが、テキスト部分で
やはりちらつきが起きました。

.Netの開発は今回がほぼ初めてなのですが、これが.Netアプリでは通常の状態なのでしょうか?
それとも何か設定が必要なのでしょうか。

よろしくお願い致します。
すみません。
状況の補足をさせて頂きます。

Labelの手前をウィンドウが1回通りすぎるような状況ではなく、
ウィンドウをドラッグしたまま、連続で動かした時です。
(スクラッチくじをこするようなイメージです)
Labelコントロールを使わずに、フォームにGraphics.DrawStringで直接文字列を描画してはいかがでしょうか?

文字を描く
http://dobon.net/vb/dotnet/graphics/drawstring.html
返信ありがとうございます。

■No20086に返信(管理人さんの記事)
> Labelコントロールを使わずに、フォームにGraphics.DrawStringで直接文字列を描画してはいかがでしょうか?
>
> 文字を描く
> http://dobon.net/vb/dotnet/graphics/drawstring.html

直接描画する事も考えましたが、CheckBoxでも発生する事から
根本原因の調査を行っておりました。

内容がシンプルなだけに解決の糸口がなかなか見つかりませんね^^;
この投稿はマルチポストです。

●マルチポストされている場所
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39654&forum=7

----------
この掲示板ではマルチポストが禁止されています。詳しくは、「書き込みのマナーについて」をお読みください。

●書き込みのマナーについて
http://dobon.net/vb/bbs/index.html

DOBON.NET | プログラミング道 | プログラミング掲示板