是这样的,我对一个二维数组进行插值计算,然后给每个点用SETPIXEL()赋予颜色和位置,就可以画一副图出来了。现在的想法是把这些点先画到内存里,然后再用STRECCHBIT。可是,我不知道怎么把这些个点画到内存里,找了些资料是画BMP图片的,有没有人能教教我锕,谢谢了

解决方案 »

  1.   

    你是画到内存还是显存?我理解的是你想画一幅图然后显示出来
    你这样,先建立一个bitmap,然后初始化,将对屏幕的操作转换为对该bitmap的操作
    然后把bitmap显示出来就好了要是显存的话,就要理解一下翻页机制了,估计你用不到啊
      

  2.   

    创建一个内存DC然后调用CDC::SetPixel就是画点了
      

  3.   

    根据当前窗口的dc创建一个memory dc,然后在memory dc上画好,最后贴到屏幕了
      

  4.   

    3楼正解.
    "创建一个内存DC然后调用CDC::SetPixel就是画点了"程序是运行在内存中的, 通过对像句柄可进行操作, 画点,画线,画面,保存到其它地方等操作.
      

  5.   

    这个“锕”字很有特点。可以把位图选到内存DC来绘制,然后把内存DC贴到界面上。
      

  6.   

    在ONDRAW里加入
    CRect   rect;   
      GetClientRect(&rect);   
      CDC   dc;   
      
     CBitmap   bm;   
      bm.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
     dc.CreateCompatibleDC(pDC);   
       dc.SelectObject(bm);
       dc.Rectangle(&rect);   
      for (int a=0;a<1500;a++)
      {
      for (int b=0;b<100;b++)
      {
            dc.SetPixel(a+500,b+100,RGB(a+100,255,255));
         //pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);   
      }
     //  pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,rect.Width(),rect.Height(),SRCCOPY ); 
      }
      DeleteObject(bm);   
      DeleteObject(dc); 但是没能达到效果。怎么办阿!!!!!!
      

  7.   

    说明你资料找对了啊,在内存里绘图,是离不开BMP的。
    首先创建一个内存DC,然后再创建一幅内存BMP,把这个BMP选入刚才创建的内存DC里,你就可以使用GDI函数绘图和复制了。用完后,别忘了销毁位图和DC。
      

  8.   

    如果用SetPixel,加StretchBlt,等于先画好再缩放一次,这样效率不高,图像大的话会很慢的,我觉得还是应该用Dib的结构,先创建一个Dib,然后根据二维数组逐点写dib,最后直接StretchDIBits