Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 利用锚计算比例尺_Wpf_Silverlight_Xaml_Winrt Xaml_Transform - Fatal编程技术网

Wpf 利用锚计算比例尺

Wpf 利用锚计算比例尺,wpf,silverlight,xaml,winrt-xaml,transform,Wpf,Silverlight,Xaml,Winrt Xaml,Transform,在高层,我需要一个usercontrol和contentpresenter如下: <UserControl> <ContentPresenter /> </UserControl> class ResizeConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string la

在高层,我需要一个
usercontrol
contentpresenter
如下:

<UserControl>
    <ContentPresenter />
</UserControl> 
class ResizeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, 
        object parameter, string language)
        { return 1 / System.Convert.ToDouble(value); }
    public object ConvertBack(object value, Type targetType, 
        object parameter, string language)
        { throw new NotImplementedException(); }
}
第二哇,这个比看起来要难。更改
renderTransferMorigin
的值时,将使用新值重新渲染任何现有变换。我不是100%知道如何在更改该值之前正确地适应现有转换

第三这就是问题所在。计算指针的当前位置并不太困难。计算如何在指针下定位-这也有点容易。但考虑到基础对象的比例,使其正确填充(甚至倾斜),使其适合新定义的框?没有线索

老实说,我认为计算从原始操纵起点到当前操纵位置的距离可能很重要。为此,我创建了一个很好的方法:

private double Distance(Point point1, Point point2)
{
    var x1 = point1.X;
    var y1 = point1.Y;
    var x2 = point2.X;
    var y2 = point2.Y;
    return Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2));
}
事实是,我只是部分确定自己走上了正确的道路

这已经在很多现有代码中实现了,但在C#中没有,也没有使用XAML。VisualStudio允许您使用定位调整设计器元素的大小。这不是一个新奇的概念。但是,我的目标仍然是解决这个问题,并发布一个任何开发人员都可以在他们的XAML应用程序(包括我自己的)中使用的工作示例。但是这里有些事情让我很难受


有人能帮我解决这部分问题吗?

我不确定,但是这个项目有很多规模和锚用于设计图表,也许你从这里得到了灵感
;-)

您不应该在
UserControl
中尝试这样做。使用装饰器。。。这正是他们的目的。有关更多信息,请参阅MSDN上的页面。
private double Distance(Point point1, Point point2)
{
    var x1 = point1.X;
    var y1 = point1.Y;
    var x2 = point2.X;
    var y2 = point2.Y;
    return Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2));
}