Создание элемента управления изображения инвертировать его цвета в зависимости от темы - PullRequest
5 голосов
/ 11 января 2011

Я пытаюсь выяснить, как элемент управления Image в моем приложении для Windows Phone инвертирует его цвета на основе общих настроек фона («Темный» или «Светлый»), выбранных пользователем в меню «Настройки» ->Темы-> Фон.

Ответы [ 3 ]

5 голосов
/ 11 января 2011

Нет встроенного способа инвертировать цвета изображения в рамках.

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

4 голосов
/ 06 июля 2012

Этому Вопросу уже 1,5 года.Но здесь - это самый простой способ сделать то, что вы хотите.Приведенный здесь пример очень прост:

<Button>
    <Image Stretch="None" Source="{Binding Converter={StaticResource ThemedImageConverter}, ConverterParameter={StaticResource PhoneBackgroundColor} }"
           DataContext="/WP7SampleProject4;component/Images/{0}/appbar.feature.camera.rest.png" />
</Button>
4 голосов
/ 12 января 2011

Я должен добавить, что то, что я сделал в конце, было продолжением того, что написал Мэтт.

  • создайте два разных изображения с разными версиями изображения (темное и светлое) и поместите их в одно и то же положение
  • установить их видимость на основе ресурса темы

код выглядит так:

<Image Height="30" HorizontalAlignment="Center" Margin="0,0,0,220" Name="imgDark" Stretch="Fill" Visibility="{StaticResource PhoneLightThemeVisibility}" VerticalAlignment="Center" Width="30" Source="/MyApplication;component/imageDarkTheme.png" />
<Image Height="30" HorizontalAlignment="Center" Margin="0,0,0,220" Name="imgLoading" Stretch="Fill" Visibility="{StaticResource PhoneDarkThemeVisibility}" VerticalAlignment="Center" Width="30" Source="/MyApplication;component/imageLightTheme.png" />
...