我只是试了一下,它在发布模式下达到了我的预期。. . 它用蓝色和一个大黄色椭圆填充面板。请发布重现问题所需的最少示例代码。. . 也许在下面的 MyPanel 基础上构建。
计时器的作用是确保我们不会过于频繁地重绘。这是一个自动终止计时器,它强制重新绘制整个控件。这是必需的,因为自定义绘制的内容大小与控件有关。
public class MyPanel : Panel
{
Timer _resizeRedrawDelayTimer = new Timer();
public MyPanel()
{
_resizeRedrawDelayTimer.Interval=50;
_resizeRedrawDelayTimer.Tick += new EventHandler(_resizeRedrawDelayTimer_Tick);
}
void _resizeRedrawDelayTimer_Tick(object sender, EventArgs e)
{
Invalidate();
_resizeRedrawDelayTimer.Stop();
}
protected override void OnPaint(PaintEventArgs e)
{
// don't redraw if still resizing.
if (!_resizeRedrawDelayTimer.Enabled)
{
e.Graphics.FillRectangle(Brushes.Blue, this.ClientRectangle);
e.Graphics.FillEllipse(Brushes.Yellow, this.ClientRectangle);
}
base.OnPaint(e);
}
protected override void OnResize(EventArgs eventargs)
{
if (_resizeRedrawDelayTimer.Enabled)
_resizeRedrawDelayTimer.Stop();
// restart the timer.
_resizeRedrawDelayTimer.Start();
base.OnResize(eventargs);
}
}