我在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));
但我不知道这是否有帮助,因为我只需查询像素而无需绘制整个图片。
答案 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;