質問者
ダブルバッファリングについて。

質問
-
すべての返信
-
OptimizedDoubleBuffer の説明を見ると
AllPaintingInWmPaint も True にする必要があると記載されています。
さらに AllPaintingInWmPaint の説明をみると
UserPaint も True にする必要があると記載されています。上記の必要な設定を全て True にしてみてください。
でも私の場合 OptimizedDoubleBuffer だけ True にしても表示されなくなるといった現象は発生しなかったんですけど。
なにを継承したのでしょうか。また、.NET 2.0 から Control.DoubleBuffered プロパティが追加されました。
これを True にするだけでダブルバッファが実現されるようです。 -
継承したのはPanelです。
Controlにもしてみたのですが、
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.UserPaint, true);をすべてカスタムコントロールのコンストラクタに入れると、OnPaintで書いてある
線などが表示されません。
DoubleBuffered = true;
でも状況は同じです。
Graphics g = this.CreateGraphics();
Pen pen = new Pen(Color.Black, 1);
pen.DashStyle = DashStyle.Solid;
PointF vStartPoint = new PointF(0,0);
PointF vEndPoint = new PointF(0,Height);
g.DrawLine(pen, vStartPoint, vEndPoint);OnPaintのなかでのコードはこれだけです
なにか抜けているのでしょうか? -
igoigo さんからの引用 Graphics g = this.CreateGraphics();
Pen pen = new Pen(Color.Black, 1);
pen.DashStyle = DashStyle.Solid;
PointF vStartPoint = new PointF(0,0);
PointF vEndPoint = new PointF(0,Height);
g.DrawLine(pen, vStartPoint, vEndPoint);OnPaintのなかでのコードはこれだけです
Graphics は OnPaint の引数の pevent.Graphics を使用してできませんか。
OnPaint で使用するために作成されたものだからです。それと OnPaint 内では不要ですが、
Graphics を生成して使用済みになったら Dispose した方がいいでしょう。
使用済みのリソースを破棄するためです。 -
ダッチ さんからの引用 igoigo さんからの引用 Graphics g = this.CreateGraphics();
Pen pen = new Pen(Color.Black, 1);
pen.DashStyle = DashStyle.Solid;
PointF vStartPoint = new PointF(0,0);
PointF vEndPoint = new PointF(0,Height);
g.DrawLine(pen, vStartPoint, vEndPoint);OnPaintのなかでのコードはこれだけです
Graphics は OnPaint の引数の pevent.Graphics を使用してできませんか。
OnPaint で使用するために作成されたものだからです。それと OnPaint 内では不要ですが、
Graphics を生成して使用済みになったら Dispose した方がいいでしょう。
使用済みのリソースを破棄するためです。なるほど、了解しました。いろいろとご助言ありがとうございました。