gpt4 book ai didi

c# - 缩放缩放因子

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:43 24 4
gpt4 key购买 nike

我使用滚轮通过以下方法放大和缩小对象:

void OnPreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
lastMousePositionOnTarget = Mouse.GetPosition(grid);

double max = 255;
double min = .005;

var deltaScale = Math.Max(Math.Log(scaleTransform.ScaleX), double.Epsilon);
var delta = e.Delta > 0 ? Math.Max(e.Delta * deltaScale, .5) : Math.Min(e.Delta * deltaScale, -.5);
double newScale = Math.Max(Math.Min((delta / 250d) + scaleTransform.ScaleX, max), min);

scaleTransform.ScaleX = newScale;
scaleTransform.ScaleY = newScale;

System.Diagnostics.Debug.WriteLine(newScale);

e.Handled = true;
}

我想让它在接近最大值时缩放得更慢,而在数字接近最小值时缩放得更快。我目前有一些作品,但不是很好。我怎样才能解决这个问题来做我想做的事?

最佳答案

假设我理解正确,您希望 deltaScale 在放大时较大,但在缩小时较小。从而使您在近距离时快速变焦,在远距离时慢速变焦。

如果 scaletransform.ScaleX 在放大时变小,请尝试如下操作:

var deltaScale = Math.Max(K * 1/(scaleTransform.ScaleX), double.Epsilon);

其中 K 只是一些常量,您可以随意使用,直到感觉合适为止。

如果 scaletransform.ScaleX 在您放大时变大,那么尝试像您的 log 这样的系数大于 1 的东西:

var deltaScale = Math.Max(5*Math.Log(scaleTransform.ScaleX), double.Epsilon);

关于c# - 缩放缩放因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40117973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com