所有控件。这是因为仅仅改变控件的大小和位置是不够的,还需要考虑控件的布局方式和对齐方式。

要使panel控件中的控件位置发生变化,可以尝试使用控件的Anchor和Dock属性来实现。Anchor属性可以让控件固定在父容器的某个边界上,而Dock属性可以让控件填满父容器的某个方向上。

另外,panel缩放时不能完全显示所有控件的问题可能是因为panel的AutoScroll属性没有设置为true。设置AutoScroll属性为true可以让panel自动添加滚动条,以便显示超出panel大小的控件。

综上所述,可以尝试使用如下代码来实现panel控件中控件的缩放和位置调整:

//启用panel的自动滚动条
panel.AutoScroll = true;

//遍历panel中的所有控件
foreach (Control ctrl in panel.Controls)
{
    //根据panel的当前大小和原始大小计算缩放比例
    float scaleX = panel.ClientSize.Width / panel.Size.Width;
    float scaleY = panel.ClientSize.Height / panel.Size.Height;

    //根据缩放比例调整控件的大小和位置
    ctrl.Width = (int)(ctrl.Width * scaleX);
    ctrl.Height = (int)(ctrl.Height * scaleY);
    ctrl.Left = (int)(ctrl.Left * scaleX);
    ctrl.Top = (int)(ctrl.Top * scaleY);

    //设置控件的Anchor或Dock属性以适应panel的大小变化
    ctrl.Anchor = AnchorStyles.Left | AnchorStyles.Top;
    //或者
    ctrl.Dock = DockStyle.Top;
}
float scaleX = panelClientSizeWidth panelSizeWidth; float scaleY = panelClientSizeHeight panelSizeHeight; foreach Control ctrl in panelControls ctrlL

原文地址: https://www.cveoy.top/t/topic/MxW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录