private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { Point mousePosition = new Point(e.X, e.Y); int quadrant = GetTargetQuadrant(mousePosition); selectedIndex = GetIndex(mousePosition, quadrant); if (selectedIndex < list[quadrant].Count) { selectedItem = list[quadrant][selectedIndex]; selectedQuadrant = quadrant; pictureBox1.DoDragDrop(selectedItem, DragDropEffects.Copy); } else { selectedIndex = -1; selectedQuadrant = -1; } }每句话的意思
时间: 2023-05-31 21:07:02 浏览: 15
:
1. 在pictureBox1控件上鼠标按下时发生。
2. 获取鼠标点击的位置。
3. 获取目标象限。
4. 获取目标项的索引。
5. 如果目标项存在,则将其设置为选定项,并保存所在象限。
6. 开始拖放选定项,拖放效果为复制。
7. 如果目标项不存在,则将选定项和所在象限重置为默认值。
相关问题
public partial class Form1 : Form{ private Point mouseOffset; // 鼠标位置与图片位置的差值 private Point imageLocation; // 图片的位置 public Form1() { InitializeComponent(); } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { mouseOffset = new Point(-e.X, -e.Y); imageLocation = pictureBox1.ImageLocation; } } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Point mousePos = Control.MousePosition; mousePos.Offset(mouseOffset.X, mouseOffset.Y); pictureBox1.ImageLocation = imageLocation; pictureBox1.ImageLocation = mousePos; } } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { mouseOffset = Point.Empty; imageLocation = Point.Empty; }}报错了
这段代码的报错信息可能是因为 `pictureBox1` 控件的 `ImageLocation` 属性为只读属性,不能直接对其赋值。你可以尝试修改为 `pictureBox1.Location` 属性来实现鼠标拖动图片的效果。
修改后的代码如下:
```
public partial class Form1 : Form
{
private Point mouseOffset; // 鼠标位置与图片位置的差值
private Point imageLocation; // 图片的位置
public Form1()
{
InitializeComponent();
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseOffset = new Point(-e.X, -e.Y);
imageLocation = pictureBox1.Location;
}
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
pictureBox1.Location = mousePos;
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
mouseOffset = Point.Empty;
imageLocation = Point.Empty;
}
}
```
希望这能帮助到你!
Point screenPoint = new Point(e.X, e.Y); Point mousePosition = pictureBox1.PointToClient(screenPoint);
These two lines of code are used to convert the screen coordinates of the mouse cursor (represented by the Point object "screenPoint") to the coordinates relative to the top-left corner of the picture box control (represented by the Point object "mousePosition").
The first line creates a new Point object "screenPoint" with the X and Y coordinates of the mouse cursor obtained from the MouseEventArgs object "e".
The second line uses the PointToClient method of the pictureBox1 control to convert the screen coordinates to client coordinates. The method takes the screenPoint as a parameter and returns the converted coordinates as a Point object "mousePosition". The client coordinates are relative to the top-left corner of the control, which is the origin (0,0) point.