我有点难过,我想知道是否有任何类型的算法可以帮助我.
首先是概念问题,让我说我有一堆沿着X轴的盒子.我希望能够在轴上选择一个任意点A并使左边的所有内容都缩放到原始宽度和位置的95%并进行补偿,右边的所有内容都必须缩放到105%.结果框的宽度很容易计算,因为它是原始宽度乘以比例.我遇到的问题是如何计算现在在A点创建的间隙,以便我可以将第二部分向左移动以缩小该间隙.
此外,我不仅要选择A点,还要选择B和C等,并且能够同样缩小它们的间隙.
– 我问的真正原因 –
现在针对实际问题(如果其他人都经历过这个问题.)我在C#Winforms应用程序中有一个控件,它是由一些程序员在我到达之前制作的.该控件可以包含任意数量的子控件,每个子控件都有自己的相对坐标作为Width或Height的百分比(即,相对X坐标为0.5的控件将放置在父容器的中间位置.
我们迫切需要支持多个监视器,而我遇到的问题是,如果你将控件或工具栏停靠在我们的专有控件旁边,那么ClientRectangle就会变小,因此它会绕着子边框移动,就像这样
我的老板不喜欢线条移动到显示器边界,并希望我只弄乱窗口停靠的同一台显示器上的线条.我已经能够使用上面的概念获得90%的方式,但我似乎无法正确地进行重新间距计算.
解决方法
假设您有一个起点A,并将其定义为xA.
现在,让我们定义框
//Box{x0,x1} Boxes = {[B1]{0,100},[B2]{100,200},[B3]{200,400},[B4]{400,450},[B5]{450,700}}
现在我们在X轴上有5个方框.
我们来定义;
A = xA = 370; TotalLength = 700;
如果将700除以2,则得到350表示中点,370表示大于中点值.所以说,在这种情况下,您需要将元素从左向右移动.差距的计算如下:
IF(Midpoint < A) Gap = ((A- Midpoint) * 100 ) / TotalLength //This is the gap in percent ELSE Gap = ((Midpoint - A) * 100) / TotalLength
这样,你就可以找到差距.如果选择的点小于中点,则需要根据您选择的点确定需要移动的轴,如果选择的点小于中点,则向右移动,如果向左移动(到正轴路径).
我希望这有帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。