代码之家  ›  专栏  ›  技术社区  ›  Mahmoud

利用Delphi中的扫描线获取当前像素值

  •  2
  • Mahmoud  · 技术社区  · 16 年前

    我试图通过使用扫描线的“OnMouseMove事件”获取图像中的当前像素。

    与此等价的东西:

    Label1.Caption := IntToStr(Image1.Picture.Bitmap.Canvas.Pixels[X,Y]);
    

    有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  5
  •   kludg    16 年前

    ScanLine返回一个指针,指向构成位图一行的像素压缩数组。使用此指针可以快速访问这些像素。

    如果你只需要一个像素,扫描线就帮不了你。

    你仍然可以在这里使用扫描线;假设位图像素格式PF32位:

    Label1.Caption:= IntToStr(PIntegerArray(Image1.Picture.Bitmap.ScanLine[Y])^[X]);
    
        2
  •  2
  •   Mason Wheeler    16 年前

    扫描线对于快速扫描整条线很有用,就像在你的另一篇文章中一样。但是如果你想得到任意一个像素,最好的方法就是使用你已经得到的代码。