win10 app - 保持宽高比的圆角图像

时间:2015-05-17 20:15:43

标签: win-universal-app windows-10

只显示图片列表的简单应用。图像列表必须保持纵横比,但是全窗口宽度+一点边距。困难的部分是使图像另外有圆角。

想法?

我只有成功使用ImageBrush,但使用它的任何控件都不能保持纵横比。例如,您必须在此处设置高度和宽度。

<Rectangle RadiusX="10" RadiusY="10" Stretch="Fill" Width="100" Height="100" >
    <Rectangle.Fill>
         <ImageBrush ImageSource="{Binding}"></ImageBrush>
     </Rectangle.Fill>
</Rectangle>

完整来源:http://1drv.ms/1HlZHVe

2 个答案:

答案 0 :(得分:0)

我的图像(在我的UWP应用程序中)通过使用ImageBrush获得了很好的圆角,但是如果你以编程方式执行此操作时要小心 - 我第一次设法使用我的内存相当差并且消耗太多(差编码)。

我正在使用ImageBrush,就像你看起来那样,但我没有得到任何宽高比的失真;确保您正确设置Stretch等属性 - 例如Stretch.UniformToFill

<Rectangle x:Name="rctCardFace" Margin="0"  RadiusX="20" RadiusY="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Rectangle.Fill>
        <ImageBrush Stretch="UniformToFill"/>
    </Rectangle.Fill>
</Rectangle>

或者在C#中

Uri path = new Uri(_ActiveStyle.BackgroundImagePath, UriKind.Absolute);
BitmapImage bitmapImage = new BitmapImage(path);

if (_AppReference.CardManager.TempImgBrush == null)
{
  _AppReference.CardManager.TempImgBrush = new ImageBrush();
}

_AppReference.CardManager.TempImgBrush.ImageSource = bitmapImage;
_AppReference.CardManager.TempImgBrush.Stretch = _ActiveStyle.BackgroundImageStretch;
_AppReference.CardManager.TempImgBrush.AlignmentX = _ActiveStyle.BackgroundImageAlignX;
_AppReference.CardManager.TempImgBrush.AlignmentY = _ActiveStyle.BackgroundImageAlignY;
cfPreview.ImgB = _AppReference.CardManager.TempImgBrush;

答案 1 :(得分:0)

您好,您可以使用以下代码在UWP中创建圆角图像:

<Ellipse Width="250" Height="250">
    <Ellipse.Fill>
        <ImageBrush ImageSource="ms-appx:///highfive.jpg" />
    </Ellipse.Fill>
</Ellipse>