vc 位图 cdc

来源:百度知道 编辑:UC知道 时间:2024/06/05 07:51:46
我创建屏幕dc,然后把屏幕拷进pdc:
CDC scrdc;
scrdc.CreateDC("DISPLAY",NULL,NULL,NULL);
pDC->BitBlt(20,20,300,300,&scrdc,0,0,SRCCOPY);

现在位图是设备相关呢,还是无关呢?他是256色还是真彩色,还是16位跟什么有关?跟我屏幕的设置?是不是设备相关的位图都在内存里存在。我可以处理他的数据吗?比如替换某种颜色位黑色,或其他颜色?请高手说通俗点啊;

你的理解是正确的。数据也是可以处理的。怎么处理,你看下,就这两天我在其它人问的问题里已经有一些回答了。
要用通俗一点的话来将实在没法说,要讲的内容太多了。如果你在我身边,我倒可以一边演示,一边说,2个小时可以让你理解7,8成。呵呵,我估计我自己也只懂7,8成。
两个地方的百度帖子,一个是人家贴出来的代码,一个是我在他另一个帖子里回的代码和一些解释。你可以看下。自己研究的话,我估计要2,3个小时能理解里面的一些数据结构。希望你能耐心点,我觉得你的水平还是不错的(从你问的问题里推断)。
主要研究的内容:
1)CDC.GetCurrentBitmap() ,CBitmap.GetBitmap();
2)BITMAP, BITMAPINFO;
3)SetDIBitsToDevice
4)GetDIBits
5)16,256色是有调色板的,意思是:
所有的位图数据放的都不是每个点的真实颜色,而是一个索引值。
调色板是个数组,16色位图,就是指调色板有16个元素,每个元素有一种颜色,而前面提到的索引值就是存储对应调色板的颜色。
如:坐标(1,1)上的点值为2,就是说它的颜色是在 调色板[2]里指定的颜色。譬如调色板[2]设为绿色,那么(1,1)上的颜色为绿色。这个就是调色板的概念。引入调色板,使每个点只需要用8位就能指定它自己的颜色了(256色位图)。节约显卡的内存。
6)PALETTEENTRY是调色板的数据结构。
关于位图的知识点会涉及到很多方面,无法一一细数。愿意的话,先研究下我说的内容吧。

1:http://zhidao.baidu.com/question/87208745.html
2:在vc中,我要用cdc给CStatic控件加载位图,在SelectObject()后,为什么还要BitBlt()呢? VC++ 位图显示问题 关于VC++里的CDC指针问题 vc编程,找不到onDraw(CDC* pDC) 用VC怎样显示位图? VC++ 实现位图沿直线运动 关于使用VC++添加位图资源! 利用MFC和VC++,显示一个位图。 VC++中位图拖动的问题 在VC++中CDC有那些派生类,他们的作用是什么?