|
そちらのサイトを参考にダブルバッファリングのプログラムを 実装したんですがどうもちらついてしまいます
//ダブルバッファイリングするための処理 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(); }
|