Example #1
0
        // процедура генерации иконки
        public Icon GeneratedIcon(DSServerStatus stat)
        {
            //создаем битмапку 16х16
            Bitmap bmp = new Bitmap(16, 16);
            //задаем шрифт и его размеры
            Font font = new Font("MS Sans Serif", 8, FontStyle.Regular);
            //создаем объект класса для рисования "из картинки"
            Graphics graphics = Graphics.FromImage(bmp);
            graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
            //создаем кисть для прозрачного фона
            SolidBrush whiteBrush = new SolidBrush(Color.FromArgb(0, 1, 1, 1));
            // кисть текста
            SolidBrush txtBrush;
            // строка текста для трея
            string txt = "";
            txtBrush = new SolidBrush(Color.Blue);

            switch (stat)
            {
                case DSServerStatus.NORMAL:
                    // кистью будем писать буквы
                    txtBrush = new SolidBrush(Color.Blue);
                    //создаем кисть для прозрачного фона
                    whiteBrush = new SolidBrush(Color.FromArgb(0, 1, 1, 1));
                    txt = "N";
                    break;
                case DSServerStatus.SERVER_STOPPED:
                    // кистью будем писать буквы
                    txtBrush = new SolidBrush(Color.Blue);
                    //создаем кисть для прозрачного фона
                    whiteBrush = new SolidBrush(Color.FromArgb(0, 1, 1, 1));
                    txt = "‖";
                    break;
                case DSServerStatus.NO_COMMUNICATION_CONTROLLER:
                case DSServerStatus.TEMP_DEVICE1_ERROR:
                case DSServerStatus.TEMP_DEVICE2_ERROR:
                case DSServerStatus.TEMP_DEVICES_ERROR:
                    // кистью будем писать буквы
                    txtBrush = new SolidBrush(Color.White);
                    //создаем кисть для прозрачного фона
                    whiteBrush = new SolidBrush(Color.FromArgb(255, 0, 0));
                    txt = "E";
                    break;

            }
            //создаем прямоугольник 16х16 с начальными координатами (0,0)
            RectangleF canvas = new Rectangle(0, 0, 16, 16);
            Pen pn = new Pen(txtBrush.Color);
            Rectangle rct = new Rectangle(1, 1, 14, 14);
            graphics.DrawRectangle(pn, rct);
            //закрашиваем его "фоновой" кистью
            graphics.FillRectangle(whiteBrush, canvas);

            // Set format of string.
            StringFormat drawFormat = new StringFormat();
            drawFormat.Alignment = StringAlignment.Center;
            drawFormat.LineAlignment = StringAlignment.Center;

            //пишем в нем заданную букву красной кистью
            graphics.DrawString(txt, font, txtBrush, canvas, drawFormat);
            //пишем в нем заданную букву
              //  graphics.DrawString(txt, font, txtBrush, new PointF(0, 2));
            //преобразуем картинку bmp в иконку
            return Icon.FromHandle(bmp.GetHicon());
        }
Example #2
0
 // процедура изменения статуса
 public void ChangeStatus(DSServerStatus newStatus)
 {
     curStatus = newStatus;
     switch (curStatus)
     {
         case DSServerStatus.NORMAL:
             trayIcon.Text = "Норма";
         break;
         case DSServerStatus.NO_COMMUNICATION_CONTROLLER:
             trayIcon.Text = "Нет связи с контроллером";
         break;
         case DSServerStatus.TEMP_DEVICE1_ERROR:
             trayIcon.Text = "Ошибка датчика температуры 1";
         break;
         case DSServerStatus.TEMP_DEVICE2_ERROR:
             trayIcon.Text = "Ошибка датчика температуры 2";
         break;
         case DSServerStatus.TEMP_DEVICES_ERROR:
             trayIcon.Text = "Ошибка  обоих датчиков температуры";
         break;
         case DSServerStatus.SERVER_STOPPED:
              trayIcon.Text = "Сервер остановлен \r\n (COM порт освобожден)";
         break;
     }
     statuslStatus.Text = trayIcon.Text;
     trayIcon.Icon = GeneratedIcon(curStatus);
 }