Пошерстил интернет на данную тему и нашел примерно такую реализацию:
<Image x:Name="Image" HorizontalAlignment="Left" Height="205" Margin="97,105,0,0" VerticalAlignment="Top" Width="281" Source="К чему применять маску.jpeg">
<Image.OpacityMask>
<ImageBrush ImageSource="Изображение, выступающие в качестве маски.jpeg"/>
</Image.OpacityMask>
</Image>
Однако нужна возможность передвигать маску. Как это можно сделать или как в качестве маски выбрать другое изображение(как элемент)?
Свойство Transform у ImageBrush, В частности использовать TranslateTransform в Transform
<Image Name="m_Image" Source="К чему применять маску.jpeg">
<Image.OpacityMask>
<ImageBrush ImageSource="Изображение, выступающие в качестве маски.png">
<ImageBrush.Transform>
<TranslateTransform X="100" Y="100"/>
</ImageBrush.Transform>
</ImageBrush>
</Image.OpacityMask>
</Image>
Подробнее о трансформациях можно узнать в этой статье.
Однако добиться прозрачности у меня получилось только с png полупрозрачным файлом в качестве маски.
UPD: Изменение через код:
if ((m_Image.OpacityMask as ImageBrush)?.Transform is TranslateTransform)
{
((m_Image.OpacityMask as ImageBrush).Transform as TranslateTransform).X=110;
((m_Image.OpacityMask as ImageBrush).Transform as TranslateTransform).Y=110;
}
UPD: Изменение через привязку данных:
поскольку у TranslateTransform есть DependencyProperty XProperty, YProperty;
то можно назначать их с помощью привязки данных, например:
<TranslateTransform X="{Binding Something}" Y="{Binding Something}"/>
Продвижение своими сайтами как стратегия роста и независимости