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

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

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

ダブルバッファリングについて(復元)


(過去ログ 4 を表示中)

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

■4086 / inTopicNo.1)  Re[1]: ダブルバッファリング
  
□投稿者/ 夏椰 二等兵(10回)-(2006/05/31(Wed) 13:36:20)
http://www.atmarkit.co.jp/fdotnet/dotnettips/197doublebuf/doublebuf.html

ここが参考になると思いますよ。

0
引用返信 編集キー/
■4094 / inTopicNo.2)  Re[2]: ダブルバッファリング
□投稿者/ sin 二等兵(4回)-(2006/05/31(Wed) 16:00:12)
そちらのサイトを参考にダブルバッファリングのプログラムを
実装したんですがどうもちらついてしまいます

//ダブルバッファイリングするための処理
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
この3行を記述すればできるようなんですが描画されているところが
見えてしまいちらついてしまいます。


サンプルです
//描画処理する前の処理
void Init_Image()
{
bitmap = new Bitmap(Image_filename);
//ダブルバッファイリングするための処理
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
}


//左側のパネルに描画処理
void Panel2_Paint(object sender, PaintEventArgs e)
{
//グラフィック処理ができるようにする
Graphics g = e.Graphics;
//画像をファイルを開くダイアログから読み込んだら
if (Image_read_flg == true)
{
//描画処理する前の前処理
Init_Image();
//切り取ってタイルのように描画処理
for (int y = 0; y < mapy_size; y++)
{
for (int x = 0; x < mapx_size; x++)
{
int offsetx = (x * tipx_size);
int offsety = (y * tipy_size);
Rectangle dest = new Rectangle(offsetx, offsety, tipx_size, tipy_size);
Rectangle src = new Rectangle(0,0,tipx_size,tipy_size);
g.DrawImage(bitmap, dest, src, GraphicsUnit.Pixel);
}
}
}
g.Dispose();
}

0
引用返信 編集キー/
■4101 / inTopicNo.3)  Re[3]: ダブルバッファリング
□投稿者/ sin 二等兵(5回)-(2006/05/31(Wed) 18:27:01)
//ダブルバッファイリングするための処理
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);

この部分でthisインスタンスに対してダブルバッファリングをやっていた
つまいこの場合Form1に対してダブルバッファリングをやっていたので
ちらついたのでこれをパネルに対してダブルバッファリングしてくて

splitContainer1.Panel1.SetStyle(ControlStyles.DoubleBuffer, true);
splitContainer1.Panel1.SetStyle(ControlStyles.UserPaint, true);
splitContainer1.Panel1.SetStyle(ControlStyles.AllPaintingInWmPaint, true);

このようにパネルに対してやったのですがどうもダメみたいなんですが
このようにパネルにダブルバッファを実装するにはどうしたらいいでしょうか?

0
引用返信 編集キー/
■4103 / inTopicNo.4)  Re[4]: ダブルバッファリング
□投稿者/ 通りすがり 二等兵(1回)-(2006/05/31(Wed) 21:00:24)
http://www.atmarkit.co.jp/fdotnet/dotnettips/449doublebufed/doublebufed.html

ここは?

0
引用返信 編集キー/
■4104 / inTopicNo.5)  Re[5]: ダブルバッファリング
□投稿者/ sin 二等兵(6回)-(2006/05/31(Wed) 21:36:15)
そちらのサンプルを見させてもらいやったのですが
やはりパネルに描画処理をするとちらついてしまいます。


void Init_Image()
{
bitmap = new Bitmap(Image_filename);
this.DoubleBuffered = true;
}


//左側のパネルに描画処理
void Panel2_Paint(object sender, PaintEventArgs e)
{
//グラフィック処理ができるようにする
Graphics g = e.Graphics;
//画像をファイルを開くダイアログから読み込んだら
if (Image_read_flg == true)
{
//描画処理する前の前処理
Init_Image();
//切り取ってタイルのように描画処理
for (int y = 0; y < mapy_size; y++)
{
for (int x = 0; x < mapx_size; x++)
{
int offsetx = (x * tipx_size);
int offsety = (y * tipy_size);
Rectangle dest = new Rectangle(offsetx, offsety, tipx_size, tipy_size);
Rectangle src = new Rectangle(0,0,tipx_size,tipy_size);
g.DrawImage(bitmap, dest, src, GraphicsUnit.Pixel);
}
}
}
g.Dispose();
}

0
引用返信 編集キー/
■4132 / inTopicNo.6)  Re[6]: ダブルバッファリング
□投稿者/ (報告) 二等兵(1回)-(2006/06/02(Fri) 07:41:06)
質問者の良識を疑います。
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=16093

0
引用返信 編集キー/
■4083 / inTopicNo.7)  ダブルバッファリングについて(復元)
□投稿者/ -(0001/01/01(Mon) 00:00:00)
分割ウィンドウにして
パネルに描画処理をしているのですがちらついてしまいます
ちらつきしないオフスクリーンを使ったのですがちらついてしまいます
サンプルです

Init_Image()メソッドはファイルを開くダイアログから画像データを読み込んだら
実行されるようにしています
そのあと再描画してその画像ファイルを表示するようにしているのですが
サイズを変更したりその部分を隠したりして元に戻すとちらついてしまいます
また画像をダイアログから読み込んで表示させようとしているときもちらつきます

//描画処理する前の処理
void Init_Image()
{
//画像ファイルの読み込み
bitmap = Image.FromFile(Image_filename);
//オフスクリーン作成
offImage = new Bitmap(300,300);
//オフスクリーンに対して描画処理をするようにする
off = Graphics.FromImage(offImage);
}


//左側のパネルに描画処理
void Panel2_Paint(object sender, PaintEventArgs e)
{
//表に表示するために必要
Graphics g = e.Graphics;
//画像データが入っていたら
if (bitmap != null)
{
//切り取ってタイルのように描画処理
for (int y = 0; y < mapy_size; y++)
{
for (int x = 0; x < mapx_size; x++)
{
int offsetx = (x * tipx_size);
int offsety = (y * tipy_size);
Rectangle dest = new Rectangle(offsetx, offsety, tipx_size, tipy_size);
Rectangle src = new Rectangle(0,0,tipx_size,tipy_size);
//裏描画をする
off.DrawImage(bitmap, dest, src, GraphicsUnit.Pixel);
}
}
//すべて表に表示
g.DrawImage(offImage, 0, 0);
}
g.Dispose();
}


0
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -