代码之家  ›  专栏  ›  技术社区  ›  ChrisUK

如何将图像沿两条边合并到背景中?

  •  2
  • ChrisUK  · 技术社区  · 6 年前

    我正在尝试在我的应用程序中创建一种时尚效果,允许图像位于右上角,左下边缘使用 image.opacitymask合并为背景色。比如:

    可以使用以下代码完成此操作,除非 image.opacitymask only allows for one child lineargradientbrush :。

    <image source=“images/paster.jpgwidth=“300”>
    <image.opacitymask>
    <linearGradientBrush startpoint=“1,0.5”endpoint=“0,0.5”>
    <GradientStop color=“black”offset=“0.2”/>
    <gradientstop color=“transparent”offset=“1.0”/>
    </lineargradientbrush>
    <linearGradientBrush startpoint=“0.5,0”endpoint=“0.5,1”>
    <GradientStop color=“black”offset=“0.2”/>
    <gradientstop color=“transparent”offset=“1.0”/>
    </lineargradientbrush>
    </image.opacitymask>
    &图像/GT;
    < /代码> 
    
    

    如何使用有效代码创建image.opacitymasklike this?我知道有一个radialGradientBrush,但这将混合整个图像,而不仅仅是左边缘和下边缘。Image.OpacityMask. 类似:

    enter image description here

    这可以使用以下代码完成,除非图片.opacitymask只允许一个孩子LinearGradientBrush:

        <Image Source="Images/poster.jpg" Width="300">
            <Image.OpacityMask>
                <LinearGradientBrush StartPoint="1, 0.5" EndPoint="0, 0.5">
                    <GradientStop Color="Black" Offset="0.2" />
                    <GradientStop Color="Transparent" Offset="1.0" />
                </LinearGradientBrush>
                <LinearGradientBrush StartPoint="0.5, 0" EndPoint="0.5, 1">
                    <GradientStop Color="Black" Offset="0.2" />
                    <GradientStop Color="Transparent" Offset="1.0" />
                </LinearGradientBrush>
            </Image.OpacityMask>
        </Image>
    

    如何创建图片.opacitymask像这样有有效的代码?我知道RadialGradientBrush但这将混合整个图像,而不仅仅是左边缘和下边缘。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Clemens    6 年前

    <Border HorizontalAlignment="Right" VerticalAlignment="Top" Width="300">
        <Border.OpacityMask>
            <LinearGradientBrush StartPoint="1, 0.5" EndPoint="0, 0.5">
                <GradientStop Color="Black" Offset="0.2" />
                <GradientStop Color="Transparent" Offset="1.0" />
            </LinearGradientBrush>
        </Border.OpacityMask>
        <Image Source="Images/poster.jpg">
            <Image.OpacityMask>
                <LinearGradientBrush StartPoint="0.5, 0" EndPoint="0.5, 1">
                    <GradientStop Color="Black" Offset="0.2" />
                    <GradientStop Color="Transparent" Offset="1.0" />
                </LinearGradientBrush>
            </Image.OpacityMask>
        </Image>
    </Border>