WPF和Silverlight控件和布局平移和缩放功能

WPF和Silverlight控件和布局平移和缩放功能,第1张

概述我想了解 WPF / Silverlight布局的一般要求,以便实现平移和缩放(拖动和缩放)功能.我并不是指对图像进行平移和缩放,而是使用某些控件进行总页面(窗口)布局(或部分). 布局的哪些功能以及使用的自定义控件的哪些功能使布局固定,并且无法进行平移和缩放? 一般规则 除了少数例外,WPF中的所有内容都可以平移,缩放,旋转,拉伸等等.这包括单个控件,如Button,复合控件(如ListBox) 我想了解 WPF / Silverlight布局的一般要求,以便实现平移和缩放(拖动和缩放)功能.我并不是指对图像进行平移和缩放,而是使用某些控件进行总页面(窗口)布局(或部分).

布局的哪些功能以及使用的自定义控件的哪些功能使布局固定,并且无法进行平移和缩放?

解决方法 一般规则

除了少数例外,WPF中的所有内容都可以平移,缩放,旋转,拉伸等等.这包括单个控件,如button,复合控件(如ListBox)和容器(如StackPanel).

例外

以下是例外情况:

>如果您使用的是Adorner,并且您的AdornerDecorator位于平移/缩放区域之外,那么连接到平移/缩放区域的Adorner将平移但不会缩放.解决方案是在平移/缩放区域内放置一个额外的AdornerDecorator.
>如果使用d出窗口,它将显示在其PlacementTarget的平移/缩放位置,但它本身不会缩放.当您平移包含其PlacementTarget的区域时,它也不会移动(基本上它位于目标控件上方的自己的表面中).要解决此问题,请在缩放/平移区域内d出一些具有高Z顺序的零尺寸画布.
>您定义的任何ContextMenu都将显示在d出窗口内,因此即使您单击的区域放大或缩小,菜单项也会显示正常大小.由于上下文菜单的性质,这可能是理想的行为.如果没有,您可以将菜单项包装在VIEwBox中,并将缩放与主区域的缩放相结合.
>即使UI已平移或缩放,您的工具提示也会显示正常大小.与ContextMenu相同的解决方案.
>如果您使用WinForms集成来集成传统的WinForms控件和UI,它们将无法在某些情况下正确平移,缩放和剪辑.有一种先进的技术可以解决这个问题,在屏幕上实现WinForms控件,然后使用BitBlt或类似方法将图像作为图像复制到窗口中,并将鼠标点击和击键转发到屏幕外窗口.不过,这是很多工作.
>如果绕过WPF并直接使用GDI或DirectX,或使用Win32 hWnds显示内容或UI,则除非您在界面代码中自行完成,否则该内容或UI将无法正确平移,缩放或剪裁到窗口.

最后的笔记

>一个好的WPF UI总是使用GrID,DockPanel等面板以灵活的方式布局控件,以便它们自动调整到容器大小,而不是使用固定的大小和位置.对于平移/缩放区域的内部内容也是如此,但是此规则有一个例外:平移/缩放区域中最外面的元素必须具有指定的大小.否则,什么将定义被平移/缩放的区域?>实现平移/缩放功能的简便方法是调整平移/缩放区域中最外层控件的Rendertransform.有许多不同的方法来实现平移和缩放控件,例如,您可以使用工具栏按钮和滑块,滚动条,鼠标滚轮,空格键拖动平移,平移UI本身的可拖动区域或这些的任意组合.无论您选择哪种界面,只需从代码隐藏中更新Rendertransform,您就可以开始使用了.>如果您选择的平移机制是滚动条,您可能需要使用ScrollVIEwer并仅使用Rendertransform进行缩放.>确保在平移/缩放区域设置剪裁.否则,如果放大或平移侧面的项目,它们仍将在平移/缩放区域外可见.

总结

以上是内存溢出为你收集整理的WPF和Silverlight控件和布局平移和缩放功能全部内容,希望文章能够帮你解决WPF和Silverlight控件和布局平移和缩放功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1002066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存