2011-12-15 1 views
1

Я работаю над элементом управления панелью инструментов и должен придумать какой-то эффект, чтобы сделать кнопку greyed или что-то в этом роде.Создание отключенного состояния для моей кнопки изображения PNG

Итак, допустим, у меня есть значки PNG, и я хочу как-то «обесцвечивать» их. Можно ли это сделать с помощью XAML? Или мне нужно написать код для этого? Любые указатели?

ответ

0

Вы можете использовать попиксельные фильтры, как показывает Christian Graus в Его Image Processing for Dummies with C# and GDI+ Part 1 - Per Pixel Filters (Download source):

unsafe 
{ 
    byte * p = (byte *)(void *)Scan0; 

    int nOffset = stride - b.Width*3; 

    byte red, green, blue; 

    for(int y=0;y < b.Height;++y) 
    { 
     for(int x=0; x < b.Width; ++x) 
     { 
      blue = p[0]; 
      green = p[1]; 
      red = p[2]; 

      p[0] = p[1] = p[2] = (byte)(.299 * red 
       + .587 * green 
       + .114 * blue); 

      p += 3; 
     } 
     p += nOffset; 
    } 
} 

Смотрите связанную страницу для большего количества примеров и других фильтров.

+0

Действительно ли GDI + работает в Silverlight? – katit

+0

Упс! Я не видел этого тега! Однако, после того, как тыкаешься в сети, я не могу найти нигде, что окончательно говорит, что ты не можешь использовать их вместе. –

0

Просто установите непрозрачность изображения на 30 или 50 процентов, если Button.IsEnabled является ложным.

Редактировать: Я полагаю, вы можете изменить свойство Image.Source в файл с отключенным изображением. Есть несколько способов сделать это: иметь два элемента изображения и привязать свойство видимости к свойству IsEnabled кнопки; запустите свойство Image.Source через преобразователь значений; или используйте триггер Blend для изменения свойства Source при изменении свойства IsEnabled.

+0

Цвет все еще будет там, и я не хочу этого – katit

+0

Тогда вам нужно использовать ресурсы XAML вместо PNG. Это одна из нескольких причин, по которой ресурсы XAML лучше, чем файлы статического изображения. –

+0

Мой дизайнер не знает, как работать XAML. Невозможно изменить изображения в SL? – katit

Смежные вопросы