急~~还是关于CBitmap
我要加3个DWORD的颜色掩码!就是怎么添加调色板啊!
怎么添加啊?
感觉CBitmap封装的实在太差了啊!
问题点数:20、回复次数:22Top
1 楼lsaturn(土星-站了一晚)回复于 2003-12-03 23:02:45 得分 0
up以下!Top
2 楼lsaturn(土星-站了一晚)回复于 2003-12-04 10:07:01 得分 0
CBitmap的CreateBitmap成员函数如下!
BOOL CreateBitmap(
int nWidth,
int nHeight,
UINT nPlanes,
UINT nBitcount,
const void* lpBits
);
const void* lpBits 指的是什么?
怎么生成带调色板的CBitmap呢?Top
3 楼bluesmile979(笑着)回复于 2003-12-04 10:17:42 得分 1
CColorDialog vc 自带的调色板,你可以调用这个来完成你的要求Top
4 楼lsaturn(土星-站了一晚)回复于 2003-12-04 10:25:32 得分 0
楼上的
可以说清楚一些吗?Top
5 楼csdn3141()回复于 2003-12-04 11:04:30 得分 5
同情!关注!
难!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
我这两天共发了350分的帖子就问这个问题,也没有一个高手出现!借你的宝地把我原帖沾下来:
(我的分用完了)
我想要做的是:要显示的:二值图像(大于屏幕),识别的物体轮廓线,想要根据
用户设置图像前景色,背景色,物体轮廓色,现已有二值图像数据Ar,识别的
物体轮廓线二值图像数据Ar,我的想法是:为了减少内存占用,生成16色内存
位图CBitmap,
位图每像素:00:前景色,01:背景色,02:轮廓
根据用户设置改变调色板00,01,02颜色值,OnDraw中拷贝到pDC,来达到改变颜色的目的,
可行吗?
如何利用二值图像阵列生成16色CBitmap?,仅仅从一个二值图像数据Ar生成16色CBitmap即可!
有关问题:
问题一:
CBitmap::CreateBitmap(...,调色板个数,每像素位数,数据阵列)函数参数
为何只有调色板个数,那么调色板阵列靠什么初始化?数据阵列是否含有调色板数据,还是只包含像素数据?
问题二:
CDC 中既有CBitmap,又有CPalette,位图本身不是含有调色板吗,CPalette
与位图自身的调色板有何区别?如果SelectObject一16色位图,则此DC是否
只能显示16色,是否只能SelectObject()16色调色板呢?
Top
6 楼lsaturn(土星-站了一晚)回复于 2003-12-04 13:23:27 得分 0
好象是不是没有人搞得懂GDI啊?
应该说做过的都知道啊?Top
7 楼checkyvc6(已所不欲,勿施于人)回复于 2003-12-04 14:05:47 得分 0
to csdn3141() :
我想你对dib和ddb两种类型的bmp图像没有弄清楚吗?
我觉得可能是你的分太少的缘故吧!Top
8 楼lsaturn(土星-站了一晚)回复于 2003-12-04 14:07:14 得分 0
分这么重要吗?问的问题不是很难吧?Top
9 楼csdn3141()回复于 2003-12-04 14:12:05 得分 0
1.如何利用一个二值图像数据阵列Ar生成16色CBitmap?
楼上的,清说出你如何实现????
或者请说明:根本实现不了????
到我的帖,我给分!!!!!!!!!Top
10 楼lsaturn(土星-站了一晚)回复于 2003-12-09 09:59:20 得分 0
我帮你给分:)Top
11 楼114sky(好人好报)回复于 2003-12-09 17:45:49 得分 0
upTop
12 楼glacierrr(冰河纪的怪鸟)回复于 2003-12-09 17:59:18 得分 0
就是设备有关和设备无关位图的使用了,看看msdn中dib的部分就可以了Top
13 楼lsaturn(土星-站了一晚)回复于 2003-12-12 12:20:03 得分 0
upTop
14 楼playlynx(阿土)回复于 2003-12-13 13:33:25 得分 1
upTop
15 楼weekeed(流烟飞雨)回复于 2003-12-13 16:18:19 得分 1
up!!Top
16 楼typhoon20(小黄鱼)回复于 2003-12-13 17:14:04 得分 1
我也帮你upTop
17 楼lambochan(打杂)回复于 2003-12-13 17:37:05 得分 5
CBitmap封装的是基于DDB的功能,去理解一下DDB和DIB的概念吧(包括调色板):
http://fjdx.fj.cninfo.net/school/bczn/vc++/chap11_1.htmTop
18 楼lsaturn(土星-站了一晚)回复于 2003-12-13 18:14:32 得分 0
好文,那么是不是CBitmap中只有信息头和文件头以及有效数据
调色板是利用CPalette来实现的?
绘制时在dc中把Palette选进?
那么如果我想保存一张完整的Bitmap
又应该怎么做?
我的bitmap所有都是动态生成的,而不是由LoadBitmap进来的!Top
19 楼lsaturn(土星-站了一晚)回复于 2003-12-13 18:20:47 得分 0
看了之后感觉对DDB和DIB还是没有分的十分的清楚!Top
20 楼baoyuhua(榕树)回复于 2003-12-13 18:33:56 得分 1
const void* lpBits 指得是位图的像素位在内存中相对于位图文件头的偏移地址,位图在内存中由文件头,信息头,以及像素位(也就是实际图像的像素)组成
CreateCompatibleBitmap()可生成与当前显示模式兼容的DDB,CreateBitmap()生成单色位图或用户指定格式的位图。
CPalette是由用户生成的逻辑调色板,可用于绘图Top
21 楼baoyuhua(榕树)回复于 2003-12-13 21:19:37 得分 5
更正:const void* lpBits 指向内存中像素位首地址Top
22 楼lsaturn(土星-站了一晚)回复于 2003-12-13 22:42:28 得分 0
gdi编程不简单啊!Top




