DelphiCode:
// //不得闲图像操作函数库 / {将位图颜色变深} procedure Dark24Bitmap(var B : TBitmap;N : integer); var i,j : integer; pB : PByteArray; Count: Integer; begin i := Integer(B.PixelFormat); if i < 4 then i := 4 else if i = 4 then inc(i); Count := (i - 3) * B.Width - 1; for i:=0 to B.Height-1 do begin pb:=B.ScanLine[i]; for j:=0 to Count do if pb[j]then pb[j]:=0 else dec(pb[j],n); end; end; {将位图颜色变浅} procedure Light24Bitmap(var B : TBitmap;N : integer); var i,j : integer; pB : PByteArray; Count: Integer; begin i := Integer(B.PixelFormat); if i < 4 then i := 4 else if i = 4 then inc(i); Count := (i - 3) * B.Width - 1; for i:=0 to B.Height-1 do begin pb:=B.ScanLine[i]; for j:=0 to Count do begin if pb[j]>(255-n) then pb[j]:=255 else inc(pb[j],n); end; end; end; {比较两个位图是否相同} function IsBmpSame(bmp1,bmp2: TBitmap): Boolean; var i,j: Integer; ScanLine1,ScanLine2: PByteArray; Count: Integer; begin Result := (bmp1.Height = bmp2.Height) and (bmp1.Width = bmp2.Width) and (bmp1.PixelFormat = bmp2.PixelFormat); if Result then begin i := Integer(bmp1.PixelFormat); if i < 4 then i := 4 else if i = 4 then inc(i); Count := (i - 3) * bmp1.Width - 1; for i:=0 to bmp1.Height-1 do begin ScanLine1 := bmp1.ScanLine[i]; ScanLine2 := bmp2.ScanLine[i]; for j := 0 to Count do if ScanLine1[j] <> ScanLine2[j] then begin Result := False; Exit; end; end; end; end; |