GDI +如何查询像素

时间:2014-08-12 20:18:01

标签: api delphi graphics gdi+

我在progdigy.com使用了Delphi 6的GDI +库。

我使用TGPImage.Create(AFilename)加载了图片。

问题是,如何查询单个像素(RGBA值)?对象TGPImage似乎没有那样的东西。库中的文档仅链接到GDI +的Microsoft文档,此时此链接已断开。

PS:我可以使用

绘制图像

TGPGraphics.Create(PaintBox1.Canvas.Handle).DrawImage(Image, GPRect(ALeft, ATop, AWidth, AHeight));

但我不知道这是否有帮助,因为我只需查询像素而无需绘制整个图片。

1 个答案:

答案 0 :(得分:3)

您可以从GetPixel类借用TGPBitmap方法,该类仅用于获取像素颜色。要实现此方法,您需要子类化原始TGPImage类以访问受保护的NativeImage字段(保持指向Image对象的指针)。

以下是使用内插器类的示例:

uses
  GDIPAPI, GDIPOBJ;

type
  // we need to subclass the TGPImage to access the protected NativeImage field
  TGPImage = class(GDIPOBJ.TGPImage)
  public
    function GetPixel(X, Y: Integer; out Color: TGPColor): TStatus;
  end;

implementation

{ TGPImage }

function TGPImage.GetPixel(X, Y: Integer; out Color: TGPColor): TStatus;
begin
  Result := SetStatus(GdipBitmapGetPixel(GPBITMAP(NativeImage), X, Y, Color));
end;