今天做界面, 在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

From RAD Studio API Documentation
 

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?的更多相关文章

  1. ImageList半透明,Alpha通道bug处理。

    由于ImageList的先天障碍,对alpha通道支持不好.虽然到xp有所改善,但瑕疵依然存在. 通过reflactor发现ImageList通过windows api来进行读写的.写入数据时会对原始 ...

  2. 修正 XE5 Android 键盘三个问题

    说明:XE5 在 Android 平台上存在这一些键盘操作的问题,目前发现有下列几种: 按键盘上的隐藏键后,无法按上一页(需要修改 XE5 源码「FMX.VirtualKeyboard.Android ...

  3. DevExpress VCL 13.1.4支持Delphi /C++Builder XE5

    DevExpress VCL 13.1.4支持Delphi /C++Builder XE5 重大变化 ExpressLibrary dxHalfOfPi常数声明已经从cxGeometry单元移到了cx ...

  4. ERROR (ClientException) nova image-list

    nova image-listERROR (ClientException): The server has either erred or is incapable of performi9e-6c ...

  5. 解决EnableVisualStyles Bug

    一位朋友碰到了一个WinForm的问题,在网上搜了一通,没找到能解决问题的方案, 正好我以前以碰到过,在这里把解决方案呈上,以便有遇到此问题的朋友能有帮助. 问题是这样的,当启用了虚拟样式后,设置好的 ...

  6. CnPack for delphi xe5

    CnPack Team is made up of Chinese Programmers and Delphi / C++ Builder fans across the Internet. Our ...

  7. DataSnap服务器从xe2升级到xe5报错的处理

    DataSnap服务器从xe2升级到xe5环境下,能够正常编译,但运行后会报错,如下图: 处理参考: http://blogs.embarcadero.com/pawelglowacki/2013/0 ...

  8. 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 ...

  9. 继续吐槽XE5中的boost::thread问题:找不到CC32130MT.DLL

    在XE5中,随便创建一个HelloWorld程序,加入boost::thread的功能,编译链接后,无法运行,无法调试,提示找不到CC32130MT.DLL 这个DLL名字看上去好像是跟多线程有关的, ...

随机推荐

  1. POJ3013 Big Christmas Tree(最短路径树)

    题目大概说给一张点和边都有权的图,现在要求其一棵以1结点为根的生成树使树的边权和最小,树边权 = 对应的图边权 * 树边末端点为根的子树所有结点对于图顶点的点权和. 要求∑(边权*子树点权和),等价于 ...

  2. ccc array

    setInterval可以用来设置函数的执行频率 nodeList: { default:[], type:[cc.Node] } active 可以用来设置是否启用 cc.Class({ exten ...

  3. python 代码片段24

    #coding=utf-8 #内部类 class MyClass(object): class InnerClass: pass # 正则表达式 # 通过re模块来访问 import re m=re. ...

  4. Android Properties 存储

    1.初始化 private static void initProperties(){ File logFile = new File(Constants.PROGRESS_PROPERTIES); ...

  5. 【BZOJ】1119: [POI2009]SLO

    题意 长度为\(n(1 \le n \le 1000000)\)的账单,\(+\)表示存1,\(-\)表示取1,任意时刻存款不会为负.初始有\(p\),最终有\(q\).每一次可以耗时\(x\)将某位 ...

  6. 【ZOJ】1015 Fishing Net

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1015 题意:给出一个n个点的无向图,询问是否为弦图,弦图定义为对于图中任意 ...

  7. exp.validate.js

    简单实用的js基础数据验证 prototype /// <reference path="/Scripts/expand-fn/exp_validate.js" /> ...

  8. filter,orderBy等过滤器

    filter用法比较灵活(也增加了较高的复杂度),单独列出. 基本的用法: <input type="text" class="search" ng-mo ...

  9. 详解CALayer 和 UIView的区别和联系

    详解CALayer 和 UIView的区别和联系   前言 前面发了一篇iOS 面试的文章,在说到 UIView 和 CALayer 的区别和联系的时候,被喵神指出没有切中要点,所以这里就 CALay ...

  10. CentOS7 网络管理相关命令

    contos7 网卡配置文件自动识别ifcfg开头的文件(包括目录) CentOS7网卡命名规则: CentOS 7 开始对于网卡的编号则有另一套规则, 网卡的界面代号现在与网卡的来源有关,基本上的网 ...