Работа с треем. Создание иконки из ASCII символов на C#

{lang: 'ru'}

Здесь я хочу рассказать об одной интересной возможности. А именно, о том, как создать «на лету» и добавить в трей иконку из ASCII символов, т.е. добавить туда произвольный текст, средствами C# и .net. Честно говоря, я не очень хорошо представляю себе, где это может понадобиться на практике, но вдруг кому пригодится.

Для того, чтобы все получилось, нужно не забыть использовать пространства имен

Хотя, если что, то Visual Studio скорее всего сама про них вам напомнит.

Кратко о том, как будем создавать иконку:

  1. создаем bmp;
  2. задаем шрифт и его размеры;
  3. объект для рисования на bmp;
  4. создаем кисти нужного цвета;
  5. создаем прямоугольник нужных размеров (естественно, не больше bmp);
  6. рисуем нужный символ (а точнее даже «строчки»);
  7. создаем объект GDI+ из нашей bmp с символом ASCII;
  8. и подставляем его в качестве иконки

В принципе, это все, что нужно. Остальное – это уже нюансы реализации и полет фантазии каждого.

В этом проекте используются:


  • Bitmap – «Инкапсулирует точечный рисунок GDI+, состоящий из данных пикселей графического изображения и атрибутов рисунка. Объект Bitmap используется для работы с изображениями, определяемыми данными пикселей»;
  • Font – «Определяет конкретный формат текста, включая начертание шрифта, его размер и атрибуты стиля. Этот класс не может быть унаследован»;
  • Graphics – «Инкапсулирует поверхность рисования GDI+»;
  • SolidBrush – «Определяет кисть одного цвета. Кисти используются для заливки графических фигур, таких как прямоугольники, эллипсы, круги, многоугольники и контуры. Этот класс не может быть унаследован»;
  • RectangleF – «Содержит набор из четырех чисел с плавающей запятой, определяющих расположение и размер прямоугольника».

Подробнее о них можно посмотреть в MSDN.

Перейдем к коду. В нем относительный интерес представляют следующие участки кода:

И:

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

И как всегда в конце статьи, вот пример кода.


Полезная статья? Их будет больше, если вы поддержите меня!