[英]get pixel value greyscale image 16 bits .net
我有一个pixels16
列表pixels16
,其中包含来自16位灰度图像的pixeldata。 然后,我有一个显示图像的pícturebox和一个函数,用户可以单击它在图片框中的任意位置,系统将返回该位置的pixelvalue(请参见代码下方)
这是用于返回给定位置的像素值的代码:在我看来,我正在显示用户在图像中某个位置单击的确切像素的值,对吗?
我的逻辑是,如果图像为512x512,那么我可以先走Y
然后找到斑点,再走X
,得到该点的像素值,如下所示: int pixelposition = (512 * (y-1)) + x;
我的方向正确吗?
for (int y = 0; y < picbox_mpr.Width; y++)
{
if (e.Y == y)
{
for (int x = 0; x < picbox_mpr.Height; x++)
{
if (e.X == x)
{
int pixelposition = (512 * (y-1)) + x;
string a= pixels16[pixelposition].ToString();
MessageBox.Show(a);
}
}
}
}
for (int y = 0; y < picbox_mpr.Width; y++) { if (eY == y) { for (int x = 0; x < picbox_mpr.Height; x++) { if (eX == x) {
啊,是的, 对于假设的模式。
这应该简单地变成
int pixelposition = (512 * (e.Y-1)) + e.X;
string a= pixels16[pixelposition].ToString();
MessageBox.Show(a);
没有循环。
您应该注意,eX和eY是基于鼠标相对于控件顶部而不是图像相对于屏幕的位置。 在某些模式下,由于页边距的缘故,这会有些错误,但是如果滚动,缩放或居中,那将是非常错误的。 您应该查看此示例代码 ,了解如何转换为图像坐标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.