本文共 1518 字,大约阅读时间需要 5 分钟。
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; |
转载地址:http://irsti.baihongyu.com/