这更像是一种方法论问题。我知道如何创建一个可以从各个方面扩展的控件,但我不明白为什么这个代码在没有重绘问题(抖动)的情况下不会流畅地工作。它仅从顶部缩放面板,但在此过程中会产生抖动。我错过了什么?
public partial class Form1 : Form
{
Point MousePoint = new Point();
public Form1()
{
InitializeComponent();
panel1.MouseMove += Panel1_MouseMove;
panel1.MouseDown += Panel1_MouseDown;
panel1.Width = 100;
panel1.Height = 100;
}
private void Panel1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
MousePoint = e.Location;
}
}
private void Panel1_MouseMove(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
panel1.Top = e.Location.Y + panel1.Location.Y - MousePoint.Y;
panel1.Height = panel1.Height - e.Y + MousePoint.Y;
}
}
}
答案 0 :(得分:1)
您正在更改两个不同的属性:顶部,然后是高度。这可能导致"抖动"你看到了。
请尝试使用SetBounds调用:
panel1.SetBounds(panel1.Left,
e.Location.Y + panel1.Location.Y - mousePoint.Y,
panel1.Width,
panel1.Height - e.Y + mousePoint.Y);
如果面板内部包含了锚定等控件,则可能会影响调整大小的平滑度。