【问题标题】:How to modify properties of Bitmaps in C++如何在 C++ 中修改位图的属性
【发布时间】:2010-02-24 19:48:44
【问题描述】:
    Bitmap bmp(100,100, PixelFormat32bppARGB);
    bmp.SetPixel(2,2,Gdiplus::Color::AliceBlue);
    int x = bmp.GetHeight();
    int y = bmp.GetWidth();
    Gdiplus::Color* ccc = new Gdiplus::Color;
    Gdiplus::Color* ccc2 = new Gdiplus::Color;
    bmp.GetPixel(2,2,ccc);
    bmp.GetPixel(0,0,ccc2);

在过去的示例代码中,位图属性总是显示为空。高度和宽度始终为零,任何像素的颜色始终相同。修改位图属性的正确方法是什么?

【问题讨论】:

    标签: c++ gdi+ bitmap


    【解决方案1】:

    您调用的构造函数没有填充位图的像素数据。您需要在构建后调用bmp.FromX() 的一个版本来填充您的位图。

    或者,您可以调用另一个构造函数来为您提供填充位图。

    此外,您可能希望将您的 SetPixel() 调用与对 LockBits()UnlockBits() 的调用封装起来。

    阅读规范 here 了解更多详情。

    【讨论】:

    • 感谢您的链接。我尝试了一些功能,例如 bmp.GetHBITMAP(Color::Azure,hBmpImage);但它仍然不起作用。例如,如何设置宽度和高度?
    • 您可以使用不同的命令裁剪或缩放位图。例如,您可以使用其中一个克隆函数来复制位图的一部分。阅读规范的附加部分以获取更多示例。准确地尝试他们的代码,然后调整一些设置,使用不同的构造函数,等等,直到你感觉更舒服地使用 API。 msdn.microsoft.com/en-us/library/ms533815%28VS.85%29.aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多