2021/07/14(Wed) 20:09:56 編集(投稿者)
詳細なご回答ありがとうございます。
http://jumbofoot.cocolog-nifty.com/yass_vbnet_tips/2005/10/post_b019.html
のコードを試してみましたが、
私の環境ではダブルバッファー有りと無しを比較して違いは見られませんでした。
Win10を使っていて
システムのプロパティのパフォーマンスで
デザインを優先にすると、オンオフに拘わらず書き換える作業が現れませんでした。
パフォーマンスを優先にすると、オンオフに拘わらず書き換える作業が現れました。
一方で、
Private Sub TableLayoutPanel12_CellPaint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TableLayoutCellPaintEventArgs) Handles TableLayoutPanel12.CellPaint
Dim g As Graphics = e.Graphics
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
'一つおきにセルの背景色を変更する
If (e.Column Mod 2 = 1) Xor (e.Row Mod 2 = 1) Then
e.Graphics.FillRectangle(Brushes.LightSkyBlue, e.CellBounds)
End If
End Sub
というコードに関してダブルバッファー有りと無しを比較すると
大きな差異が現れました。
明らかにバッファー無しにするとちらつきが出てきます。
ただし、
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
をコメントアウトすると、
やはりダブルバッファー有りと無しに拘わらずちらつきは現れません。
もしかすると、上記の記事はVB2005のものなので
今だと仕様が変更になっているのではないでしょうか?
何となく、古いバージョンだと、
TableLayoutPanel上に配置されたボタンなどのコントロールも
TableLayoutPanelのバッファリングの影響を受けるが、
新しいバージョンだと配置されたコントロールは影響を受けず
TableLayoutPanelのPaintに描画されたものだけが影響を受けるということはないでしょうか?
あるいは、私の環境や設定が何か間違っているのでしょうか?
あと、PictureBoxの位置に関する情報ありがとうございます。