XE5 ImageList的BUG?
今天做界面, 在imagelist里加载一个带有半透明通道的PNG图, 结果发现图片居然发暗, 如下:
原图:
IDE里加载以后的图:
明显变暗...查询了源码, 无果
然后又用2010去测试, 发现没问题...可惜2010版本看不到ImageListEditer的源码, 所以无从比较
随后我又用代码去动态加载图片, 发现仍然会有图片变暗的问题:
var
nWIC: TWICImage;
nBmp: TBitmap;
begin
nWIC := TWICImage.Create;
nWIC.LoadFromFile('d:\542725.png'); nBmp := TBitmap.Create;
nBmp.Assign(nWIC); ImageList1.Add(nBmp, nil);
nBmp.Free;
nWIC.Free;
end;
继续查找源码, 经过1个多小时的各种郁闷, 终于发现了一个以前被忽略过的属性: nBmp.AlphaFormat
从帮助上看到其描述:
Vcl.Graphics.TAlphaFormat
Delphi
TAlphaFormat = (afIgnored, afDefined, afPremultiplied);
C++
enum DECLSPEC_DENUM TAlphaFormat : unsigned char { afIgnored, afDefined, afPremultiplied };
Properties
| Type | Visibility | Source | Unit | Parent |
|---|---|---|---|---|
| enum | public |
Vcl.Graphics.pas
Vcl.Graphics.hpp
|
Vcl.Graphics | Vcl.Graphics |
Description
TAlphaFormat indicates how the reserved byte of each pixel is used in a 32 bit bitmap.
TAlphaFormat has the following values:
| Value | Meaning |
|---|---|
|
afIgnored |
The Reserved byte in the TRGBQuad is ignored. |
|
afDefined |
The reserved byte in the TRGBQuad contains an alpha value. |
|
afPremultiplied |
The reserved byte in the TRGBQuad contains an alpha value. The red, green, and blue values have been premultiplied with the alpha value. |
似乎应该使用afDefined值, 可以让BMP理解透明通道的值, 可是写了测试代码, 却无效果
试试其他的值, 发现使用afIgnored的时候是正常的...-_- 不知道为啥
var
nWIC: TWICImage;
nBmp: TBitmap;
begin
nWIC := TWICImage.Create;
nWIC.LoadFromFile('d:\542725.png'); nBmp := TBitmap.Create;
nBmp.Assign(nwic);
nBmp.AlphaFormat := afIgnored; ImageList1.Add(nbmp, nil);
nBmp.Free;
nWIC.Free;
end;
可惜在IDE界面里, 直接使用编辑器向ImageList添加图像仍然是灰色的, 无解....只好通过代码从资源文件中加载了.....先这么办吧
XE5 ImageList的BUG?的更多相关文章
- ImageList半透明,Alpha通道bug处理。
由于ImageList的先天障碍,对alpha通道支持不好.虽然到xp有所改善,但瑕疵依然存在. 通过reflactor发现ImageList通过windows api来进行读写的.写入数据时会对原始 ...
- 修正 XE5 Android 键盘三个问题
说明:XE5 在 Android 平台上存在这一些键盘操作的问题,目前发现有下列几种: 按键盘上的隐藏键后,无法按上一页(需要修改 XE5 源码「FMX.VirtualKeyboard.Android ...
- DevExpress VCL 13.1.4支持Delphi /C++Builder XE5
DevExpress VCL 13.1.4支持Delphi /C++Builder XE5 重大变化 ExpressLibrary dxHalfOfPi常数声明已经从cxGeometry单元移到了cx ...
- ERROR (ClientException) nova image-list
nova image-listERROR (ClientException): The server has either erred or is incapable of performi9e-6c ...
- 解决EnableVisualStyles Bug
一位朋友碰到了一个WinForm的问题,在网上搜了一通,没找到能解决问题的方案, 正好我以前以碰到过,在这里把解决方案呈上,以便有遇到此问题的朋友能有帮助. 问题是这样的,当启用了虚拟样式后,设置好的 ...
- CnPack for delphi xe5
CnPack Team is made up of Chinese Programmers and Delphi / C++ Builder fans across the Internet. Our ...
- DataSnap服务器从xe2升级到xe5报错的处理
DataSnap服务器从xe2升级到xe5环境下,能够正常编译,但运行后会报错,如下图: 处理参考: http://blogs.embarcadero.com/pawelglowacki/2013/0 ...
- Delphi Compiler Bug?
I found a Bug of Delphi XE3 Compiler,It may exists in XE4,XE5. Here is the code to show the bug proc ...
- 继续吐槽XE5中的boost::thread问题:找不到CC32130MT.DLL
在XE5中,随便创建一个HelloWorld程序,加入boost::thread的功能,编译链接后,无法运行,无法调试,提示找不到CC32130MT.DLL 这个DLL名字看上去好像是跟多线程有关的, ...
随机推荐
- Python基础3- 变量与数字
1.Python变量不需要声明,其赋值操作既是变量声明和定义的过程;2.Python中每个变量在使用前都必须赋值,变量赋值后该变量才会被创建;3.Python变量是存储内存中的值,若变量赋值时内存中存 ...
- Android自动截屏小脚本
@echo off echo * 截图文件将保存在 E:\pic下,以当前日期+时间命名. echo ================================================= ...
- Codeforces 696D Legen...(AC自动机 + 矩阵快速幂)
题目大概说给几个字符串,每个字符串都有一个开心值,一个串如果包含一次这些字符串就加上对应的开心值,问长度n的串开心值最多可以是多少. POJ2778..复习下..太弱了都快不会做了.. 这个矩阵的乘法 ...
- Codeforces 675E Trains and Statistic(DP + 贪心 + 线段树)
题目大概说有n(<=10W)个车站,每个车站i卖到车站i+1...a[i]的票,p[i][j]表示从车站i到车站j所需买的最少车票数,求所有的p[i][j](i<j)的和. 好难,不会写. ...
- ASP.NET 操作Cookie详解 增加,修改,删除
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它是网景公司的前雇员Lou Montulli在1993年3 ...
- hbase 问题记录
hbase regionserver挂掉~ org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.L ...
- spring mvc流转控制说明
springMVC数据如何从后台再次传回前台,答案就是这里要说的Model,关于Model在写例子之前我特别先说明三点: 1.Model本身是一个接口,其实现类为ExtendedModelMap,除了 ...
- 使用javax.persistence注解配置PO对象
JPA注解持久化类很方便,需要jar包:ejb3-persistence.jar下载 import java.io.Serializable; import javax.persistence.Col ...
- Android中有关relativeLayout 和EditText的一些属性
http://www.cnblogs.com/jqyp/archive/2010/10/23/1859182.html RelativeLayout用到的一些重要的属性: 第一类:属性值为true ...
- CSS3 transform rotate(旋转)锯齿的解决办法
-moz-transform: rotate(5deg);-webkit-transform: rotate(5deg); 把图片旋转了5度.本以为轻而易举,可遇到了问题.在Fireofx中显示正常, ...