【问题标题】:It seems like GDI+ TextureBrush Bug看起来像 GDI+ TextureBrush 错误
【发布时间】:2015-06-26 07:24:21
【问题描述】:

在此之前,我不会说英语那么好

最近我使用 GDI+ 制作 Windows 桌面应用程序(在 Windows7 上)

我认为 Gdiplus::TextureBrush 有一个错误。我希望任何人和我一样发现这个错误。

那个错误如下所示

第 1 步。 有一张 500dpi,6250 * 7819 尺寸的图片

第二步 使用Gdiplus::Image::FromStream()加载图片 图片名称为"image1"

第三步。 创建图形图形(HDC);

第三步。 创建Gdiplus::TextureBrush brush = Gdiplus::TextureBrush(image1);

第四步 graphics.FillPath(brush); 目前一切正常,您可以在屏幕上看到正确的图像

步骤 5 从位图创建另一个图形 Graphics::Bitmap* bitmap = new Graphics::Bitmap(size.CX, size.CY), PixelFormat32bppARG); Graphics* anotherGraphics = Gdiplus::Graphics::FromImage(bitmap);

第6步(此处出现错误) anotherGraphics.DrawImage(image1); 然后从anotherGraphics 中分离新图像。 但是新图像很奇怪,新图像完全由原始图像的一个像素填充

但下一次,它再也不会发生了.. 在应用生命周期内只有一次

怎么了……

【问题讨论】:

  • 可能是某种奇怪的单色。它也可能是未定义的行为。我会简化图形直到它正常工作,然后建立并经常检查它是否仍在工作 - 这就是我碰壁时所做的。
  • 附带说明 - 在任何情况下都不太可能是错误。

标签: gdi+


【解决方案1】:

Bitmap::FromStream 方法有第二个arguseEmbededColorManagement(无论如何都不确定这是正确的名称)我确实将 True 放入其中,然后它运行良好。 arg 看起来与此错误无关。

我仍然不知道它为什么起作用,但我解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多