void draw(CStatic *pstatic ,CStatic *qstatic ,int **flag)//参数是两个控件和一个矩阵
{
CRect lRect;
pstatic->GetWindowRect(&lRect);
lRect.NormalizeRect();
CRect rRect;
qstatic->GetWindowRect(&rRect);
rRect.NormalizeRect();
int dis=rRect.left-lRect.left; for(int i=lRect.left;i<=lRect.right;i++)
{
for(int j=lRect.top;j<=lRect.bottom;j++)
{
if(flag[i][j]==1)
{
 HDC hDC = ::GetDC(NULL);
 COLORREF clr = ::GetPixel(hDC,i, j );
 int red = GetRValue(clr);
 int blu = GetBValue(clr);
 int gre = GetGValue(clr);
 ::ReleaseDC(NULL, hDC);
 CClientDC dc(qstatic);
 dc.SetPixel(i+dis,j,RGB(red,gre,blu));
}
}
}
}
这个函数主要是想实现把一个控件中的图符合条件的部分复制到另一个控件中.矩阵的修改在另一个函数中,可以正确赋值.但是最终结果就是不能在第二个控件上正常绘制出图片来,甚至连原来控件上的图也没了.我刚学没多久,也不知道是什么问题,请大家帮忙帮我看看,谢谢了

解决方案 »

  1.   

    正常绘制出图片来?
    GDI的绘制是要用CBitmap和CDC一起互动的啊
    我只看到了SetPixel
      

  2.   

     HDC hDC = ::GetDC(NULL);
      COLORREF clr = ::GetPixel(hDC,i, j );
      int red = GetRValue(clr);
      int blu = GetBValue(clr);
      int gre = GetGValue(clr);
      ::ReleaseDC(NULL, hDC);//前六句话是获取第一个控件上图案的rgb
      CClientDC dc(qstatic);
      dc.SetPixel(i+dis,j,RGB(red,gre,blu));//然后这两句话是想通过画点来实现在第二个控件上复制图案
    请问我是还缺了什么语句吗?
      

  3.   

    你把SetPixel换成别的绘画函数试下
      

  4.   


    我在其他函数里面单独用到了lineto(),可以画线,但是用SetPixel却不能画点,请问这是为什么呢
      

  5.   

    CClientDC dc(qstatic); 
    这个你放到for循环之外