我有一个自定义用户控件,它显示音频文件的波形。我在表单上放置了两个控件实例。第二个实例按预期工作,而第一个实例导致提到的问题。
我正在做的是绘制一条垂直(红色)线,指示当前位置。这个问题最好在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);
}
问:由于两个控件的 OnPaint 方法是等效的,为什么我需要移动窗口来重新绘制第一个控件(波形)?