Изменение иконки FontColor в зависимости от выбора - PullRequest
1 голос
/ 26 апреля 2011

У меня довольно простой вопрос: как изменить значок в зависимости от выбора цвета?

Скажем, я начинаю с буквы А, подчеркнутой красным. Если я выберу синий в палитре цветов, как мне получить этот синий цвет под моим A?

Спасибо Команда JoKi

1 Ответ

4 голосов
/ 26 апреля 2011

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

Я предполагаю, что под "значком" вы подразумеваете найденное вами изображение, похожее на то, которое используется в Microsoft Word: И я предполагаю, что вы поместили этот значок на панель инструментов какого-то типа. Кроме того, я предполагаю, что после нажатия значка (или стрелки раскрывающегося меню рядом со значком) на панели инструментов пользователю предоставляется элемент управления палитрой цветов, из которого он может выбрать собственный цвет.

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

Короткий ответ: ты не можешь. Если обратить пристальное внимание, большинство приложений не обновляют цвет этого значка в соответствии с выбранным цветом. Это намного больше работы, чем стоит, учитывая, что после завершения она будет мало полезна для вашего приложения. Удивительно немногие пользователи даже заметят эту "особенность".

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

После того как вы создали значок шаблона, вам нужно написать код, который загружает этот значок в растровое изображение (System.Drawing.Bitmap), заполняет соответствующую прямоугольную область выбранным цветом (Graphics.FillRectangle), а затем преобразует это растровое изображение обратно в значок. Наконец, назначьте иконку, которую вы создали в памяти, кнопке панели инструментов и удивитесь тому, чего вы достигли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...