C#鼠标位于pictureBox上方

时间:2011-11-22 06:44:08

标签: c# mouseover picturebox

我如何知道鼠标放置在pictureBox的哪个像素(坐标)?

4 个答案:

答案 0 :(得分:7)

抓住鼠标移动事件:

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        Text = String.Format("X: {0}; Y: {1}", e.X, e.Y);
    }

你有X和Y的位置 如果您的图像已经缩放和/或平移,请记住,您必须对这些坐标应用变换 需要说明的是:如果您的图片已放置在(x0,y0)并已使用zf缩放(请记住,zf< 1表示缩小),像素坐标将

px = (e.X - x0) / zoom;
py = (e.Y - y0) / zoom;

答案 1 :(得分:4)

我认为这个问题有点模糊,因为你没有告诉我们你打算做什么,也没有告诉我们你有效尝试过什么。

Control.PointToClient方法似乎可以满足您的需求:

  

计算指定屏幕点到客户端的位置   坐标。

然后您可以使用Bitmap.GetPixel并使用X-Y坐标获取给定鼠标坐标处的像素:

  

获取此Bitmap中指定像素的颜色

所有这些都可以通过Mouse_Over事件,Mouse_Click等来触发

答案 2 :(得分:2)

如果您确定MouseEvent中的颜色,您可以使用MouseEventArgs提供的坐标

// Declare a Bitmap
Bitmap mybitmap;
// Load Picturebox image to bitmap
mybitmap = new Bitmap(pictureBox1.Image);

// In the mouse move event
 var pixelcolor = mybitmap.GetPixel(e.X, e.Y);
// Displays R  / G / B Color
pixelcolor.ToString()

答案 3 :(得分:1)

Mouse类上有一个静态方法,允许您获取鼠标指针相对于另一个元素的位置。看看Mouse.GetPosition(UIElement)

以下是您使用它的方式。

Point point = Mouse.GetPosition(pictureBox);

Debug.WriteLine("X: " + point.X +"\n Y: "+ point.Y);