четверг, 14 февраля 2013 г.

кнопка с иконкой html

<Path x:Key="IconTriangle" x:Shared="False" Stretch="Uniform" Data="M50.25,133.5 L49.75,158.25 76,147.25 z" Fill="Black" Stroke="Black"/>

<!-- Resource dictionary entries should be defined here. -->

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

С этим элементом я поступаю так в проект добавляю ResourceDictionary с именем Icons.xaml и кладу в него все нужные мне иконки:

Лучшее из того, что я нашел (не реклама). Это бесплатный продукт, в котором есть 1700 векторных иконок и средства вывода этих иконок в XAML. Результат получается в виде сложного элемента, из которого достаточно скопировать лишь Path, который описывает саму геометрию иконки.

Но не стоит огорчаться в сети десятки и сотни ресурсов с векторными картинками.

После первых же экспериментов стало очевидно, что XAML и иконки в виде png вещи несовместимые. Не буду долго растекаться почему так литературы на эту тему хватает, скажу только что в итоге получается и некрасиво, и неудобно, и нефункционально. Картинки размытые, наложенные эффекты и анимация выглядят удручающе и т.д

Небольшое отступление номер 1

Среди десятков просмотренных результатов нашлись очевидные как очевидные (и при этом неудобные) пути решения, так и более изощренные.

Не так давно я в очередной раз столкнулся с необходимостью решения этой очень простой (казалось бы) задачи. Я истерзал весь гугл запросами типа XAML button with image WPF button image text и т.д.

Существуют и сторонние библиотеки компонентов, но они, чаще всего, либо бесполезны, либо безнадежно устарели, либо сильно платные.

Все дело в том, что у WPF (точнее у XAML) совершенно иная идеология организации интерфейса. Базовые контролы представляют лишь базовый (простите за тавтологию) функционал. Простота базовых контролов компенсируется мощными механизмами шаблонов и стилей.

Как же так? Ну неужели у кнопки нет свойства Image? Вы ведь шутите, правда?

Но при чуть более тесном знакомстве и попытке натянуть привычные способы построения интерфейса на XAML и приходит та самая растерянность.

Он очень похож на старого знакомого из WinForms. Даже сигнатура обычных методов либо полностью совпадает, либо претерпела незначительную трансформацию (ну, например, свойство Enabled получило приставку Is). Настроек у контролов много, от параметров визуализации рябит в глазах.

Казалось бы вот он знакомый контрол.

Я думаю что каждый (или почти каждый), из тех, кто приходит в WPF из WinForms, поначалу испытывает растерянность по поводу функционала стандартных контролов.

WPF: 4 варианта кнопки с иконкой и текстом

WPF: 4 варианта кнопки с иконкой и текстом / Хабрахабр

Комментариев нет:

Отправить комментарий