环境: VS2005 VC + Gdiplus 
CDC      dcE;//xample 
CBitmap  bmpE; 
Graphics  gE; 成员描述: 
dcE  -> 通过兼容建立,成功。 
bmpE -> 通过建立DIBSection,成功绑定Attach DIB句柄,并被选入 dcE。 
gE  -> 通过构造函数(hDC),成功构建。 状态描述: 
dcE 使用dcE进行绘图操纵无任何错误 
gE  使用一个Image对象成功将一副Png图形绘制至 dcE 问题描述: 
gE  除了可以以任何方式正确的在gE上绘制那副png外,其他操纵全部失败,诸如绘制另一幅 Bitmap(非资源,编程建立),以及绘制简单几何,全都失败。 
问,这是为什么?

解决方案 »

  1.   

    CDC      dcE;//xample 
    BITMAPINFOHEADER bihE;
    BYTE*    bmpD;//ata
    HBITMAP  hB;//mpdcE.CreateCompatibleBitmap(GetDC());bihE->biSize                  = sizeof (BITMAPINFOHEADER) ;
    bihE->biWidth                 = 100;
    bihE->biHeight                = 100;
    bihE->biPlanes                = 1;
    bmih->biBitCount              = 32;
    bihE->biCompression           = BI_RGB ;
    bihE->biSizeImage             = 0;
    bihE->biXPelsPerMeter         = 0;
    bihE->biYPelsPerMeter         = 0;
    bihE->biClrUsed               = 0;
    bihE->biClrImportant          = 0;hB                            = CreateDIBSection(NULL, (BITMAPINFO*)&bihE, 0, &bmpD, NULL, 0);
    bmpE.FromHandle(hB);
    bmpE.Attach(hB);dcE.SelectObject(&bmpE);Graphics  gE(dcE.m_hDC);gE.DrawImage(...);就是画那副Png,保证没有任何问题.gE.FillRectangle(...)绝对画不上,不知为什么。
      

  2.   

    dcE.CreateCompatibleBitmap(GetDC()); //这个好像不对啊,CDC没有这个成员函数,GDI的API和 CBitmap 里才有。dcE 这个CDC对象 也没有选入过设备上下文
      

  3.   

    不好意思,我写错了,是建立兼容DC CreateCompatibleDC
    还有,dcE是作为缓冲用的,"gE.DrawImage(...);就是画那副Png,保证没有任何问题. "缓冲后画到屏幕没有任何问题。
      

  4.   

    使用Graphics前有调用 GdiplusStartup 初始化吗?
      

  5.   

    已调用 GdiplusStartup 初始化 ,汗
    gE.FillRectangle使用了一个绝对没有问题的单色画刷
    以前是做纯GDI+的,所以一些简单的步骤绝对不会出问题。