using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ShenTun.ImageCollection.Test { public partial class ImageMouseMoveForm : Form { private Panel panel; private PictureBox pictureBox; private HScrollBar hScrollBar; private VScrollBar vScrollBar; private Label positionLabel; private bool isDragging = false; private Point dragStartPoint; public ImageMouseMoveForm() { this.Width = 800; this.Height = 600; this.Text = "Image Viewer with Scrollbars"; panel = new Panel(); panel.Dock = DockStyle.Fill; panel.AutoScroll = true; pictureBox = new PictureBox(); pictureBox.SizeMode = PictureBoxSizeMode.AutoSize; pictureBox.Image = Image.FromFile(@"d:\\log\\2407240149_0001.jpg"); // 替换为你的图片路径 pictureBox.MouseMove += PictureBox_MouseMove; pictureBox.MouseDown += PictureBox_MouseDown; pictureBox.MouseUp += PictureBox_MouseUp; panel.Controls.Add(pictureBox); hScrollBar = new HScrollBar(); hScrollBar.Dock = DockStyle.Bottom; hScrollBar.Scroll += HScrollBar_Scroll; vScrollBar = new VScrollBar(); vScrollBar.Dock = DockStyle.Right; vScrollBar.Scroll += VScrollBar_Scroll; positionLabel = new Label(); positionLabel.AutoSize = true; positionLabel.Text = "Mouse Position: (0, 0)"; positionLabel.Dock = DockStyle.Top; this.Controls.Add(positionLabel); this.Controls.Add(panel); this.Controls.Add(hScrollBar); this.Controls.Add(vScrollBar); pictureBox.MouseMove += PictureBox_MouseMove; hScrollBar.Scroll += HScrollBar_Scroll; vScrollBar.Scroll += VScrollBar_Scroll; } private void PictureBox_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { isDragging = true; dragStartPoint = e.Location; } } private void PictureBox_MouseMove(object sender, MouseEventArgs e) { if (pictureBox.ClientRectangle.Contains(pictureBox.PointToClient(Cursor.Position))) { // 计算鼠标位置相对于图片的位置 Point pictureBoxLocation = pictureBox.PointToClient(Cursor.Position); int relativeX = pictureBoxLocation.X - panel.AutoScrollPosition.X; int relativeY = pictureBoxLocation.Y - panel.AutoScrollPosition.Y; positionLabel.Text = $"Mouse Position: ({relativeX}, {relativeY})"; } } private void PictureBox_MouseUp(object sender, MouseEventArgs e) { isDragging = false; } private void HScrollBar_Scroll(object sender, ScrollEventArgs e) { panel.AutoScrollPosition = new Point(-hScrollBar.Value, panel.AutoScrollPosition.Y); } private void VScrollBar_Scroll(object sender, ScrollEventArgs e) { panel.AutoScrollPosition = new Point(panel.AutoScrollPosition.X, -vScrollBar.Value); } } }