RGB方式的 怎么计算叠加后的颜色
解决方案 »
- ReadDirectoryChanges的详细用法及说明?????
- 初学多媒体编程 关于RealMagic
- spcomm在哪裡
- 一个专于参数的问题
- listview 的双击事件问题????
- 出错提示 capability not supported 错在哪啊??? 原代码
- 关于原delphi5中使用DsgnIntf.pas,现在delphi6.0中如何修改?
- 请问delphi程序如何发布?即release的步骤。
- 紧急求助,若为有效回答送分50
- 请教各位大师一个问题?以下代码总是出错,请多多指正,谢谢!!!
- 请问Rave中的报表怎么显示不了中文,全是问号,怎么办?
- 一个新手的问题——AdoQuery组件使用Insert命令的疑问??
type
TRGB=packed record
R:Byte ;
G:Byte ;
B:Byte ;
A:Byte ;
end ;
var
p1:^TRGB ;
p2:^TRGB ;
P3:^TRGB ;
begin
Result := color1 ;
P1 :=@color1 ;
P2 :=@color2 ;
P3 := @Result ;
p3.R := (P1^.R+P2^.R) div 2 ;
p3.G := (P1^.G+P2^.G) div 2 ;
p3.B := (P1^.B+P2^.B) div 2 ;
end;
p3.G := (P1^.G+P2^.G) div 2 ;
p3.B := (P1^.B+P2^.B) div 2 ;这个写法是否存在溢出问题?
都是Byte,
试想:
P1^.R:= 127;
P2^.R:= 127;
那么 p3.R= (127+127) div 2= 254 div 2 = 127但是如果
P1^.R:= 128;
P2^.R:= 128;
那么 p3.R= (128+128) div 2= 0 div 2 = 0;
(Byte 的256就是0 ,因为溢出了)是不是存在这个问题?
>>你錯了, 兩個Byte 求平均數是不會溢出的(128+128) div 2<> 0!!!!
(128+128) div 2 = 128 !! :)