vczh-libraries / GacUI

GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features.
Other
2.35k stars 297 forks source link

Fix tutorials about setting client size requirement #80

Closed vczh closed 2 years ago

vczh commented 2 years ago

From

<Window>
    <att.BoundsComposition-set PreferredMinSize="..."/>
</Window>

to ContainerComposition

bizehao commented 2 years ago

但是这样 窗口不居中了

bizehao commented 2 years ago

我觉得应该在att.BoundsComposition-set上操作 毕竟你这个属性就是为了做大小操作的

bizehao commented 2 years ago

而且,我这边用你这种写法的话,往小拉伸的话会抖动。

vczh commented 2 years ago

https://github.com/vczh-libraries/GacUI/issues/79 抖动我开这个了

bizehao commented 2 years ago

大佬 这块为什么要加 window->Convert转换 这样展示出来的比我设置的像素值要大 image

bizehao commented 2 years ago

我添加了个flexlayout布局 依赖 facebook的yoga https://github.com/facebook/yoga.git 不知道大佬需要不

这是使用 我可以提供使用demo image

vczh commented 2 years ago

里面的逻辑是这样的,不管你dpi是多少,composition的尺寸都是逻辑像素,所以在那个地方要乘以dpi算出windows api需要的尺寸。你可以看到我Size有两个不同的struct,其中NativeSize就是dpi相关的,125%的话Convert就是乘以1.25取整。当然我还有另一个重载用来除。

这就是为什么我说PreferredMinSize要在container而不是bounds上改,因为你那个做法跟皮肤的实现是耦合的,换个皮肤可能就寄了。不过现在是有bug没办法。

我还是得把这个修了,让container的PreferredMinSize不会抖动,才能把故事说完整。

vczh commented 2 years ago

yoga的demo挺好的耶,你要不先放单独的repo,做完了我去看看?

bizehao commented 2 years ago

好的好的👌

bizehao commented 2 years ago

我看winui3设置窗口大小,该多大就多大,比如400×400,显示的就400×400,你这个的话显示出来的就大于400了

vczh commented 2 years ago

恩,这个设置的都是逻辑尺寸,DPI变大结果就会变大了。如果你想设置真实尺寸的话,可以调用INativeWindow的函数改窗口大小。

vczh commented 2 years ago

这个我也关掉了,有什么问题可以在 https://github.com/vczh-libraries/GacUI/issues/77 继续讨论。居中的问题应该也没有了。

bizehao commented 2 years ago

好的