Есть формы у которых на фоне есть изображение панелей с надписями и прочими деталями. Мне нужно, чтоб они масштабировались и контролы не съезжали со своих мест. Я делаю так:
protected void SaveControlsSize()
{
FormInitHeight = Height;
FormInitWidth = Width;
foreach (Control contrl in Controls)
{
CommonControl cc = contrl as CommonControl;
if (cc != null)
{
widths[cc] = cc.Width;
heights[cc] = cc.Height;
tops[cc] = cc.Top;
lefts[cc] = cc.Left;
fontSize[cc] = cc.Font.Size;
}
}
}
protected void UpdateControlsSize()
{
foreach (Control contrl in Controls)
{
CommonControl cc = contrl as CommonControl;
if (cc != null)
{
cc.Top = Convert.ToInt32(tops[cc] *(Height * 1.0 / FormInitHeight));
cc.Left = Convert.ToInt32(lefts[cc] * (Width * 1.0 / FormInitWidth));
cc.Height = Convert.ToInt32(Math.Round(heights[cc] * (Height * 1.0 / FormInitHeight)));
cc.Width = Convert.ToInt32(Math.Round(widths[cc] * (Width * 1.0 / FormInitWidth)));
cc.Font = new Font(cc.Font.FontFamily, Convert.ToInt32(fontSize[cc]*(Height * 1.0 / FormInitHeight)));
}
}
}
SaveControlsSize вызываю в конструкторе каждой формы, а UpdateControlsSize в методе Resize. Но все равно контролы съезжают со своих мест, то ли погрешность вычислений, то ли такой тупой. Помогите, пожалуйста, а то совсем не знаю куда копать.