Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的图片框在光标后面,但光标不是';它没有居中_C#_Visual Studio_Winforms - Fatal编程技术网

C# 我的图片框在光标后面,但光标不是';它没有居中

C# 我的图片框在光标后面,但光标不是';它没有居中,c#,visual-studio,winforms,C#,Visual Studio,Winforms,因此,光标在图像左上角偏移了几个像素 代码如下: public Form1() { InitializeComponent(); } private void Form1_MouseMove(object sender, MouseEventArgs e) { pictureBox1.Left = MousePosition.X - (pictureBox1.Width/2); pictureBox1.Top = MousePosition.Y - (pictu

因此,光标在图像左上角偏移了几个像素

代码如下:

public Form1()
{
    InitializeComponent();
}

 private void Form1_MouseMove(object sender, MouseEventArgs e)
 {
     pictureBox1.Left = MousePosition.X - (pictureBox1.Width/2);
     pictureBox1.Top = MousePosition.Y - (pictureBox1.Height/2);
 }

使用
e.Location
属性而不是
MousePosition

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    pictureBox1.Left = e.Location.X - (pictureBox1.Width / 2);
    pictureBox1.Top = e.Location.Y - (pictureBox1.Height / 2);
}
MousePosition
返回鼠标在屏幕坐标中的位置,而
e.Location
返回鼠标相对于客户端边界的位置

编辑

要获得更平滑的移动,请尝试:

public Form1()
{
    InitializeComponent();
    pictureBox1.MouseMove += pictureBox1_MouseMove;
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    OnMouseMove(e);
}

protected override void OnMouseMove(MouseEventArgs e)
{
    base.OnMouseMove(e);

    var location = PointToClient(MousePosition); // e.Location;

    pictureBox1.Left = location.X - (pictureBox1.Width / 2);
    pictureBox1.Top = location.Y - (pictureBox1.Height / 2);
}

使用
e.Location
属性而不是
MousePosition

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    pictureBox1.Left = e.Location.X - (pictureBox1.Width / 2);
    pictureBox1.Top = e.Location.Y - (pictureBox1.Height / 2);
}
MousePosition
返回鼠标在屏幕坐标中的位置,而
e.Location
返回鼠标相对于客户端边界的位置

编辑

要获得更平滑的移动,请尝试:

public Form1()
{
    InitializeComponent();
    pictureBox1.MouseMove += pictureBox1_MouseMove;
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    OnMouseMove(e);
}

protected override void OnMouseMove(MouseEventArgs e)
{
    base.OnMouseMove(e);

    var location = PointToClient(MousePosition); // e.Location;

    pictureBox1.Left = location.X - (pictureBox1.Width / 2);
    pictureBox1.Top = location.Y - (pictureBox1.Height / 2);
}

你能展示一张说明问题的图片吗?Afair光标点位于左上角,而不是中间。您可能必须考虑到这一点(也加上一半)。
MousePosition
为您提供鼠标在屏幕坐标中的位置。您能展示一张图片来说明问题吗?Afair光标点位于左上角,而不是中间。您可能需要考虑到这一点(也加上一半)。
MousePosition
提供鼠标在屏幕坐标中的位置。谢谢,它可以工作,但有没有办法让它不那么滞后。我注意到MousePosition不起作用,但程序运行得很顺利,但e.location起作用,但当我移动鼠标时有点结巴。@BioloItz尝试向
pictureBox1.MouseMove
event添加一个事件句柄。谢谢,它起作用了,但有没有办法让它不那么滞后。我注意到MousePosition不起作用,但程序运行得很顺利,但e.location可以工作,但当我移动鼠标时,它有点结巴。@BioloItz尝试向
pictureBox1.MouseMove
event添加一个事件句柄。