CPaintDC dc(this);
Graphics graphics(dc.m_hDC);
不知道为什么,在DrawImage的时候,第一个参数如果为Bitmap的指针,就画不出任何东西,要是Image的指针就能够画出来了。我测试过我画的时候Bitmap指针指向的对象是有东西的,我保存成文件出来是很完整的。
因此希望能有一个办法直接把Bitmap对象转为Image

解决方案 »

  1.   

    另外还想问问这两个类型的构造函数中有用到的流在C++中是怎么使用的,MSDN上的例子里用到了一种CompoundFile,完全搞不懂这是什么东西
      

  2.   

    class Bitmap : public Image
    {
    public:
        friend class Image;
        friend class CachedBitmap;    Bitmap(
            IN const WCHAR *filename,
            IN BOOL useEmbeddedColorManagement = FALSE
        );从源代码上可知 Bitmap 本来就是 Image仔细查查程序吧
      

  3.   

    CPaintDC dc(this);
    Graphics graphics(dc.m_hDC);
    graphics.DrawImage(m_pActBmp,0,0);
    但是我这样什么都画不出来啊CLSID pngClsid;
    GetEncoderClsid(L"image/png",&pngClsid);
    m_pActBmp->Save(L"tmp.png",&pngClsid);
    我这样保存成文件看完全正常啊
    而且保存成文件后再读成Image类型的再画就也正常了!
      

  4.   

    graphics.DrawImage(m_pActBmp,0,0); 
    直接这样画的啊,什么都没画出来
    如果我用下面这样的话
    Image *pImage = (Image *)m_pActbmp;
    graphics.DrawImage(pImage,0,0);
    仍然画不出来
    再换下面这种
    Image *pImage = ((Image *)m_pActBmp)->Clone();
    graphics.DrawImage(pImage,0,0);
    于是成功画出来了。。
    但是Clone实在太耗资源了,我需要大量的绘制操作,这样CPU完全卡掉了
      

  5.   

    肯定可以自己画  lz查下是不是数据被lock了
      

  6.   

    可能之前lz调用了bitmap的LockBits方法,然后没有unLockBits 所有就画不出来了