在OnPaint() 中加入代码画图,可以实现
但是程序一开启,似乎并不会去调用OnPaint()函数
导致我的图一开始没有被画出来
然后是当有其他窗体挡住了我整个应用程序[有其他应用程序完全挡住]
然后我再让我的应用程序最前端,发现图片没有了
被遮住一部分,可以显示出来,非常正常
那么前面的问题应该怎么解决呢,大家帮忙啦,谢谢
但是程序一开启,似乎并不会去调用OnPaint()函数
导致我的图一开始没有被画出来
然后是当有其他窗体挡住了我整个应用程序[有其他应用程序完全挡住]
然后我再让我的应用程序最前端,发现图片没有了
被遮住一部分,可以显示出来,非常正常
那么前面的问题应该怎么解决呢,大家帮忙啦,谢谢
如果调用了没理由没有显示
如果我在Dlg::OnInitDialog()
中加入PostMessage(WM_PAINT,0,0);//触发OnPaint()函数
一开启程序就可以显示
我的程序又不会自动响应它刚才被其他窗体覆盖了
然后自动去调用你说的Invalidate
{
CPen penX,penY,penZ,penT,*oldpen;
penX.CreatePen(PS_SOLID,1,RGB(255,0,0));
penY.CreatePen(PS_SOLID,1,RGB(0,255,0));
penZ.CreatePen(PS_SOLID,1,RGB(0,0,255));
penT.CreatePen(PS_SOLID,1,RGB(0,0,0)); double x1,x2;
int i;
int X=0;
double OriginX,OriginY,OriginZ;//原点坐标
double OffsetX=50,OffsetY=100;//横,纵坐标偏移量
OriginX=_points[0]._x;
OriginY=_points[0]._y;
OriginZ=_points[0]._z; //画出时间横轴
oldpen = _cdc->SelectObject(&penT);
_cdc->MoveTo(0,OffsetY);
_cdc->LineTo(800,OffsetY);
_cdc->SelectObject(oldpen);
//画出X坐标偏移
oldpen = _cdc->SelectObject(&penX);
for(i=0;i<_counter;i++)
{
x1=(OriginX-_points[i]._x)+OffsetY;
x2=(OriginX-_points[i+1]._x)+OffsetY;
_cdc->MoveTo(X,x1);
X+=OffsetX;
_cdc->LineTo(X,x2);
}
_cdc->SelectObject(oldpen); //画出Y坐标偏移
oldpen = _cdc->SelectObject(&penY);
X=0;
for(i=0;i<_counter;i++)
{
x1=(OriginY-_points[i]._y)+OffsetY;
x2=(OriginY-_points[i+1]._y)+OffsetY;
_cdc->MoveTo(X,x1);
X+=OffsetX;
_cdc->LineTo(X,x2);
}
_cdc->SelectObject(oldpen); //画出Z坐标偏移
oldpen = _cdc->SelectObject(&penZ);
X=0;
for(i=0;i<_counter;i++)
{
x1=(OriginZ-_points[i]._z)+OffsetY;
x2=(OriginZ-_points[i+1]._z)+OffsetY;
_cdc->MoveTo(X,x1);
X+=OffsetX;
_cdc->LineTo(X,x2);
}
_cdc->SelectObject(oldpen); if (IsIconic())
{
CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
dc.DrawIcon(x, y, m_hIcon); }
else
{
CDialog::OnPaint();
}
}
_cdc就是picture控件的CDC,
初始化什么是没有问题的
如果有问题就不会有时候可以画出来有时候不可以画出来了哦
CDC *_cdc;
_cdc = pitShow.GetDC();