api - GDI+如何查询像素

标签 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));

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

最佳答案

您可以借用 TGPBitmap 类中的 GetPixel 方法,该方法仅用于获取像素颜色。要实现此方法,您需要对原始 TGPImage 类进行子类化,以访问 protected 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;

关于api - GDI+如何查询像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25273355/

相关文章:

javascript - 使用 Nodejs 和 twitter api 获取最新推文

php - Joomla 2.5 - 根据文章 ID 生成 URL

Delphi 多线程应用程序在 Vista 中内置,无法在 XP 中运行

c# - QuickFill/洪水填充算法

java - paintComponent(g) 还是 paintComponent(g2)?

python - 斯皮科的API?刮Spokeo

xml - Booking.com酒店管理API

c# - DELPHI XE2 DLL无法添加到C#应用程序

delphi - 如何检测SQ​​L Server数据库中发生的任何修改?

java - BufferedImage 未作为图像返回