我有点难过,我想知道是否有任何类型的算法可以帮助我.
首先是概念问题,让我说我有一堆沿着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 percentELSE Gap = ((MIDpoint - A) * 100) / TotalLength
这样,你就可以找到差距.如果选择的点小于中点,则需要根据您选择的点确定需要移动的轴,如果选择的点小于中点,则向右移动,如果向左移动(到正轴路径).
我希望这有帮助.
总结以上是内存溢出为你收集整理的c# – 数字行压缩和对接控件全部内容,希望文章能够帮你解决c# – 数字行压缩和对接控件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)