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

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

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

Re[7]: SplitContainer内をダブルバッファでちらつき防止


(過去ログ 34 を表示中)

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

■16901 / inTopicNo.1)  SplitContainer内をダブルバッファでちらつき防止
  
□投稿者/ teru (1回)-(2008/04/12(Sat) 18:25:02)

分類:[VB.NET/VB2005] 

質問です。
ダブルバッファをしたいと思うのですが、フォームだと
  Me.SetStyle(ControlStyles.DoubleBuffer, True)
  Me.SetStyle(ControlStyles.UserPaint, True)
  Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
でできますが、いまやりたいのは SplitContainer
で分割したコンテナ内をダブルバッファでちらつきのないようにしたいのです。
どのようにしたらできるのでしょうか?

環境は、vb2005 です。

引用返信 編集キー/
■16907 / inTopicNo.2)  Re[1]: SplitContainer内をダブルバッファでちらつき防止
□投稿者/ れい (479回)-(2008/04/12(Sat) 22:55:06)
No16901 (teru さん) に返信
> で分割したコンテナ内をダブルバッファでちらつきのないようにしたいのです。

ControlStyles.DoubleBufferとかControlStyles.UserPaintとか、
懐かしい話ですが…。

コンテナ内の何をダブルバッファしたいのでしょうか?


引用返信 編集キー/
■16909 / inTopicNo.3)  Re[2]: SplitContainer内をダブルバッファでちらつき防止
□投稿者/ teru (2回)-(2008/04/13(Sun) 00:02:35)
No16907 (れい さん) に返信

ご返信ありがとうございます。

> コンテナ内の何をダブルバッファしたいのでしょうか?

現在、SplitContainer を使用して2つに分割した領域に

Private Sub SplitContainer2_Panel1_Paint(ByVal sender As ..., ByVal e As ...) Handles SplitContainer2.Panel1.Paint
e.Graphics.DrawRectangle(...

のようにして図形を描画しています。
ウィンドウのサイズを変更するとこの図形がちらつくのでこれを改善したいと思っています。
どのようにしたらいいのでしょうか?
引用返信 編集キー/
■16910 / inTopicNo.4)  Re[3]: SplitContainer内をダブルバッファでちらつき防止
□投稿者/ れい (480回)-(2008/04/13(Sun) 00:18:32)
2008/04/13(Sun) 00:19:00 編集(投稿者)
No16909 (teru さん) に返信
> 現在、SplitContainer を使用して2つに分割した領域に
> 
> Private Sub SplitContainer2_Panel1_Paint(ByVal sender As ..., ByVal e As ...) Handles SplitContainer2.Panel1.Paint
>    e.Graphics.DrawRectangle(...
> 
> のようにして図形を描画しています。

それなら普通にControl.DoubleBufferedを用いればよいと思います。
SplitContainerやContainerControlで使えないという話は聞いたことがないので。

Public Class DoubleBufferedSplitContainer
    Inherits SplitContainer
    Protected Overrides Property DoubleBuffered() As Boolean
        Get
            Return True
        End Get
        Set(ByVal value As Boolean)
        End Set
    End Property
End Class
  

引用返信 編集キー/
■16917 / inTopicNo.5)  Re[4]: SplitContainer内をダブルバッファでちらつき防止
□投稿者/ teru (3回)-(2008/04/13(Sun) 11:08:14)
No16910 (れい さん) に返信
> 2008/04/13(Sun) 00:19:00 編集(投稿者)

ご返信ありがとうございます。

> それなら普通にControl.DoubleBufferedを用いればよいと思います。
> SplitContainerやContainerControlで使えないという話は聞いたことがないので。
>
> Public Class DoubleBufferedSplitContainer
>以下略

SplitContainer 継承して DoubleBuffered をオーバーライドするのですね。。。
概念ではわかるのですが、VS をどう操作してどこに記述するのがわからない・・・
基本的なことで申し訳ないのですが、このあたりを紹介しているページはありますか?
レベルの低いお願いで申し訳ございません。


引用返信 編集キー/
■16918 / inTopicNo.6)  Re[5]: SplitContainer内をダブルバッファでちらつき防止
□投稿者/ れい (481回)-(2008/04/13(Sun) 12:38:09)
No16917 (teru さん) に返信
> 基本的なことで申し訳ないのですが、このあたりを紹介しているページはありますか?

うーん
どっかにはあるんでしょうが、
私は知りません。

あんまりWebサイトは参考にしないので…。

引用返信 編集キー/
■16919 / inTopicNo.7)  Re[6]: SplitContainer内をダブルバッファでちらつき防止
□投稿者/ teru (4回)-(2008/04/13(Sun) 14:40:33)
No16918 (れい さん) に返信
> うーん
> どっかにはあるんでしょうが、
> 私は知りません。

すみません。変なお願いをしまして・・・
次のサイトを参考にやってみました。
http://www.vbstation.net/tips/inherits_control.htm

「■確認してみよう」の、「ツールボックス」に「UserControl1」ユーザーコントロールが
追加されるところまではうまくいきました。

この段階で、素のままの(名はDoubleBufferedSplitContainerですがただのSplitContainer)を
Form1 にかぶせてデバック開始をすると、普通に動くのですが、ためしに Panel1 の Paint
イベントで(DoubleBufferedでない素の状態の)描画をさせてみようと思うと

Private Sub UserControl11_Panel1_Paint(ByVal sender As ..., ByVal e As ...) Handles UserControl11.Panel1.Paint
の UserControl11.Panel1.Paint でエラーが起こり

エラー 1 クラスの 'Handles' は、単一の識別子で限定された 'WithEvents' 変数、'MyBase'、'MyClass' または 'Me' を指定しなければなりません。

で、Paint イベントの実装ができません。(まだ、素の状態なのに・・・)

何が悪くてどこを直せばよいのでしょうか?




引用返信 編集キー/
■16927 / inTopicNo.8)  Re[7]: SplitContainer内をダブルバッファでちらつき防止
□投稿者/ れい (482回)-(2008/04/13(Sun) 20:57:01)
No16919 (teru さん) に返信
> 何が悪くてどこを直せばよいのでしょうか?

とりあえず、UserControlを使わずに新しいファイルを作って
そこに上記コードをコピーすると
Visual Studio 2005以降ならツールバーに
DoubleBufferedSplitContainerが表示されると思います。

が、操作があまりにわからないようですし、
インスタンスと型の区別もついていないと思いますので、
入門書などで勉強するとよいと思います。
ここは図も使えませんから、操作を説明するのは煩雑すぎますので。


引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -