是这样的 : 
 //声明
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);

解决方案 »

  1.   

    像素格式可以用PixelFormat1bppIndexed
      

  2.   

    pTemBitmap  = new Bitmap(800,800, PixelFormat4bppIndexed); 
    之后你没有设置Bitmap的像素数据,所以你的Bitmap就是空白的,什么也没有,你可以把Color::White换为其他的颜色试试效果
      

  3.   

    这是因为Graphics::FromImage()函数中使用的image对象不能是16位色以下的图片:
    PixelFormatUndefined
    PixelFormatDontCare
    PixelFormat1bppIndexed
    PixelFormat4bppIndexed
    PixelFormat8bppIndexed
    PixelFormat16bppGrayScale
    PixelFormat16bppARGB1555
    并且gdi+不支持不同位色之间的转换,需要自己将16位色及以上色的图片转换为单色图片
      

  4.   

    改为:
    pTemBitmap = new Bitmap(800,800, PixelFormat24bppRGB);
      

  5.   

    为了 最高效的保存bmp图片(就是节约资源,是保存的图片尽量的小,800*600的 单色和 24位的bmp的大小相差很大),本来就是要单色的就够了,在gdi+ 中有没有 什么好的方法?该怎么处理单色bmp?
      

  6.   

    如果考虑资源就不要用GDI+,你这种需求直接用GDI就可以了