Как создать некоторую маску слоя в Silverlight?

#silverlight #xaml #silverlight-3.0

#silverlight #xaml #silverlight-3.0

Вопрос:

У меня есть объект image и объект rectangle. Теперь я хочу, чтобы изображение было видно только там, где находится прямоугольник, все остальное должно иметь непрозрачность 0,5 — результат должен выглядеть примерно следующим образом:

пример

Когда я устанавливаю непрозрачность прямоугольника на 0,5, эффект получается противоположный — так как же я могу реализовать это, как показано на рисунке? Размер и положение прямоугольника изменяются с помощью встроенного кода, но это не должно иметь никакого значения…

Все подсказки / ответы приветствуются 🙂

Ответ №1:

Если вы хотите добавить непрозрачную маску, чтобы частично скрыть ваше изображение за пределами прямоугольника, это довольно просто.

 <Grid>
  <Image Source="myImage.jpg" Opacity="0.5/>
  <Image Source="myImage.jpg" >
   <Image.Clip>
     <RectangleGeometry Rect="x,y,w,h"/>
   </Image.Clip>
  </Image>

</Grid>
  

Где x, y, w и h — это положение и размер вашего прямоугольника (см. MSDN). Если вы хотите переместить видимую часть, задайте свойство Clip с помощью кода.

Если вы хотите добавить «эффект черной обводки», вы могли бы просто добавить прямоугольник с положением и размером, соответствующими вашему контуру обрезки, после второго изображения в вашей сетке.

Хотите больше информации?