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