CImage类中关于SetColorTable()的使用

tiankong1399 2008-10-11 12:14:32
void SetColorTable(
UINT iFirstColor,
UINT nColors,
const RGBQUAD* prgbColors
) throw( );
其中,如何设置 UINT iFirstColor 这个参数??
下面是用来取出图像中全部调色板单元数据
void GetAllPalette(CImage *pImg, RGBQUAD *ColorTab)
{
struct IMAGEPARAMENT P;
GetImageParament(pImg, &P);
pImg->GetColorTable(0, P.nNumColors, ColorTab);
}
现在我要编写一个用来存储全部调色板单元数据的函数,如下,各位看看可以么,给些意见:
void SetAllPalette(CImage *pImg, RGBQUAD *ColorTab)
{
struct IMAGEPARAMENT P;
GetImageParament(pImg, &P);
pImg ->SetColorTable(0, p.nNumColors, ColorTab);
}
感觉不怎么行,但又不知道怎么弄,各位帮忙下,看看该怎么写这个函数,谢谢~!
...全文
834 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vidding 2008-10-13
  • 打赏
  • 举报
回复
如二楼所说,请注意这句代码:
ColorTable = new RGBQUAD[MaxColors];

我怀疑你GetPalette时传入的RGBQUAD指针有问题,所以SetPalette也有问题。
tiankong1399 2008-10-12
  • 打赏
  • 举报
回复
大家帮忙看看~!
phisherr 2008-10-12
  • 打赏
  • 举报
回复
iFirstColor
The color table index of the first entry to set.

一般都设置成0;应该不是这个地方出的问题


一般是这样用的:
  
  int MaxColors = image->GetMaxColorTableEntries();
  RGBQUAD* ColorTable;
  ColorTable = new RGBQUAD[MaxColors];
  image->GetColorTable(0,MaxColors,ColorTable);

  //某些处理

  image->SetColorTable(0,MaxColors,ColorTable);
  delete(ColorTable);
tiankong1399 2008-10-11
  • 打赏
  • 举报
回复
补充:IMAGEPARAMENT 是自己定义的一个用来取得图像参数的结构体。p.nNumColors取得的是调色板单元数。

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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