Перемещение ImageBrush (маски прозрачности) для Image

361
25 августа 2017, 22:26

Пошерстил интернет на данную тему и нашел примерно такую реализацию:

<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>

Однако нужна возможность передвигать маску. Как это можно сделать или как в качестве маски выбрать другое изображение(как элемент)?

Answer 1

Свойство 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}"/>
READ ALSO
Помогите понять как работает код

Помогите понять как работает код

Мне нужно чтобы в массив urls добавлялись строки из hrefvalue, но вместо этого все строки добавляются в 0 элемент, метод ToArray() не помог

345
Незнакомый синтаксис в WPF проекте

Незнакомый синтаксис в WPF проекте

До сего момента не сильно сталкивался с WCFСегодня, разбирая чужой код, наткнулся на объявление свойства и присвоение ему пустого делегата:

299
Sqlite.net результат запроса в dictionary

Sqlite.net результат запроса в dictionary

Есть запрос в локальную базу данных

294
Смена курсора в WPF

Смена курсора в WPF

Как в WPF проекте можно изменить курсор мыши на свой, подгруженный в ресурсах проекта?

316