摘 该文述Windows窗口中显示幅彩色图技术实现方法提供优化程序压缩原图颜色数量
关键词 调色板 Windows 图处理 目前数微机中配置高性TVGASVGA图形卡图形卡中红绿蓝三元色占六位颜色总数占18位显示262144种颜色更高级图形卡中甚达24位真彩色
调色板技术窗口显示256种颜色副图具独立256调色板显示时更换调色板便满足幅图颜色求
然某应中求窗口中显示两幅甚更彩色图果常规设计窗口中正确显示中幅图图调色板更换颜色会混乱
开发媒体查询系统——山东省旅游资源查询子系统时系统求幅山东省彩色图背景然旅游景点设置触摸钮户触摸该钮时窗口右部分显示该景点彩色图
果图特殊处理显示该景点彩色图时更换该窗口调色板背景图颜色失真
解决问题图做特殊处理背景图景点图调色板发生突
时考虑Windows占前20调色板般情况允许更改
根系统实际情况调色板做布置第0~19号调色板Windows系统保留第20~148号调色板背景图旦背景图更改第149~255号调色板景点图显示景点图时时更改调色板
定义PALETTEENTRY类型数组palette[256]保存颜色分量
该类型Windows定义种结构 typedef struct { BYTE peRed *调色板项红色饱度* BYTE peGreen*调色板项绿色饱度* BYTE peBlue *调色板项蓝色饱度* BYTE peFlags*NULLPCEXPLICITPCNOCOLLAPSE般取PCEXPLICIT* } PALETTEENTRY
样背景图第20~148号调色板景点图第149~255号调色板分放入pal ette[20]~palette[255]中然列步骤实现该调色板
1定义HDC hdc HPALETTE whp LOGPALETTE *pal 2pal赋值 pal(NPLOGPALETTE)LocalAlloc(LMEMFIXED sizeof(LOGPALETTE) 256*sizeof(PALETTEENTRY)) pal>palVersion0X300* pal>palNumEntries256 memcpy(pal>palPalEntry[0]&palette[0] 256*sizeof(PALETTEENTRY) 3实现该调色板 hdcGetDC(hWnd) whpCreatePalette((LPLOGPALETTE)pal) whpSelectPalette(hdcwhp0) RealizePalette(hdc) LocalFree(HANDLE)pal) 中hWnd显示图窗口句柄
述步骤实现该调色板读入显示图然映射hdc中
文提供程序cpcolorc实现BMP格式图256色压缩成(color2color1 1)色颜色号限制color1color2范围
程序执行格式 cpcolor图文件名 颜色限 颜色限程序优化方法效果良
* 源程序cpcolorc * #include #include #include unsigned char palette[256][4] long TAB[256] unsigned char TT[256]BB[256] int widthdepthbytes * 该函数开图文件读图宽高调色板颜色分量文件指针指图开始处* FILE *getbitmapfile(char*fname) { unsigned char ch int ijn FILE *fp fpfopen(fnamerb ) if (fpNULL) return NULL fseek(fp18LSEEKSET) fread(&width21fp)fseek(fp2LSEEKCUR) fread(&depth21fp)fseek(fp2LSEEKCUR) nwidth4 if (width4 0) n bytesn*4 fseek(fp54LSEEKSET) fread(&palette[0][0]4256fp) return fp } *该函数实现颜色压缩* void zh_fantu(FILE *fpint color1int color2) { unsigned char *p*qccch long len int maxno ijmnr0b0g0r1b1g1 double dddmin char s[4] maxnocolor2color1 1 for (i0i<256i ) TAB[i]0 p(char *)malloc(bytes 1) for (i0i
关键词 调色板 Windows 图处理 目前数微机中配置高性TVGASVGA图形卡图形卡中红绿蓝三元色占六位颜色总数占18位显示262144种颜色更高级图形卡中甚达24位真彩色
调色板技术窗口显示256种颜色副图具独立256调色板显示时更换调色板便满足幅图颜色求
然某应中求窗口中显示两幅甚更彩色图果常规设计窗口中正确显示中幅图图调色板更换颜色会混乱
开发媒体查询系统——山东省旅游资源查询子系统时系统求幅山东省彩色图背景然旅游景点设置触摸钮户触摸该钮时窗口右部分显示该景点彩色图
果图特殊处理显示该景点彩色图时更换该窗口调色板背景图颜色失真
解决问题图做特殊处理背景图景点图调色板发生突
时考虑Windows占前20调色板般情况允许更改
根系统实际情况调色板做布置第0~19号调色板Windows系统保留第20~148号调色板背景图旦背景图更改第149~255号调色板景点图显示景点图时时更改调色板
定义PALETTEENTRY类型数组palette[256]保存颜色分量
该类型Windows定义种结构 typedef struct { BYTE peRed *调色板项红色饱度* BYTE peGreen*调色板项绿色饱度* BYTE peBlue *调色板项蓝色饱度* BYTE peFlags*NULLPCEXPLICITPCNOCOLLAPSE般取PCEXPLICIT* } PALETTEENTRY 样背景图第20~148号调色板景点图第149~255号调色板分放入pal ette[20]~palette[255]中然列步骤实现该调色板
1定义HDC hdc HPALETTE whp LOGPALETTE *pal 2pal赋值 pal(NPLOGPALETTE)LocalAlloc(LMEMFIXED sizeof(LOGPALETTE) 256*sizeof(PALETTEENTRY)) pal>palVersion0X300* pal>palNumEntries256 memcpy(pal>palPalEntry[0]&palette[0] 256*sizeof(PALETTEENTRY) 3实现该调色板 hdcGetDC(hWnd) whpCreatePalette((LPLOGPALETTE)pal) whpSelectPalette(hdcwhp0) RealizePalette(hdc) LocalFree(HANDLE)pal) 中hWnd显示图窗口句柄
述步骤实现该调色板读入显示图然映射hdc中
文提供程序cpcolorc实现BMP格式图256色压缩成(color2color1 1)色颜色号限制color1color2范围
程序执行格式 cpcolor图文件名 颜色限 颜色限程序优化方法效果良
* 源程序cpcolorc * #include #include #include unsigned char palette[256][4] long TAB[256] unsigned char TT[256]BB[256] int widthdepthbytes * 该函数开图文件读图宽高调色板颜色分量文件指针指图开始处* FILE *getbitmapfile(char*fname) { unsigned char ch int ijn FILE *fp fpfopen(fnamerb ) if (fpNULL) return NULL fseek(fp18LSEEKSET) fread(&width21fp)fseek(fp2LSEEKCUR) fread(&depth21fp)fseek(fp2LSEEKCUR) nwidth4 if (width4 0) n bytesn*4 fseek(fp54LSEEKSET) fread(&palette[0][0]4256fp) return fp } *该函数实现颜色压缩* void zh_fantu(FILE *fpint color1int color2) { unsigned char *p*qccch long len int maxno ijmnr0b0g0r1b1g1 double dddmin char s[4] maxnocolor2color1 1 for (i0i<256i ) TAB[i]0 p(char *)malloc(bytes 1) for (i0i
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档