MFC 中OnTimer()函数 想实现的是:画一个圆,圆的颜色随时间变化 为什么颜色不变?

时间:2021-01-22 00:21:59
想实现的是:画一个圆,圆的颜色随时间变化   为什么颜色不变?

void CWork00View::OnDraw(CDC* pDC)
{
CWork00Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CBrush brush(m_color);
CBrush *oldbrush=pDC->SelectObject(&brush);
pDC->Ellipse(m_rect);
pDC->SelectObject(oldbrush);
// TODO: add draw code for native data here
}

void CWork00View::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
SetTimer(1,1000,NULL);
int x=0,y=0,z=0;
x+=10;
y+=10;
z+=10;
         m_color=(RGB(x,y,z));
InvalidateRect(NULL);
CView::OnTimer(nIDEvent);
}

5 个解决方案

#1


static int x=0,y=0,z=0;

#2


m_color应该是静态的吧,而且你的定时器设置也有点问题吧

#3


SetTimer(1,1000,NULL);放在其他地方,比如放在一个按钮的事件中,其他应该没什么问题;

#4


前面基本都说出来了。
X Y 不能设置为局部变量,
SetTime()应该放在其他函数内面,他的意思是在执行到这条语句的时候
调用Ontime(),时间间隔是1000MS调用一次

#5


前面基本都说出来了。
X Y 不能设置为局部变量,
SetTime()应该放在其他函数内面,他的意思是在执行到这条语句的时候
调用Ontime(),时间间隔是1000MS调用一次

#1


static int x=0,y=0,z=0;

#2


m_color应该是静态的吧,而且你的定时器设置也有点问题吧

#3


SetTimer(1,1000,NULL);放在其他地方,比如放在一个按钮的事件中,其他应该没什么问题;

#4


前面基本都说出来了。
X Y 不能设置为局部变量,
SetTime()应该放在其他函数内面,他的意思是在执行到这条语句的时候
调用Ontime(),时间间隔是1000MS调用一次

#5


前面基本都说出来了。
X Y 不能设置为局部变量,
SetTime()应该放在其他函数内面,他的意思是在执行到这条语句的时候
调用Ontime(),时间间隔是1000MS调用一次