【问题标题】:Png Transparency in graphics32, Builder XE6在 graphics32 中的 Png 透明度,生成器 XE6
【发布时间】:2017-08-26 12:08:53
【问题描述】:

我想在 C++ Builder RAD Studio XE6 中工作时使用 Png 图像。我正在使用 graphics32 lib,并且我设法安装了运行时和设计时包。我可以将 TImage32 组件放在我的表单上,然后在 TImage32 中加载 png 图像,但是我在背景上得到白色而不是透明度。我只是看不到我必须做什么才能在我的表单上获得透明的 png 图像。

非常感谢您的帮助。

【问题讨论】:

    标签: png c++builder graphics32


    【解决方案1】:

    现成的 Graphics32 不支持位图 (BMP) 以外的任何其他格式。为了使用 PNG 格式,需要使用额外的库,尤其是当您想要保持完整的透明度信息时。

    其中一个旨在与 Graphics32 协同工作的库是 GR32PNG。但是,由于各种原因,这个库并不打算在设计时使用。其中之一是即使有可用的设计时包,Graphics32 也从未设计为支持位图 (*.bmp) 以外的任何其他格式。因此,需要重写 Graphics32 的部分内容以支持其他格式(目前尚未这样做)。

    另外,应该可以使用 XE6 的内置支持来加载 PNG 文件。这也不是设计时间(出于同样的原因),有时它不能正确处理透明度。更不用说它之前将图像转换为 TImage,这通常会使加载过程中所需的内存量增加一倍。

    【讨论】:

    • 昨天我在 graphics32 中寻找透明 png 的解决方案时遇到了麻烦。我做错了什么,现在当我将 Image321 放在表单上并尝试加载文件时 (Image321->Bitmap->LoadFromFile("rabbit.png");) - 我在模块 'rtl200 中的地址 501608E6 处遇到访问冲突.bpl'。读取地址 003A004F。我尝试再次安装 graphics32,但模块 rtl200.bpl 中的访问冲突问题仍然存在。很不幸,我目前无法尝试使用 gr32png 库。有什么建议吗?
    • Image321->Bitmap->LoadFromFile("rabbit.png"); 不支持加载PNG文件它会假设 rabbit.png 是一个位图,这可能是访问冲突的原因。
    • 当我从 Object Inspector 将图像加载到 Image321 时,一切似乎都正常。但是当我尝试从应用程序加载图像时,无论图像具有什么文件格式,我都会收到 AViolation 消息。(即使我尝试 Image321->Bitmap->LoadFromFile("rabbit.bmp"); - 32 bitmap )。我重新安装了 Rad XE6 和 graphics32,同样的问题仍然存在。有没有可能我对 Windows 操作系统做了什么?
    • 实际上,C++ Builder 并没有使用 Graphics32 进行广泛测试,因此可能在某处仍然存在错误。到目前为止,Delphi 还没有任何错误报告。请尝试尽可能好地调试它并在 Graphics32 GitHub 页面上发布问题。
    • 我设法安装了您以前版本的 GR32 之一,其中包含 RSXE5 和 DSGN RSXE5 软件包,并且加载图像的问题幸运地消失了。我试图让 png 透明,所以在项目管理器中我将 GR_32Png.pas 和 GR32_PortableNetworkGraphics.pas (形成你的 GR32PNGmaster )添加到项目中。编译器要求所有 GR32 dcu 文件,所以我将它们添加到项目文件夹中。编译后,在尝试加载图像时,我仍然得到未知的图片文件扩展名 (.png)。嗯?
    猜你喜欢
    • 2023-03-24
    • 2015-06-24
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2010-12-14
    • 1970-01-01
    相关资源
    最近更新 更多