none
如何获取Image四边的坐标 RRS feed

  • 问题

  • 我想做RenderTransfrom,旋转中心为图片的中心,可是图片的Bottom和Left都找不到,获取Margin,Margin值为0,怎么处理呢?
    2014年6月20日 2:18

答案

  • 你好。

    利用RotateTransform实现图片绕图片中心旋转,只需要知道图片的 ActualWidth 和 ActualHeight ,或者 Width 和 Height 即可。

    1. 如果图片的 Width 和 Height 已知,那么 RotateTransform 的 CenterX 和 CenterY 分别设为 Width 和Height 的 1/2 :

    <Image Source="Assets/12.png" Width="200" Height="300" x:Name="img">
        <Image.RenderTransform>
            <RotateTransform Angle="90" CenterX="100" CenterY="150"/>
        </Image.RenderTransform>
     </Image>

    2. 如果图片的 Width 和 Height 未知,或者不固定。那么就需要利用到 ActualWidth 和 ActualHeight :

    <Image Source="Assets/12.png" x:Name="img">
        <Image.RenderTransform>
            <RotateTransform Angle="90" 
                                CenterX="{Binding ActualWidth, ElementName=img, Converter={StaticResource centerConverter}}" 
                                CenterY="{Binding ActualHeight, ElementName=img, Converter={StaticResource centerConverter}}"/>
        </Image.RenderTransform>
    </Image>

    这里我们使用了Converter来对尺寸和中心进行转换。XAML中引入Converter所在命名空间的应用后,在Page.Resources中定义这个Converter。

    <Page.Resources>
        <converter:CenterConverter x:Key="centerConverter"/>
    </Page.Resources>

    Converter 的写法如下:

    using System;
    namespace Memo.WinRT
    {
        class CenterConverter : Windows.UI.Xaml.Data.IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, string info)
            {
                if (value == null || !(value is double))
                    return 0;
                return (double)value / 2.0;
            }
            public object ConvertBack(object value, Type targetType, object parameter, string info)
            {
                return null;
            }
        }
    }




    2014年6月20日 3:00
    版主