C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[10]: C# 画面の書き換え


(過去ログ 29 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■13903 / inTopicNo.1)  C# 画面の書き換え
  
□投稿者/ 上田 (1回)-(2008/02/06(Wed) 13:52:51)

分類:[C#] 

checkBox1_CheckedChangedイベントが発生したときに、CreateGraphics()を用いてFormに直接イメージを描画しています。
そして、vScrollBar1_scrollイベントが発生したときに描画してあるイメージを、−y方向に移動させたいのですが、描画してあるイメージを消して画面を書き換える(?)方法がわかりません。

どなたかお教えいただけないでしょうか。
引用返信 編集キー/
■13906 / inTopicNo.2)  Re[1]: C# 画面の書き換え
□投稿者/ Hongliang (237回)-(2008/02/06(Wed) 14:03:47)
> checkBox1_CheckedChangedイベントが発生したときに、CreateGraphics()を用いてFormに直接イメージを描画しています。
それは次のOSによる再描画要求(一旦他のフォームの後ろに隠れた後、再び前に出てきたときとか)の時には消えても構わないからってことですか?

> そして、vScrollBar1_scrollイベントが発生したときに描画してあるイメージを、−y方向に移動させたいのですが、描画してあるイメージを消して画面を書き換える(?)方法がわかりません。
Graphics.Clear とか。
引用返信 編集キー/
■13908 / inTopicNo.3)  Re[2]: C# 画面の書き換え
□投稿者/ 上田 (2回)-(2008/02/06(Wed) 14:13:45)
No13906 (Hongliang さん) に返信
>>checkBox1_CheckedChangedイベントが発生したときに、CreateGraphics()を用いてFormに直接イメージを描画しています。
> それは次のOSによる再描画要求(一旦他のフォームの後ろに隠れた後、再び前に出てきたときとか)の時には消えても構わないからってことですか?
今のところその方法で作成しています。


>>そして、vScrollBar1_scrollイベントが発生したときに描画してあるイメージを、−y方向に移動させたいのですが、描画してあるイメージを消して画面を書き換える(?)方法がわかりません。
> Graphics.Clear とか。
'Clear'の定義がありませんと出てしまいます。
引用返信 編集キー/
■13916 / inTopicNo.4)  Re[3]: C# 画面の書き換え
□投稿者/ 未記入 (161回)-(2008/02/06(Wed) 15:16:07)
No13908 (上田 さん) に返信
> 'Clear'の定義がありませんと出てしまいます。

Graphicsのインスタンスから実行していないとか、そういうオチですか?
引用返信 編集キー/
■13944 / inTopicNo.5)  Re[4]: C# 画面の書き換え
□投稿者/ Hirotow (178回)-(2008/02/07(Thu) 00:20:54)
描画処理はPictureBoxにするのが定石です。

それは置いといて、Paintイベントハンドラでe.Graphicsオブジェクトに対して消去(e.Graphics.Clear())、描画をするようにして、ScrollとCheckedChangedではthis.Reflesh()を呼び出すようにするといいですよ。
引用返信 編集キー/
■13945 / inTopicNo.6)  Re[5]: C# 画面の書き換え
□投稿者/ 中博俊 (1247回)-(2008/02/07(Thu) 00:56:01)
中博俊 さんの Web サイト
>描画処理はPictureBoxにするのが定石です。
そんなことないよ
引用返信 編集キー/
■13947 / inTopicNo.7)  Re[6]: C# 画面の書き換え
□投稿者/ Jitta on the way (23回)-(2008/02/07(Thu) 07:10:05)
No13945 (中博俊 さん) に返信
> >描画処理はPictureBoxにするのが定石です。
> そんなことないよ

誰かが「PictureBox に直接描くな」と、書いていたような?

