如何获得自定义图像光标的坐标

本文关键字:坐标 光标 图像 何获得 自定义 | 更新日期: 2023-09-27 18:08:02

 Bitmap hh = (Bitmap)System.Drawing.Bitmap.FromFile("example.png");
 Graphics.FromImage(hh);
 IntPtr ptr = hh.GetHicon();
 Cursor c = new Cursor(ptr);
 this.Cursor = c;

我使用这段代码来创建一个自定义图像光标。我想在发生Click事件时检索这个自定义图像光标的坐标。这样,当点击图片框中加载的图片时,就可以使用这些坐标来绘制这个光标在图片框中的图像。我在c#中做这个。

我试了另一个方法

public partial class Form1 : Form
{
    private Bitmap _bmp = new Bitmap(250, 250);
    public Form1()
    {
        InitializeComponent();
        panel1.MouseDown += new MouseEventHandler(panel1_MouseDown);
        panel1.Paint += new PaintEventHandler(panel1_Paint);
        using (Graphics g = Graphics.FromImage(_bmp))
            g.Clear(SystemColors.Window);
    }
    private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        Point mouseDownLocation = new Point(e.X, e.Y);
        label1.Text = mouseDownLocation.X.ToString();
    }
    private void panel1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.DrawImage(_bmp, new Point(0, 0));
    }
    private void panel1_MouseDown(object sender, MouseEventArgs e)
    {
        using (Graphics g = Graphics.FromImage(_bmp))
        {
            g.DrawString("Mouse Clicked Here!", panel1.Font, Brushes.Black, e.Location);
        }
        panel1.Invalidate();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        panel1.Image.Save(@"C:'test.jpg", ImageFormat.Jpeg);
    }

但是当我尝试保存图像时,我得到一个异常:对象引用未设置为对象的实例

请注意,上面代码中的panel1指的是一个图片框

如何获得自定义图像光标的坐标

要获取鼠标在PictureBox上的坐标,你不应该处理OnClick事件,而应该处理OnMouseDown事件,例如如下所示:

private void pb_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
{
  Point mouseDownLocation = new Point(e.X, e.Y);
}

现在你有了mouseDownLocation,它包含了你正在寻找的坐标

我知道获取鼠标坐标的方法,您可以将其编码为

Cursor.Position。X和Cursor.Position.Y来获取鼠标下的坐标