현재 스마트 장치 프로젝트에서 곡선 진행률 막대를 작업 중입니다. OnPaint 함수를 재정의합니다.WinForm의 OnPaint - .NET Compact Framework 3.5
오버플로 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);
}
나는 OnPaint를 다시 그것을 다시 그리기 피하기 위해 배경으로 orginal 한 곡선 진행률 표시 줄을 끌기 위해 재정의 OnBackgroundPaint를 사용하는 것을 시도했다, 그러나 그것은 작동하지 않습니다. 양식이로드 될 때 어떤 것도 볼 수 없습니다. 어떤 아이디어?
사전에 도움을 주셔서 감사합니다.
감사 DrawLine의 부하가 실제 화면으로 호출하고, 매우 가능성이 깜박 거림이 발생할 것입니다
크리스, 도와 줘서 고마워. 결국, 나는 그것을 해결했다. Compact Framework에서 스레딩을 알고 있는지 물어볼 수 있습니까? 나는 그 순간에 문제가 있기 때문에. –