メモリ上に用意して、それを転写するべきかと思います。
引用返信 編集キー/
■13954 / inTopicNo.8)  Re[7]: C# 画面の書き換え
□投稿者/ Mr.T (179回)-(2008/02/07(Thu) 08:44:23)
Mr.Tです、こんにちは。
No13947 (Jitta on the way さん) に返信
> ■No13945 (中博俊 さん) に返信
>>>描画処理はPictureBoxにするのが定石です。
>>そんなことないよ
>
> 誰かが「PictureBox に直接描くな」と、書いていたような?

自前で書くと手間がかかってしゃーないねん、という認識だった
ように思います。

>
> メモリ上に用意して、それを転写するべきかと思います。

そういや、最近、ここら辺をみてました。
グラフィックスプログラミングについて
http://msdn2.microsoft.com/ja-jp/library/da0f23z7(VS.80).aspx


引用返信 編集キー/
■13966 / inTopicNo.9)  Re[8]: C# 画面の書き換え
□投稿者/ Hirotow (179回)-(2008/02/07(Thu) 10:30:39)
No13954 (Mr.T さん) に返信
> Mr.Tです、こんにちは。
> ■No13947 (Jitta on the way さん) に返信
>>■No13945 (中博俊 さん) に返信
> >>>描画処理はPictureBoxにするのが定石です。
> >>そんなことないよ
>>
>>誰かが「PictureBox に直接描くな」と、書いていたような?
>
> 自前で書くと手間がかかってしゃーないねん、という認識だった
> ように思います。
>
>>
>>メモリ上に用意して、それを転写するべきかと思います。
>
> そういや、最近、ここら辺をみてました。
> グラフィックスプログラミングについて
> http://msdn2.microsoft.com/ja-jp/library/da0f23z7(VS.80).aspx
>
>
確かにダブルバッファじゃないと遅いですね。
ダブルバッファの一例として、
表示領域と同じサイズのBitmapを作ってGraphic.FromImage()してBitmapにかきかきして、PaintハンドラではそのBitmapを描画します。
引用返信 編集キー/
■13968 / inTopicNo.10)  Re[8]: C# 画面の書き換え
□投稿者/ 渋木宏明(ひどり) (647回)-(2008/02/07(Thu) 10:45:02)
渋木宏明(ひどり) さんの Web サイト
> >>>描画処理はPictureBoxにするのが定石です。
> >>そんなことないよ

「描画」全般で言うとね。

>>誰かが「PictureBox に直接描くな」と、書いていたような?

は、画像(最大でも画面サイズくらい)を固定位置に表示する、ビューワや簡単なペイントツールのようなシナリオにあてはまります。

> 自前で書くと手間がかかってしゃーないねん、という認識だった
> ように思います。

手間の話もあるけど、細かいところの仕組みを理解せずに PictureBox に自前で描画すると、パフォーマンス上の無駄や見栄えの悪さを引き起こす可能性があります。

引用返信 編集キー/
■13975 / inTopicNo.11)  Re[9]: C# 画面の書き換え
□投稿者/ Hirotow (180回)-(2008/02/07(Thu) 12:13:08)
それより不思議なのは質問者の方法だとコントロールと重なったときどうなるのかなのですが。

>手間の話もあるけど、細かいところの仕組みを理解せずに PictureBox に自前で描画すると、パフォーマンス上の無駄や見栄えの悪さを引き起こす可能性があります。
.NETってなぜかオーナードローすると途端に重たくなるんですよね。
何か自分の知らないお約束があるのかと思って探してるんですけど何もヒットしないし。
引用返信 編集キー/
■13976 / inTopicNo.12)  Re[10]: C# 画面の書き換え
□投稿者/ 渋木宏明(ひどり) (648回)-(2008/02/07(Thu) 12:40:34)
渋木宏明(ひどり) さんの Web サイト
> .NETってなぜかオーナードローすると途端に重たくなるんですよね。

WinForms は内部でコソっとダブルバッファしてる場合があるらしく、その関係で再描画の連鎖が変になったりしてるんですかねぇ。

# ソースがおまとめダウンロードできればいいんですが ;-p
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -