我有一个画布在scrollviewer
。这个画布是一个动态画布,可以在其上放置许多其他控件。滚动查看器将在拖动控件时显示&从画布区域中退出,即右侧和底部。动态画布内容适合在c#中的画布上点击适合屏幕按钮wpf
我已经实现了放大和缩小画布的代码,该画布可以很好地工作,但未能找到代码来实现适合实际画布大小的动态画布内容。
我正在寻找一些东西来自动将画布内容适合其大小,即计算缩放比例以适合画布大小。
我有一个画布在scrollviewer
。这个画布是一个动态画布,可以在其上放置许多其他控件。滚动查看器将在拖动控件时显示&从画布区域中退出,即右侧和底部。动态画布内容适合在c#中的画布上点击适合屏幕按钮wpf
我已经实现了放大和缩小画布的代码,该画布可以很好地工作,但未能找到代码来实现适合实际画布大小的动态画布内容。
我正在寻找一些东西来自动将画布内容适合其大小,即计算缩放比例以适合画布大小。
这是一个复杂的。 你应该与ScrollViewer中的一些性质工作,得到期望的结果:ContentHorizontalOffset,ContentVerticalOffset,ViewportWidth,ViewportHeight(其中包括现有的组件。)
这里的代码,帮助我的一个片段:
Point realSize = new Point(this.canvasAreas.ActualHeight, this.canvasAreas.ActualWidth);
Point sizeAvailable = new Point(this.scroolMain.ActualHeight, this.scroolMain.ActualWidth);
double scaleX = sizeAvailable.X/realSize.X;
double scaleY = sizeAvailable.Y/realSize.Y;
double newScale = Math.Round(Math.Min(scaleX, scaleY), 2);
this.gridScaleZoom.ScaleX = newScale;
this.gridScaleZoom.ScaleY = newScale;
在CodeProject上有几篇文章,并在谷歌上看,可以帮助您使用ScrollViewer缩放。 虽然大多数是复杂和复杂的。希望这可以帮助你一点。
这里是我的XAML代码:
和按钮点击我想扩展accordingly.I曾尝试下面的代码。
Point realSize = new Point(this.formCanvas.ActualHeight, this.formCanvas.ActualWidth);
Point sizeAvailable = new Point(this.myScrollViewer.ActualHeight, this.myScrollViewer.ActualWidth);
double scaleX = sizeAvailable.X/realSize.X;
double scaleY = sizeAvailable.Y/realSize.Y;
double newScale = Math.Round(Math.Min(scaleX, scaleY), 2);
this.canvasScale.ScaleX = newScale;
this.canvasScale.ScaleY = newScale;
结果也一样。 如果不正确,请更正代码。
我已经尝试过上面的代码。但问题是我想显示画布以适应屏幕上有多少点击,如果我执行。如果画布加载的是尽可能多的它应该根据比例缩小或增大画布。如果它不正确,请更正我的代码。 – user1495759
感谢您的帮助。 – user1495759
我已经试过这段代码,它在每次点击fittoscreen按钮时都会应用比例尺。实际上,它应该适合屏幕,但执行的点击次数很多,相反,由于每次都会应用缩放比例,因此画布上的控件正变得越来越小。我尝试了很多文章,但是我没有找到找到动态缩放因子的解决方案帆布。 – user1495759
我的代码,如果使用得当,将会得到缩放比例X和Y的结果,以显示没有滚动的所有组件(fittoscreen)。我无法理解你的问题,你可以发布一些代码片段或更好地解释? –