从listview上拖拽到picturebox上的数据显示出来后,如何取picturebox上该数据的坐标
时间: 2023-05-16 20:05:46 浏览: 109
您可以使用 PictureBox 的 MouseDown 和 MouseMove 事件来获取拖拽操作的起始和结束坐标,然后使用 PointToClient 方法将坐标转换为 PictureBox 内部的坐标系。以下是示例代码:
private Point startPoint;
private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
startPoint = Cursor.Position;
listView1.DoDragDrop(e.Item, DragDropEffects.Copy);
}
private void pictureBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(ListViewItem)))
{
e.Effect = DragDropEffects.Copy;
}
}
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
Point endPoint = pictureBox1.PointToClient(new Point(e.X, e.Y));
ListViewItem item = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
// 使用 startPoint 和 endPoint 来计算拖拽的偏移量
int offsetX = endPoint.X - startPoint.X;
int offsetY = endPoint.Y - startPoint.Y;
// 在 PictureBox 上显示数据
Graphics g = pictureBox1.CreateGraphics();
g.DrawString(item.Text, Font, Brushes.Black, endPoint.X, endPoint.Y);
}
阅读全文