トップページ > プログラム > 2017年04月21日 > FFGpioc0

書き込み順位&時間帯一覧

28 位/199 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000001110003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net

書き込みレス一覧

C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
955 :デフォルトの名無しさん[sage]:2017/04/21(金) 18:12:04.32 ID:FFGpioc0
>>953-954
そもそもコントロールのイベントで再描画ってのはちょっとw

表示先頭位置とか表示倍率とかの値はFormなりUseControlなり
独立したクラスなりのプロパティになってるはずで、それらのプロパティの変更痔に
再描画されるようにしないと

無駄な再描画を避ける方法だけど、一番いいのは余程重いのでなければ
気にしないことだと思うw

どうしてもこだわるなら、直接再描画するんじゃなくて
タイマーのイベントに再描画を紐づけしてタイマーをスタートさせるだけにするか、
Application.Idleイベントをうまく使うかするとか
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
965 :デフォルトの名無しさん[sage]:2017/04/21(金) 19:56:01.47 ID:FFGpioc0
>>960
コントロールのイベント使うな、っていうのは無駄な再描画対策じゃなくて設計論ね
そういう設計だと、例えばプログラムで倍率を変更しても再描画されないよね。
まあ余計なお世話だよねw

Application.Idleは例えばこうやって使う

bool DrawOnIdle {get; set;}

void Application_Idle(object sender, EventArgs e}
{
  if (DrawOnIdle) redraw();
  DrawOnIdle = false;
}
C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
970 :デフォルトの名無しさん[sage]:2017/04/21(金) 20:43:34.30 ID:FFGpioc0
>>968
勘違いではないよね。
その認識であってると思う。

コントロールのプロパティを値の入れ物として利用するのは普通はよくない作法だと思う。
コントロールはあくまでUI(表示と入力)に徹するべきで、
表示先頭位置とか表示倍率とかの値はFormなりUseControlなり
独立したクラスなりのプロパティにするべきだというか、普通はすると思う。

で、再描画はコントロールのプロパティが変更されたタイミングではなく、
表示先頭位置なり表示倍率なりのプロパティが変更されたタイミングで行う。

当然、この場合も一度に複数のプロパティが変更されたときに
不要な再描画を回避する方法は考える必要がある


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。