在内存DC中画线条,要求有颜色,可是发现怎么设置CPen 都是是黑的,查了下,
如下说:
因为CDC是内存设备上下文,在构造时便自动构造了一个黑白的位图,所以   
  bitmap.CreateCompatibleBitmap(&dcMemory,   m_ImageColCount,   m_ImageRowCount);   
  便会建立一个黑白的位图,画出来就自然是黑白的了。   
    
  但如果改成   
  bitmap.CreateCompatibleBitmap(&dc,   m_ImageColCount,   m_ImageRowCount);   
  就好了,因为真实dc是用彩色位图的。 理解归理解,不过,总得解决呀,知道的朋友告我一声,多谢了!!~

解决方案 »

  1.   

    bitmap.CreateCompatibleBitmap(&dcMemory,  m_ImageColCount,  m_ImageRowCount);  
    -------------------------
    就是创建一个兼容内存位图,至于默认的颜色你可以不管它是什么颜色
    你要修改这个位图背景就创建一个画刷FillRect OK 了线条是什么颜色 CPen 构造时允许你设置颜色的呀
      

  2.   

    是这个样子的 ,按照上面的理解呢,内存DC只有黑白两种颜色,真实DC是彩色.
    换句话说,不管你在内存DC中给CPEN指定什么颜色,他就只有黑白两种.我主要是用到双缓冲做东西
      

  3.   

    管你什么双缓冲,三缓冲 四缓冲也是一个道理的不要用GDI默认的属性就可以了嘛
    比如你写字,默认的字体不一定符合你,你可以创建一个字体选进DC,然后就得到自己想要的了嘛
    画线的默认画笔是黑色的,你可以创建一个红色的画笔,选进DC 然后再作图..
      

  4.   

    我所有的操作都在内存DC中进行,然后通过一个Render(CDC *pDC)把内存DC贴到真实DC上.
    问题的关键在于内存DC不支持彩色,所以,我在内存DC中所有的选色过程都是失败的.你说的东西我理解,在OnPain里直接用系统的dc确实可以画出彩色的东西
    可是用内存DC就不行,我希望能有解决的办法
      

  5.   

    bitmap.CreateCompatibleBitmap(pDC, m_ImageColCount, m_ImageRowCount); // 要用屏幕DC而不是内存DC作为创建内存位图的参数