【发布时间】:2020-07-09 07:15:18
【问题描述】:
我想拖动一个 PictureBox,我已经成功地做到了。但是我的应用程序没有Windows photo viewer 那样顺利。我的意思是差异不是很大或任何东西,但它很明显。有什么我可以做的让它不那么波涛汹涌吗?这是我的简单代码:
int MOUSE_X = 0;
int MOUSE_Y = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
picBox.Image = Image.FromFile(@"D:\test_big.png");
picBox.Width = 3300;
picBox.Height = 5100;
}
private void picBox_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
MOUSE_X = e.X;
MOUSE_Y = e.Y;
}
}
private void picBox_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
picBox.Left = picBox.Left + (e.X - MOUSE_X);
picBox.Top = picBox.Top + (e.Y - MOUSE_Y);
}
}
【问题讨论】:
-
如果您在表单上设置了 DoubleBuffer,请将其关闭。
-
我没有接触过 DoubleBuffer,但我在表单加载时测试了 false / true,但没有发现任何不同。
-
DoubleBuffer 在窗体上处于活动状态可能会在拖动大图像时导致卡顿。如果它已经关闭,我不明白为什么拖动操作不应该流畅。除非您有其他未提及的尺寸或绘画逻辑(或其他计算)。
-
不,我只有问题中的代码,我没有修改任何其他内容。我的意思是它不会卡得太厉害,但与 Windows 照片查看器相比,它绝对是显而易见的。
-
你在父窗体中有背景图片吗?
标签: c# forms optimization picturebox drag