[過去ログ] ふらっと C#,C♯,C#(初心者用) Part137 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
354: (ワッチョイ 03c3-XJxX) 2018/05/06(日)09:09 ID:9GXSG5IC0(1/10) AAS
イメージの配置はできるようになりましたが、いろいろ触っていると、チラツキが
気になるようになってきました
テストしてみたところ、下記のレベルでもチラツキが発生します

private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = Graphics.FromImage(canvas);
g.FillEllipse(bg_brush, x, y, radius, radius);
省16
355: (ワッチョイ 03c3-XJxX) 2018/05/06(日)09:36 ID:9GXSG5IC0(2/10) AAS
書いてませんでしたが、bg_brushは背景色の、fg_brushは前景色のブラシです

Brush bg_brush = new SolidBrush(SystemColors.Control);
Brush fg_brush = new SolidBrush(Color.Black);

で定義しています
357: (ワッチョイ 03c3-XJxX) 2018/05/06(日)10:06 ID:9GXSG5IC0(3/10) AAS
canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height);

として定義しています
360
(3): (ワッチョイ 03c3-XJxX) 2018/05/06(日)10:55 ID:9GXSG5IC0(4/10) AAS
外部リンク:ideone.com

これが全コードです
空のWindowsフォームアプリケーションで生成されたフォームに、ボタンとパネル、
PictureBoxを配置しただけの状態です
パネルとPictureBoxは、DockをFillにしてウィンドウサイズに合わせてあります
361
(1): (ワッチョイ 03c3-XJxX) 2018/05/06(日)10:56 ID:9GXSG5IC0(5/10) AAS
これで、timer1のIntervalを50msにすると、はっきり分かる程度にちらつきます
365
(1): (ワッチョイ 03c3-XJxX) 2018/05/06(日)18:19 ID:9GXSG5IC0(6/10) AAS
>>363
環境の問題ですか・・・
一応ディスプレイのリフレッシュレートは60Hz、タイマー設定が50msだと20Hzあれば
十分ですので、あまり関係ない気がするのですが
でも私の環境でしか出ないのであれば、環境依存かもしれません

>>364
これを避けるためにダブルバッファリングをするわけですし、書き換えた後のビットマップを
省1
369
(1): (ワッチョイ 03c3-XJxX) 2018/05/06(日)18:55 ID:9GXSG5IC0(7/10) AAS
>>367
カクカクした動きとチラつきを同一視しているわけではありません
>>364
が書いたように、今回の例だと黒い円が一瞬消えているような感じがします
移動量の x += 10; をもっと少なくすれば目立たなくなりますが、それでも
なんとなく嫌な感じがします
でも言葉で説明するのは難しいですね
省5
374: (ワッチョイ 03c3-XJxX) 2018/05/06(日)20:21 ID:9GXSG5IC0(8/10) AAS
>>370
ありがとうございます
私が確認しても、確かに上下で明らかにチラつきが違い、下ははっきりとわかります
上はほとんどわからないレベルですね

PictureBoxもPanelも、どちらも出来上がったビットマップを貼り付けているのですから
同じ表示になりそうな気がしますが違いますね
これをちゃんと理解できれば解決できそうです
376
(2): (ワッチョイ 03c3-XJxX) 2018/05/06(日)20:39 ID:9GXSG5IC0(9/10) AAS
>>372
私が「チラツキ」と表現しているのは、>>370が上げてくれたプログラムの
下側、panelで発生している現象です

私の理解では、>>370でなぜ表示に違いが生じるのかがわかりません
どちらも、加工後のcanvasを貼り付けているはずなのに

>>370でやっていることは、ダブルバッファリングではないのでしょうか?

>>370のプログラムを実行してみて、違いはPictureBoxをウィンドウに直接
省3
378: (ワッチョイ 03c3-XJxX) 2018/05/06(日)21:02 ID:9GXSG5IC0(10/10) AAS
>>377
試してみました
>>370と変わらない感じですね
これまで質問してきた趣旨とは変わってしまいますが、

Graphics g = Graphics.FromImage(pictureBox1.Image);

これでビットマップを書き換えた後に pictureBox1.Image を書き換えていないと
いうことは、いちいち canvas ビットマップを用意して細工しなくてもよかったと
省5
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.038s