怎样利用 CxImage 创建一幅png图像

JudeQShan 2010-01-27 05:29:21
int pix = 0;
CxImage image1(200,100,8,CXIMAGE_FORMAT_PNG);

for (i =100;i< 200 ;i++)
{
for (j= 50;j< 100; j++)
{
image1.SetPixelIndex(i,j,255);
pix = image1.GetPixelGray(i,j);
}
}
image1.Draw(hdc,rect,NULL);

有两个问题:1,pix 的值 始终等于0;
2,image1.Draw 画出来的图,始终是黑的,我是希望图像的右下角变成白色。
求高人解答!
...全文
349 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JudeQShan 2010-01-28
  • 打赏
  • 举报
回复
楼上的辛苦了,非常感谢您的解答!


本人实在愚笨,不会搞,能不能帮帮我,
1 读一幅图像,并且找到他的数据区
2 构造一幅空灰度图像,并且使得图像左边白,右边黑,然后显示出来。

再次叩谢!
lambochan 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 judeqshan 的回复:]
CRect rect(20,25,320,240);
if(image.Load(pictureName,CXIMAGE_FORMAT_PNG)){
  image.Draw(hdc,rect,NULL);
}
for (i =250;i < 300 ;i++)
{
for (j= 90;j < 110; j++)
{
      image.SetPixelIndex(i,j,255);
  pix = image.GetPixelGray(i,j);
}
}
  image.Draw(hdc,rect,NULL);
问题是这样的话:却可以设置Image的值啊。
[/Quote]

实际上你看看它的代码就知道了,当用Load()的时候,已经把png格式的解压为bmp了,其它的操作(包括显示实)际上是在bmp上操作..当操作完保存时,又要把操作后的bmp转换回png..
别以为用它的函数就是在操作png数据,实际上是经过了N步后的所得(间接的)。know?
所以实际上你的问题解决方法:就是用CxImage create个bmp,操作完后把它转为png
JudeQShan 2010-01-27
  • 打赏
  • 举报
回复
CRect rect(20,25,320,240);
if(image.Load(pictureName,CXIMAGE_FORMAT_PNG)){
image.Draw(hdc,rect,NULL);
}
for (i =250;i< 300 ;i++)
{
for (j= 90;j< 110; j++)
{
image.SetPixelIndex(i,j,255);
pix = image.GetPixelGray(i,j);
}
}
image.Draw(hdc,rect,NULL);
问题是这样的话:却可以设置Image的值啊。
lambochan 2010-01-27
  • 打赏
  • 举报
回复
last : 你能做的就是,用CxImage create()一个bmp,然后操作完转为png~
lambochan 2010-01-27
  • 打赏
  • 举报
回复
晕,估计你是理解错误..能操作能显示到屏幕的都是BITMAP,其它的只是一种文件格式.
你最多只能操作bmp后,把它转(压缩)为PNG格式,或者把其它的文件格式转(解压)为BMP后再操作.
你根本不可能直接操作(压缩)数据,顾名思义,那是压缩的,不解压的话,根本就不知道它代表着什么,更别说还要操作它了.

19,469

社区成员

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

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