オーディオ ファイルの波形を表示するカスタム ユーザー コントロールがあります。コントロールの 2 つのインスタンスをフォームに配置しました。2 番目のインスタンスは期待どおりに機能しますが、最初のインスタンスは前述の問題を引き起こします。
私がやっていることは、現在の位置を示す垂直 (赤) 線を描画することです。この問題は、YouTube ビデオで最もよく見られます。
これは私のカスタム コントローラーのコードです (OnPaint() - 赤い縦線の影響を受ける領域のみを無効にしていることに注意してください)。
protected override void OnPaint(PaintEventArgs e)
{
[...]
Invalidate(new Rectangle(x_pos-5, 0, x_pos, this.Height));
using (Pen linePen = new Pen(Color.Red, 1.5f))
{
e.Graphics.DrawLine(linePen, x_pos, 0, x_pos, this.Height);
Invalidate(new Rectangle(x_pos-2,0,x_pos+2,this.Height));
}
base.OnPaint(e);
}
Q: OnPaint メソッドは両方のコントロールで同等ですが、最初のコントロール (波形) を再描画するためにウィンドウを移動する必要があるのはなぜですか?