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

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

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

Re[2]: 描写の一時停止


(過去ログ 81 を表示中)

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

■47859 / inTopicNo.1)  描写の一時停止
  
□投稿者/ gonna (35回)-(2010/03/16(Tue) 18:12:31)

分類:[VB.NET/VB2005 以降] 

こんにちは。
今Form上に直接描写を行っています。
然し、結構な量を描写しているため、ちらつきが発生します。
ListBoxの様な場合はBegin/EndUpdateで出来るのですが、Formには其れがありません。
どのようにすればよいのかご教授願います。

---Code---
Private Sub TestForm2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

Dim g As Graphics = Me.CreateGraphics
For i As Integer = 1 To 20
For j As Integer = 1 To 15
g.DrawImage(My.Resources.Image, i * 32, j * 32)
Next
Next
End Sub
---/Code---
VB2008EE
引用返信 編集キー/
■47860 / inTopicNo.2)  Re[1]: 描写の一時停止
□投稿者/ aetos (254回)-(2010/03/16(Tue) 18:18:12)
No47859 (gonna さん) に返信
> こんにちは。
> 今Form上に直接描写を行っています。
> 然し、結構な量を描写しているため、ちらつきが発生します。
> ListBoxの様な場合はBegin/EndUpdateで出来るのですが、Formには其れがありません。
> どのようにすればよいのかご教授願います。

form の DoubleBuffered を True にしてみるとか。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.doublebuffered(VS.80).aspx
引用返信 編集キー/
■47861 / inTopicNo.3)  Re[1]: 描写の一時停止
□投稿者/ 魔界の仮面弁士 (1557回)-(2010/03/16(Tue) 18:19:12)
No47859 (gonna さん) に返信
> どのようにすればよいのかご教授願います。
DoubleBuffered プロパティの利用を検討してみてください。

>     Private Sub TestForm2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
>         Dim g As Graphics = Me.CreateGraphics
Paint イベントで描画する際には、CreateGraphics を使用しないでください。
代わりに、イベント引数 e から Graphics を受け取るようにします。

また、もしも CreateGraphics を用いる必要があるにしても、
そこで生成した Graphics は、使用後に Dispose で破棄する必要があります。
(ただし、イベント引数の e.Graphics は自分で生成したものではないため、Dispose してはいけません)

引用返信 編集キー/
■47866 / inTopicNo.4)  Re[2]: 描写の一時停止
□投稿者/ gonna (36回)-(2010/03/16(Tue) 20:09:48)
皆さんありがとうございます。
DoubleBufferedを利用したら無事に描写できました。
又、Graphicsに就いても丁寧に教えていただきありがとうございました。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -