Эффекты (DropShadowEffect) в Windows Phone 7

Я заметил, что свойство «Эффект» отсутствует в Silverlight для Windows Phone 7, поэтому я немного погуглил, и, по-видимому, оно было удалено из-за проблем с производительностью. Я в основном хочу сделать что-то вроде этого

<TextBlock ...>
    <TextBlock.Effect>
        <DropShadowEffect/>
    </TextBlock.Effect>
</TextBlock>

И

<Image ...>
    <Image.Effect>
        <DropShadowEffect/>
    </Image.Effect>
</Image>

Так есть ли другой способ получить DropShadowEffect в Silverlight для Windows Phone 7? И есть ли новости, будет ли это в следующем релизе?

Спасибо


person Fredrik Hedblad    schedule 16.02.2011    source источник
comment
Я подозреваю, что перед тем, как это будет возвращено, должно произойти одно из двух (это было в CTP): 1) устройства должны быть более мощными; или 2) необходимо будет создать новый более быстрый алгоритм для создания эффекта. Я не ожидаю увидеть ни одного из них в ближайшее время, но был бы рад ошибиться.   -  person Matt Lacey    schedule 17.02.2011


Ответы (2)


С изображением вы можете просто создать тень в Photoshop/Gimp и т. д. (у меня это хорошо работает) и сохранить ее как .png.

С TextBlock немного сложнее. Например, создайте полупрозрачное изображение с тенью и поместите TextBlock и Image внутрь Canvas. Измените прикрепленное свойство Canvas.ZIndex="integer", чтобы расположить их в определенном порядке — изображение должно быть внизу. Также тень должна быть размыта.

Недостатки:

  • Тень статична.
  • Не очень подходит для метро UX.
person Lukasz Madon    schedule 17.02.2011
comment
Ваше первое предложение - это именно то, что я в итоге сделал. На самом деле как для изображения, так и для текста :) - person Fredrik Hedblad; 17.02.2011
comment
Я считаю, что тени все еще могут хорошо работать с дизайном метро, ​​как они сделали для нового интерфейса Xbox Live. :) - person Justin XL; 04.09.2012

<TextBlock ...>
 <TextBlock.RenderTransform>
  <TranslateTransform X="3" Y="3" />
 </TextBlock.RenderTransform>
</TextBlock>

<TextBlock ...>
</TextBlock>

Я хотел эффект тени, и это сработало для меня. Вам нужно поместить одинаковый контент в оба текстовых блока (кроме имени текстового блока). X и Y — горизонтальное и вертикальное расстояние тени от текста. Вы также можете использовать отрицательные числа, если они зависят от положения теней.

person Tushar Jain    schedule 04.09.2012