[英]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.