如何按比例设置另一个控件的位置

时间:2011-10-28 07:09:33

标签: c# winforms point

我的问题是:我有2个面板(panel1,panel2),其中panel1.Size = new Size(200, 200);Panel2.Size = new Size(600, 600);,其中两个面板都在CustomControl中,可以进行拖动并将其更改为Possition(szbControl1,szbControl2)。 / p>

我的问题是,如何根据szbControl2.Location正确(按比例)设置szbControl1.Location,其中szbControl1父级为panel1szbControl2父级为{{} 1}},就像我移动panel2在底部szbControl1也应该在底部。 到目前为止我试过这个:

szbControl2

喜欢使用百分比,但它不起作用。

1 个答案:

答案 0 :(得分:3)

您提供的代码未考虑szbControls的大小。 (位置/大小差异)的比例应该相等。

private void sizeAbleCTR2_LocationChanged(object sender, EventArgs e)
{
    float srcHeightDiff = panel2.Height - sizeAbleCTR2.Height;
    float dstHeightDiff = panel1.Height - sizeAbleCTR1.Height;

    int locY = (int)(dstHeightDiff * (sizeAbleCTR2.Location.Y / srcHeightDiff));

    float srcWidthDiff = panel2.Width - sizeAbleCTR2.Width;
    float dstWidthDiff = panel1.Width - sizeAbleCTR1.Width;

    int locX = (float)(dstWidthDiff * (sizeAbleCTR2.Location.X / srcWidthDiff));

    sizeAbleCTR1.Location = new Point(locX, locY);
}