
Механизм создания многосегментных компонентов WPF на примере 7 и 16 сегментов
Practical_Developer 1 час назад Механизм создания многосегментных компонентов WPF на примере 7 и 16 сегментов Средний 4 мин 2.3K .NET * C# * 7 и 16-сегментные дисплеиНазначение сегментного дисплеяКаждый наверняка уже...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Practical_Developer 1 час назад Механизм создания многосегментных компонентов WPF на примере 7 и 16 сегментов Средний 4 мин 2. NET * C# * 7 и 16-сегментные дисплеиНазначение сегментного дисплеяКаждый наверняка уже встречался в жизни и быту с сегментными дисплеями отображения информации. Подобные решения используются в различных электронных устройствах: табло терминалов, бытовая техника, кассовые аппараты.
Такие индикаторы состоят из множества сегментов, некоторые подсвечиваются, формируя текст. 7-сегментные дисплеи используются, в основном, для отображения цифр. Чтобы показать буквы и символы применяются 14 или 16 сегментов.
Технические детали
В интернете можно повстречать шрифты или уже готовые библиотеки и компоненты для эмуляции таких дисплеев. Иногда, такой стандартной реализации может быть недостаточно – в особенности при изменении таких настроек как, например, размер самих сегментов или заливка сегментов. Поэтому самостоятельная разработка может помочь внедрить решение под свои собственные нужды и со многими опциями.
В данной статье разбирается, как осуществить пользовательский многосегментный WPF компонент. Кроме того, это может содействовать в изучении внутреннего устройства C#, . NET и самой платформы WPF.
Этот полностью переработанный материал основан на моей ранней публикации 2019 года для CodeProject. Идея реализации Вся логика отображения сегментов осуществляется классом Geometry из библиотеки Windows Presentation Foundation (WPF) для описания фигур. Из множества методов этого класса в проекте могут понадобиться: LineSegment и PolyLineSegment для создания замкнутой фигуры, различные кривые Безье PolyBezierSegment, PathGeometry для создания набора созданных фигур.
Отраслевые последствия
DrawGeometry из класса DrawingContext отображает созданные элементы. Программирование отрисовки фигур Geometry происходит в абстрактном generic классе SegmentBase. От него могут наследоваться классы для создания многосегментных компонентов.
В качестве универсального generic параметра передается битовая маска, для описания сегментов в виде битов. Например, для 7 сегментов: public enum То есть, для примера 1 << 2 происходит сдвиг числа один - 0000001 в двоичной системе влево на 2 разряда – 0000100. Для формирования символов создается комбинация битов через дизъюнкцию и заносится в словарь Dictionary , SevenSegmentsFlags> .
Пример:public static readonly Dictionary Map = new ;Для символа ‘1’ получается маска 0000011. В классе SegmentBase используется метод ApplyMask для включения необходимых сегментов, то есть последовательно применяется конъюнкция сегментов фигуры с маской:protected void ApplyMask(uint mask) { foreach (var figure in GeometryFigures) { uint figureMask = Convert. SegmentNumber); figure.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





