2017-08-26 114 views
0

我想在使用C++ Builder RAD Studio XE6时使用Png图像。我使用的是graphics32库,我设法安装了runtime和designtime软件包。我可以将TImage32组件放在我的窗体上,然后在TImage32中加载png图像,但不是透明度,我在背景上获得了白色。我只是不知道该怎么做才能在我的表单上获得透明的png图像。Png在graphics32中的透明度,Builder XE6

我会非常感谢您的帮助。

回答

0

开箱即用Graphics32不支持比位图(BMP)以外的任何其他格式。为了使用PNG格式,必须使用其他库,尤其是当您想要保留完整的透明度信息时。

其中一个本意是与Graphics32携手工作的库是GR32PNG。但是,由于各种原因,此库不适用于设计时。其中一个事实是,即使使用可用的设计时间包,Graphics32从未设计为支持除Bitmap(* .bmp)以外的任何其他格式。因此,需要重写Graphics32的一部分以支持其他格式(迄今尚未完成)。

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

+0

昨天我在搜索graphics32中的透明PNG解决方案时遇到了麻烦。我做错了,现在当我把Image321放在窗体上并尝试加载一个文件时(Image321-> Bitmap-> LoadFromFile(“rabbit.png”);) - 我在模块'rtl200中的地址为501608E6处发生访问冲突.bpl”。阅读地址003A004F。我试图再次安装graphics32,但模块rtl200.bpl中的访问冲突问题依然存在。所以不幸的是,我目前无法尝试gr32png库。有什么建议? –

+0

它不支持使用Image321-> Bitmap-> LoadFromFile(“rabbit.png”)加载PNG文件;它会假设rabbit.png是一个位图,这可能是访问冲突的原因。 – CWBudde

+0

当我从Object Inspector将图像加载到Image321中时,一切似乎都奏效。但是,当我尝试从应用程序加载图像时,无论图像具有什么样的文件格式,我都会得到AViolation消息(即使我尝试使用Image321-> Bitmap-> LoadFromFile(“rabbit.bmp”) - 32位位图)。我重新安装了Rad XE6和graphics32,但问题仍然存在。是否有可能我做了一些Windows操作系统? –