2017-08-17 22 views
0

我有一个Picturebox(picWorld)的问题。当我想改变它的大小和位置,这样的代码,花了很多时间,因为我认为这是更新两次:如何使图片框停止自动验证?

private void lblWorld_MouseEnter(object sender, EventArgs e) 
{ 
    picWorld.Size = new Size(148, 148); 
    picWorld.Location = new Point(picWorld.Location.X - 12, picWorld.Location.Y - 12); 
} 

有什么办法,使其更快?

+0

为什么不改变.Width,.Height,.Left和.Top属性呢?那就是说,它有多慢? – ainwood

+0

该代码不慢。为了确保*绘制*图像不会花费太多时间以致它变得明显,您必须注意您使用的位图。它应该完全适合pbox的大小,因此不需要进行插值。如有必要,请保留位图的多个副本,每个副本的预先大小与您分配的大小相匹配。它的像素格式非常重要,只有32bppPArgb很快。 –

+0

尝试使用“picWorld.SetBounds()”方法。 – Bahrom

回答

-1

创建外部变量(喜欢静态)何时开始存储和何时结束,所以:

bool now=false; 

private void lblWorld_MouseEnter(object sender, EventArgs e) 
{ 
if (!now) 
{ 
now = true; 
    picWorld.Size = new Size(148, 148); 
    picWorld.Location = new Point(picWorld.Location.X - 12,  picWorld.Location.Y - 12); 
now = false; 
} 

}

+0

问题是,当我更改大小时,图像无效。当地点改变时,它再次失效。 – Barbod

0

尝试隐藏它,移动它,然后显示它:

private void lblWorld_MouseEnter(object sender, EventArgs e) 
{ 
    picWorld.Hide(); 
    picWorld.Size = new Size(148, 148); 
    picWorld.Location = new Point(picWorld.Location.X - 12, picWorld.Location.Y - 12); 
    picWorld.Show(); 
} 
+0

速度很快,但当鼠标移到lblWorld上时,PictureBox就是隐藏和显示。 – Barbod

+0

它是不是调整大小和移动它像你想要的?它没有做什么?我很努力去理解这个问题,如果你在你的文章中提供了更多的信息(上面),这也许会有所帮助。如果你想要一个非常高性能的位图,可以看看@Hans Passant的评论。 – ainwood