内存画线 无颜色

cuomj 2008-06-25 02:38:00
在内存DC中画线条,要求有颜色,可是发现怎么设置CPen 都是是黑的,查了下,
如下说:
因为CDC是内存设备上下文,在构造时便自动构造了一个黑白的位图,所以
bitmap.CreateCompatibleBitmap(&dcMemory, m_ImageColCount, m_ImageRowCount);
便会建立一个黑白的位图,画出来就自然是黑白的了。

但如果改成
bitmap.CreateCompatibleBitmap(&dc, m_ImageColCount, m_ImageRowCount);
就好了,因为真实dc是用彩色位图的。

理解归理解,不过,总得解决呀,知道的朋友告我一声,多谢了!!~
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuomj 2008-06-25
  • 打赏
  • 举报
回复
恩 看来只能这样了,做控件就是麻烦,结了
菜牛 2008-06-25
  • 打赏
  • 举报
回复
bitmap.CreateCompatibleBitmap(pDC, m_ImageColCount, m_ImageRowCount); // 要用屏幕DC而不是内存DC作为创建内存位图的参数
hurryboylqs 2008-06-25
  • 打赏
  • 举报
回复
创建的内存位图跟屏幕DC兼容就可以了
cuomj 2008-06-25
  • 打赏
  • 举报
回复
我所有的操作都在内存DC中进行,然后通过一个Render(CDC *pDC)把内存DC贴到真实DC上.
问题的关键在于内存DC不支持彩色,所以,我在内存DC中所有的选色过程都是失败的.

你说的东西我理解,在OnPain里直接用系统的dc确实可以画出彩色的东西
可是用内存DC就不行,我希望能有解决的办法
hurryboylqs 2008-06-25
  • 打赏
  • 举报
回复
管你什么双缓冲,三缓冲 四缓冲也是一个道理的

不要用GDI默认的属性就可以了嘛
比如你写字,默认的字体不一定符合你,你可以创建一个字体选进DC,然后就得到自己想要的了嘛
画线的默认画笔是黑色的,你可以创建一个红色的画笔,选进DC 然后再作图..
cuomj 2008-06-25
  • 打赏
  • 举报
回复
是这个样子的 ,按照上面的理解呢,内存DC只有黑白两种颜色,真实DC是彩色.
换句话说,不管你在内存DC中给CPEN指定什么颜色,他就只有黑白两种.

我主要是用到双缓冲做东西
hurryboylqs 2008-06-25
  • 打赏
  • 举报
回复
bitmap.CreateCompatibleBitmap(&dcMemory, m_ImageColCount, m_ImageRowCount);
-------------------------
就是创建一个兼容内存位图,至于默认的颜色你可以不管它是什么颜色
你要修改这个位图背景就创建一个画刷FillRect OK 了

线条是什么颜色 CPen 构造时允许你设置颜色的呀

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