
MFC 在picture控件中画图可是不显示20分在线等急急急急
我在对话框里增加了一个picture控件,关联了一个CString变量picone,想画一个统计图,在控件所在对话框类添加了一个onpaint函数,我在oninitdia...
我在对话框里增加了一个picture控件,关联了一个CString变量picone,想画一个统计图,在控件所在对话框类添加了一个onpaint函数,我在oninitdialog里调用了它(我其实不会用ONPAINT,这是自己乱想的),但是运行时picture里什么都没有啊,到底该怎么办???下面是我的onpaint里代码,其中number是对话框类的一个成员npic也是,但我对npic赋值是在声明了对话框对象之后不知道会不会有问题
CPen newpen(PS_SOLID,2,RGB(0,0,0));
CRect r;
CDC *pDC=picone.GetDC();
picone.GetClientRect(&r);
CPen *oldpen;
oldpen=pDC->SelectObject(&newpen);
number[0]=10;
number[1]=_ttoi(npic2);
number[2]=_ttoi(npic3);
number[3]=_ttoi(npic4);
pDC->MoveTo(r.left,r.bottom);
float xlen=r.Width()/5;
float ylen=r.Height()/10;
pDC->LineTo(r.left+xlen,number[0]*ylen+r.bottom); 展开
CPen newpen(PS_SOLID,2,RGB(0,0,0));
CRect r;
CDC *pDC=picone.GetDC();
picone.GetClientRect(&r);
CPen *oldpen;
oldpen=pDC->SelectObject(&newpen);
number[0]=10;
number[1]=_ttoi(npic2);
number[2]=_ttoi(npic3);
number[3]=_ttoi(npic4);
pDC->MoveTo(r.left,r.bottom);
float xlen=r.Width()/5;
float ylen=r.Height()/10;
pDC->LineTo(r.left+xlen,number[0]*ylen+r.bottom); 展开
2个回答
展开全部
oninitdialog是对话框初始化函数,这个函数被调用后,默认会调用一次Invalidate,触发重绘。因此在该函数内的绘图操作是无效的,重绘会调用Onpaint函数,将这里的绘图覆盖掉,不要在这里调用OnPaint。
如果这个代码在标准的消息WM_PAINT重载函数OnPaint中(通过ClassWizard等重写得到),那么代码本身没有问题,在资源中看看图片框属性,选中“自绘”选项。
如果这个代码在标准的消息WM_PAINT重载函数OnPaint中(通过ClassWizard等重写得到),那么代码本身没有问题,在资源中看看图片框属性,选中“自绘”选项。
2014-09-21
展开全部
关联控件变量CStatic...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询