如何操作 二位的位图对象?

Working20000 2005-12-29 03:13:38
是这样的 :
//声明
Bitmap * pTemBitmap ;
Graphics* pGraphicsTemp ;

//初始化
pTemBitmap = new Bitmap(800,800, PixelFormat4bppIndexed); //问题在这里我怎么保存两位的位图,这样的图文件小很多;
pGraphicsTemp = Graphics::FromImage(pTemBitmap);

//我想在这个pTemBitmap 上进行draw的line
Pen pen1(Color::White ,8);
pGraphicsTemp->DrawLine(&pen1,Point(100,20),Point(100,200));

//我把这保存下来,为什么我draw的line 看不见!
CLSID encoderClsid ;
GetEncoderClsid(L"image/bmp ",& encoderClsid); //获得bmp的编码CLSID
pTemBitmap-> Save (L“c:\\test.bmp” , & encoderClsid);
...全文
130 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wyhshp 2006-01-12
  • 打赏
  • 举报
回复
如果考虑资源就不要用GDI+,你这种需求直接用GDI就可以了
Working20000 2006-01-04
  • 打赏
  • 举报
回复
盯ing
Working20000 2005-12-31
  • 打赏
  • 举报
回复
哦! 有道理 有道理!
ddmor 2005-12-31
  • 打赏
  • 举报
回复
改为:
pTemBitmap = new Bitmap(800,800, PixelFormat24bppRGB);
ddmor 2005-12-31
  • 打赏
  • 举报
回复
这是因为Graphics::FromImage()函数中使用的image对象不能是16位色以下的图片:
PixelFormatUndefined
PixelFormatDontCare
PixelFormat1bppIndexed
PixelFormat4bppIndexed
PixelFormat8bppIndexed
PixelFormat16bppGrayScale
PixelFormat16bppARGB1555
并且gdi+不支持不同位色之间的转换,需要自己将16位色及以上色的图片转换为单色图片
Working20000 2005-12-31
  • 打赏
  • 举报
回复
为了 最高效的保存bmp图片(就是节约资源,是保存的图片尽量的小,800*600的 单色和 24位的bmp的大小相差很大),本来就是要单色的就够了,在gdi+ 中有没有 什么好的方法?该怎么处理单色bmp?
Working20000 2005-12-30
  • 打赏
  • 举报
回复
是1位的概念 ,就是黑白两色
酒红绿叶 2005-12-30
  • 打赏
  • 举报
回复
你2位位图是什么概念?
Kudeet 2005-12-29
  • 打赏
  • 举报
回复
pTemBitmap = new Bitmap(800,800, PixelFormat4bppIndexed);
之后你没有设置Bitmap的像素数据,所以你的Bitmap就是空白的,什么也没有,你可以把Color::White换为其他的颜色试试效果
Kudeet 2005-12-29
  • 打赏
  • 举报
回复
像素格式可以用PixelFormat1bppIndexed
Working20000 2005-12-29
  • 打赏
  • 举报
回复

19,468

社区成员

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

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