利用MFC的SetTimer、OnTimer和OnDraw实现图形形变

来源:百度知道 编辑:UC知道 时间:2024/05/31 05:02:04
代码如下:因为初始化了ituxing=0,所以只画了一个三角形就完了。请高手指教!最好能调出来。
CMy1_1View::CMy1_1View()
{
// TODO: add construction code here
ituxing=0;
}
void CMy1_1View::OnDraw(CDC* pDC)
{
CMy1_1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here

//清除当前图形

CBrush mybrush1;

mybrush1.CreateSolidBrush(RGB(192,250,233));

CRect myrect1(0,0,1024,768);

pDC->FillRect(myrect1,&mybrush1);

//判断当前图形ituxing

if(ituxing==1)

//ituxing=1,画矩形

pDC->Rectangle(100,100,400,400);

else if(ituxing==2)

//ituxing=2,画圆

pDC->Ellipse(20,20,89,89);

else

//否则,画三角形

{

pDC->MoveTo(100,100);

pDC->LineTo(189,145);

pDC->LineTo(100,189);

pDC->LineTo(100,100);

}
}

vo

你是想循环画方、圆、三角形吧?很简单,在ontimer中语句ituxing=(ituxing+1)%3;前执行ituxing++就可以了。
那你的问题是什么,你到底想问什么?
我用你的代码,方,圆,三角形都出来了,而且一直不断变化
突然想起来,你的ontimer,还有oncreate都是通过映射消息添加的么,只有通过映射消息添加的才有用,否则这函数实际不执行什么的

在OnTimer里面你GetDC后没有释放,以后的GetDC就不可能成功了。