none
DrawImage函数失败! RRS feed

  • 问题

  • 我希望利用GDI+来绘制半透明图片,在OnPaint输入如下部分代码:

    ColorMatrix ClrMatrix =
        {
            1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
            0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
            0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
            0.0f, 0.0f, 0.0f, 0.5f, 0.0f,
            0.0f, 0.0f, 0.0f, 0.0f, 1.0f
        };
        ImageAttributes ImgAttr;
        ImgAttr.SetColorMatrix(&ClrMatrix,ColorMatrixFlagsDefault,ColorAdjustTypeBitmap);

    gr.DrawImage(g_imgHighlight[1],RectF(0,0,53,52),0,0,53,52,UnitPixel, &ImgAttr);  //这句用了,但没显示任何东西
    gr.DrawImage(g_imgHighlight[1],RectF(0,0,53,52));  //这句成功了,不过我要的是半透明

    我就是不知道为什么,第一句用了也没有显示任何东西,而第二句就能成功显示。求各位大侠了!

    2012年7月27日 2:22

答案

  • 您好,

    我用一个MDI风格的MFC工程测试了您的代码,但是不能重现您所描述的问题,两种Graphics::DrawImage方法都能正常显示。

    我的工作环境是:Windows 7VS2010

    关于您说的Out Of Memory的问题,GDI+在这方面似乎有一个小小的bug。有时您收到Out Of Memory的错误信息,但事实上错误与Memory无关。

    connect.microsoft.com上面有较为详细的描述:http://connect.microsoft.com/VisualStudio/feedback/details/96831/gdi-out-of-memory-bug

    如果方便的话,建议您提供更多的代码和程序细节。


    Damon Zheng [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 yshkcj 2012年8月8日 2:04
    2012年8月1日 11:16
    版主

全部回复

  • 我想利用GDI+里的DrawImage函数来绘制半透明图片,在OnPaint函数中加入部分代码,如下:

    ColorMatrix ClrMatrix =
        {
            1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
            0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
            0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
            0.0f, 0.0f, 0.0f, 0.5f, 0.0f,
            0.0f, 0.0f, 0.0f, 0.0f, 1.0f
        };
        ImageAttributes ImgAttr;
        ImgAttr.SetColorMatrix(&ClrMatrix,ColorMatrixFlagsDefault,ColorAdjustTypeBitmap);

    gr.DrawImage(g_imgHighlight[1],RectF(0,0,53,52),0,0,53,52,UnitPixel, &ImgAttr);  //这句用了,但没显示任何东西
    gr.DrawImage(g_imgHighlight[1],RectF(0,0,53,52));  //这句成功了,不过我要的是半透明

    第一句用了没有任何显示,可是第二句却能够正确显示。之后我查看了下第一句的返回值,值为 OutOfMemory

    求教各位大侠了!


    2012年7月27日 4:52
  • 你用的是MFC吗?我只有在C++\CLI程序里用过GDI+
    2012年7月31日 2:45
  • 您好,

    我用一个MDI风格的MFC工程测试了您的代码,但是不能重现您所描述的问题,两种Graphics::DrawImage方法都能正常显示。

    我的工作环境是:Windows 7VS2010

    关于您说的Out Of Memory的问题,GDI+在这方面似乎有一个小小的bug。有时您收到Out Of Memory的错误信息,但事实上错误与Memory无关。

    connect.microsoft.com上面有较为详细的描述:http://connect.microsoft.com/VisualStudio/feedback/details/96831/gdi-out-of-memory-bug

    如果方便的话,建议您提供更多的代码和程序细节。


    Damon Zheng [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 yshkcj 2012年8月8日 2:04
    2012年8月1日 11:16
    版主