模拟需要找色,找图等等功能,我们先要熟悉有关的知识。 我们的目的是为了找色和找图,所以只用考虑只需要处理24B颜色(PF24BIT)。 TColor 值是以十六进制进行存储的,低三位分别表示红、绿、蓝三种基色的饱和度。 var C:Tcolor R,G,B:Byte; TColor转换成RGB的值 R:=GetRValue(C); G:=GetGValue(C); B::=GetBValue(C); 或 R:=C and $FF; G:=(C and $FF00) shr 8; B:=(C and $FF0000) shr 16; RGB转换成TColor的值 C:=StrToInt(IntToHex(B,2)+IntToHex(G,2)+IntToHex(R,2)); 或 C:=RGB(R,G,B); 对BMP像素的快速访问,一般使用scanline. type //补充定义,方便使用 pRGBTripArray=^TRGBTripleArray; TRGBTripleArray=array[0..1024-1] of TRGBTriple; var row:pRGBTripArray; p:TRGBTriple; 访问第y行第x列(x,y) row := bmp.scanline[y]; p:= row [x]; R:= p.rgbtRed; G:=p.rgbtGreen; B:=p.rgbtBlue; 另外的一种访问方式 var p: PByteArray; 访问第y行第x列(x,y) p := bmp..scanline[y]; 然后用p[x * 3], p[x * 3 + 1], p[x * 3 + 2] 来访问 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论