我目前正在研究智能设备项目中的弯曲进度条。我重写了 OnPaint 函数。
在 Override OnPaint() 函数中,我用深灰色绘制弯曲的进度条,用黄色绘制进度条的一部分,以反映进度条的变化值(例如 30%)。但是,当值不断变化时,我可以看到进度条的一部分颜色变为黄色。但是,弯曲的进度条本身也被重新绘制。有谁知道如何避免在值发生变化时重绘原始曲线进度条?这样当值发生变化时,它只用黄色重绘进度条的一部分,而不是用灰色重绘原始进度条。这是我在 OnPaint 函数中使用的代码。
protected override void OnPaint(PaintEventArgs e)
{
gx = e.Graphics;
// Draw the original curved progress bar
int intPosition1 = m_NumberOfSpoke;
for (int intCounter1 = 0; intCounter1 < m_NumberOfSpoke; intCounter1++)
{
intPosition1 = intPosition1 % m_NumberOfSpoke;
DrawLine(e.Graphics,
GetCoordinate(m_CenterPoint, m_InnerCircleRadius, m_Angles[intPosition1]),
GetCoordinate(m_CenterPoint, m_OuterCircleRadius, m_Angles[intPosition1]),
Color.DarkGray, m_SpokeThickness);
intPosition1++;
}
// Draw a part of the progress bar to reflect the changing current value(such as 30%)
int intPosition = CurrentValue;
for (int intCounter1 = 0; intCounter1 < CurrentValue; intCounter1++)
{
intPosition = intPosition % CurrentValue;
DrawLine(gx,
GetCoordinate(m_CenterPoint, m_InnerCircleRadius, m_Angles[intPosition]),
GetCoordinate(m_CenterPoint, m_OuterCircleRadius, m_Angles[intPosition]),
Color.Yellow, m_SpokeThickness);
intPosition++;
}
base.OnPaint(e);
}
我曾尝试使用 Override OnBackgroundPaint 将原始弯曲进度条绘制为背景,以避免在 OnPaint 中重新绘制它,但它不起作用。加载表单时我看不到任何东西。有任何想法吗?
感谢您提前提供任何帮助。
问候