B
base7
Unregistered / Unconfirmed
GUEST, unregistred user!
已知象素点在canvas中的位置,求给定范围内的平均颜色,我写了这样一个函数:
可是出来之后的色彩惨不忍睹,完全变样了,大侠们能帮我看看吗? 3x
还有,如何把一个Tcolor转换成一个十六进制的文本?
是不是一个inttohex就可以了?我用了一下,好像不对...
代码:
function TForm1.GetAvgColor(ABitmap: TBitmap; X, Y, Ranger: Integer): TColor;
var
I, J: Integer;
Red, Green, Blue: Integer;
MyColor: TColor;
begin
Red := 0;
Green := 0;
Blue := 0;
for I:= Y - Ranger to Y + Ranger do
begin
for J:= X - Ranger to X + Ranger do
begin
MyColor := ABitmap.Canvas.Pixels[J, I];
Red := GetRValue(MyColor) + Red;
Green := GetGValue(MyColor) + Green;
Blue := GetBValue(MyColor) + Blue;
end;
end;
Result := Trunc(Red/(sqr(Ranger * 2) + 1) * 65536 + Green/(sqr(Ranger * 2) + 1) * 256
+ Blue/(sqr(Ranger * 2) + 1));
end;
还有,如何把一个Tcolor转换成一个十六进制的文本?
是不是一个inttohex就可以了?我用了一下,好像不对...