パネルのちらつき
- 題名: パネルのちらつき
- 著者: rora
- 日時: 2006/06/01 15:49:47
- ID: 16093
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: パネルのちらつき
- 著者: Blue
- 日時: 2006/06/01 15:56:10
- ID: 16094
- この記事の返信元:
-
[16093] パネルのちらつき rora 2006/06/01 15:49:47
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: うまくいかない
- 著者: rora
- 日時: 2006/06/01 16:25:32
- ID: 16095
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: 【報告】この投稿はマルチポストです
- 著者: (報告)
- 日時: 2006/06/01 17:12:20
- ID: 16096
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分割ウィンドウにして
パネルに描画処理をしているのですがちらついてしまいます
ちらつきしないオフスクリーンを使ったのですがちらついてしまいます
サンプルです
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();
}