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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.4083 の関連記事表示

<< 0 >>
■4132  Re[6]: ダブルバッファリング
□投稿者/ (報告) -(2006/06/02(Fri) 07:41:06)
記事No.4083 のレス /0過去ログ4より / 関連記事表示
削除チェック/

■4104  Re[5]: ダブルバッファリング
□投稿者/ sin -(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();
    }
記事No.4083 のレス /0過去ログ4より / 関連記事表示
削除チェック/

■4103  Re[4]: ダブルバッファリング
□投稿者/ 通りすがり -(2006/05/31(Wed) 21:00:24)
記事No.4083 のレス /0過去ログ4より / 関連記事表示
削除チェック/

■4101  Re[3]: ダブルバッファリング
□投稿者/ sin -(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);

    このようにパネルに対してやったのですがどうもダメみたいなんですが
    このようにパネルにダブルバッファを実装するにはどうしたらいいでしょうか?
記事No.4083 のレス /0過去ログ4より / 関連記事表示
削除チェック/

■4094  Re[2]: ダブルバッファリング
□投稿者/ sin -(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();
    }
記事No.4083 のレス /0過去ログ4より / 関連記事表示
削除チェック/

■4086  Re[1]: ダブルバッファリング
□投稿者/ 夏椰 -(2006/05/31(Wed) 13:36:20)
記事No.4083 のレス /0過去ログ4より / 関連記事表示
削除チェック/

■4083  ダブルバッファリングについて(復元)
□投稿者/ -(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過去ログ4より / 関連記事表示
削除チェック/

■4083  Re[3]: DataGridで...を表示しないようにするには?
□投稿者/ 魔界の仮面弁士 -(2007/06/05(Tue) 23:44:34)
    # 全文引用は避けてくださいませ。
    
    ■No4081 (ハイフン さん) に返信
    > DataGridではなくデフォルトのDataGridViewを使用していたのが問題だったということなのでしょうか?
    
    使用したことが問題というよりは、DataGridView について質問するときに、
    誤って DataGrid だと書いていたことが問題かな…。
    
    
    > 表示しないようにするにはどうすれば良いのでしょうか?
    
    標準の表示が気に入らないのであれば、CellPainting イベントで好きなように描き換えてしまう、とか。(^_^;)
    
    --------------
    
    // 0列目の内容は 自分で描画する
    if (e.ColumnIndex == 0)
    {
        // セルが選択されているかどうか
        bool selected = DataGridViewElementStates.None
            != (e.State & DataGridViewElementStates.Selected);
    
        // セルの背景を塗りつぶす
        e.PaintBackground(e.ClipBounds, selected);
    
        // 描画するテキスト
        string text = (e.Value ?? String.Empty).ToString();
    
        // テキストの色
        Color color = selected ? e.CellStyle.SelectionForeColor : e.CellStyle.ForeColor;
    
        // テキストの配置など
        TextFormatFlags flags = TextFormatFlags.Default | TextFormatFlags.VerticalCenter;
    
        // 文字列の描画
        TextRenderer.DrawText(e.Graphics, text, e.CellStyle.Font, e.CellBounds, color, flags);
    
        // 描画処理を自分で行った場合は true
        e.Handled = true;
    }
記事No.4048 のレス /過去ログ13より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -