Delphi中GetPixel和Canvas.Pixels之间的区别

时间:2010-03-12 09:53:31

标签: delphi

Api功能“GetPixel”是否比Canvas.Pixels更快?

3 个答案:

答案 0 :(得分:6)

它应该是相同的:

function TCanvas.GetPixel(X, Y: Integer): TColor;
begin
  RequiredState([csHandleValid]);
  GetPixel := Windows.GetPixel(FHandle, X, Y);
end;

答案 1 :(得分:4)

如果您正在寻找比GetPixel / Canvas.Pixel []更好的功能,您应该查看Bitmap.ScanLine。唯一的麻烦是数据可能以多种方式排列,由Bitmap.PixelFormat

决定

答案 2 :(得分:0)

GetPixel功能非常慢!如果您需要高性能(甚至可接受性),则应使用ScanLine属性。 ScanLine [y]是指向位图中第y行像素的指针,以PixelFormat属性指定的格式进行编码。例如,对于24位位图,该行具有格式

B1 G1 R1 B2 G2 R2 ... Bn Gn Rn

如果位图的宽度是 n 。 Bi,Gi和Ri分别是像素 i 的蓝色,绿色和红色强度,作为字节。