繁体   English   中英

GDI +如何查询像素

[英]GDI+ how to query a pixel

我正在使用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));

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

您可以从TGPBitmap类借用GetPixel方法,该方法仅用于获取像素颜色。 要实现此方法,您将需要对原始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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM