【发布时间】:2010-04-22 13:52:15
【问题描述】:
我正在尝试在 GDIPAPI 单元中使用 MakeColor 方法,但从 int 到 byte 的转换没有返回正确的值。
示例
var
argbStr: string;
A, R, G, B: Byte;
begin
argbStr := 'ffffcc88';
A := StrToInt('$' + Copy(AValue, 1, 2));
R := StrToInt('$' + Copy(AValue, 3, 2));
G := StrToInt('$' + Copy(AValue, 5, 2));
B := StrToInt('$' + Copy(AValue, 7, 2));
Result := MakeColor(A, R, G, B);
end;
我做错了什么?
【问题讨论】:
-
两件事。首先,您的结果类型应该是什么?其次,第一个 Copy 调用不应该说 1,而不是 0,作为第一个参数吗?
-
另外,GDIAPI 来自哪里?我的 Delphi 2010 安装中没有该单元。
-
@Mason,我提到了
MakeColor方法在 GDIPAPI 单元中它是 GDI+ 的一部分...返回类型是一个 TValue。 -
MakeColor的返回类型是ARGB,而不是TValue。也许这就是问题所在。你期望得到什么“正确的价值”,而你得到了什么价值?中间变量的值是多少? -
@Rob,我明白这一点。我使用 TValue 是因为该方法是通用的。我在设置值时会进行相关的转换。