wpf 中设置image圆角

给image添加clip(剪切)对象—rectanglegeometry
所以实则给rectanglegeometry添加圆角,这个很容易radiusX,和radiusY,可是给这个矩形几何对象添加rect就有意思了,需要这个矩形的大小等于image的大小,所以需要用到绑定了

<Image x:Name="image"  Stretch="Fill" Margin="10">
            <Image.Clip>
                <RectangleGeometry RadiusX="5" RadiusY="5">
                    <RectangleGeometry.Rect>
                        <MultiBinding Converter="{StaticResource rect}">
                            <Binding ElementName="image"></Binding>
                        </MultiBinding>
                    </RectangleGeometry.Rect>
                </RectangleGeometry>
            </Image.Clip>
            <Image.Source>
                <ImageSource>Resources/bj.jpg</ImageSource>
            </Image.Source>
        </Image>

下面为实现接口代码

class MultiBindingConverter : System.Windows.Data.IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            Image image = values[0] as Image;
            System.Windows.Size size = image.RenderSize;
            double x = size.Width;
            double y = size.Height;
            return new System.Windows.Rect(0, 0, x, y);
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

可以看到用到是多数据绑定,并没有使用普通数据绑定,但是此例子只添加了一个绑定对象 所以用普通数据绑定应该也可以,只要在普通绑定里面添加path为image的RenderSize属性即可

今天学习到两点
普通绑定似乎在用控件为源时,必须指明path,但是multibinding可以不需要,它可以直接传递源本身为参数

<RectangleGeometry.Rect>0,0,100,100</RectangleGeometry.Rect> 这个0,0,100,100写在xaml虽然呈现出字符串,但是如果多值转换器给的是字符串,没有作用,绑定返回的值应该为System.Windows.Rect(0, 0, x, y);
记得new 一下哟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值