Laden...

7-Segmentanzeige und Uhrzeitenanzeige

Erstellt von _Bugrick_ vor 12 Jahren Letzter Beitrag vor 8 Jahren 21.914 Views
_
_Bugrick_ Themenstarter:in
48 Beiträge seit 2011
vor 12 Jahren
7-Segmentanzeige und Uhrzeitenanzeige

Beschreibung:

Die DLL enthält 3 (eig 4) Controls:

  • Eine einfache 7-Segmentanzeige, als Wert ist ein einfacher Integer zuweisbar.
  • Ein passendes Control, das einen Doppelpunkt und ein Komma bereitstellt
  • Ein Uhrzeiten-Panel, dass 6 7-Segmentanzeigen und 2 Doppelpunkte enthält, man kann jedes Segment einzeln ansprechen oder dem Control ein DateTime zuweisen. Außerdem hat es ein MouseClick-ähnliches Event.

Allen Controls ist ein "LedLayout" zuweisbar, außerdem kann man auswählen ob inaktive Segmente angezeigt werden sollen. Jedes Control hat eine nichtveränderbare Größe (vll arbeite lass ich mir da aber noch was einfallen^^).

Die 7-Segmentanzeige arbeitet nach folgender Logik (hatte wohl nen guten Tag, sonst wäre mir sowas nie eingefallen^^):
Siehe Anhang

Hier ein paar Screenshots der Controls:
Siehe Anhang

Viel Spaß damit, Kritik und Verbesserungsvorschläge aller Art sind natürlich erwünscht 😉

Der Quellcode ist etwas zu umfangreich, um ihn hier zu posten, am besten mal in der Entwicklungsumgebung angucken 😃

Hier nur einmal die Basisklasse:


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace LedControls
{
    public class LedControl : Control
    {
        bool _bPaintDarkControls = false;
        Color _col = new Color();
        Color _colDark = new Color();

        public LedControl()
        {
            this.SetStyle(ControlStyles.DoubleBuffer |
                ControlStyles.UserPaint |
                ControlStyles.AllPaintingInWmPaint |
                ControlStyles.SupportsTransparentBackColor |
                ControlStyles.ResizeRedraw, true); 
            this.BackColor = Color.Black;
            this.LedLayout = LedControls.LedLayout.BlueLayout;
        }

        /// <summary>
        /// Gets or sets a value whether the visibility for all segments is enabled.
        /// </summary>
        public bool ShowDisenabledSegments
        {
            get { return _bPaintDarkControls; }
            set
            {
                _bPaintDarkControls = value;
                this.Invalidate();
            }
        }

        /// <summary>
        /// Gets or sets the main color for all enabled segments.
        /// </summary>
        public Color EnabledColor
        {
            get { return _col; }
            set
            {
                _col = value;
                this.Invalidate();
            }
        }

        /// <summary>
        /// Gets or sets the main color of all disenabled segments.
        /// </summary>
        public Color DisenabledColor
        {
            get { return _colDark; }
            set
            {
                _colDark = value;
                this.Invalidate();
            }
        }

        /// <summary>
        /// Gets or sets both colors for all segments.
        /// </summary>
        public Color[] LedLayout
        {
            get { return new Color[2] { _col, _colDark }; }
            set
            {
                _col = value[0];
                _colDark = value[1];
                this.Invalidate();
            }
        }
    }
}

Schlagwörter: LedControl, 7-Segmentanzeige, Siebensegmentanzeige, 7Segmentanzeige

Das Demoprojekt hat wegen 5KB (!) leider nicht mehr in diesen Anhang gepasst und folgt im nächsten Beitrag/Anhang

_
_Bugrick_ Themenstarter:in
48 Beiträge seit 2011
vor 12 Jahren
7-Segmentanzeige und Uhrzeitenanzeige

Wie angekündigt, hier das Demoprogramm.

_
_Bugrick_ Themenstarter:in
48 Beiträge seit 2011
vor 12 Jahren
_
_Bugrick_ Themenstarter:in
48 Beiträge seit 2011
vor 12 Jahren
177 Beiträge seit 2009
vor 12 Jahren

Hi Bugrick,

mir gefällt deine LED Anzeige sehr gut, ich würde diese gerne verwenden um eine Anwendung zu entwickeln mit der man "Rennzeiten" erfassen kann. Damit wir bei unseren MTB Fun Rennen folgende Methode sparen 😃

Ich hoffe du hast nichts dagegen. Vielen Dank.

Hinweis von herbivore vor 12 Jahren

Wenn nichts anderes angegeben ist, gilt folgende Lizenz: Lizenzbedingungen für die Projekte / Spezielle Regeln für Projekte-Threads.

177 Beiträge seit 2009
vor 10 Jahren

Mir gefällt die LED Anzeige noch immer gut...

Ich hab mal ein Windows Phone 7 User Control draus gemacht.
Geht wahrscheinlich schicker, und WP Konformer, aber es funktioniert...

Anstatt die Segmente im Paint zu zeichnen habe ich eine Observable Collection genommen welche beobachtet ob das gebundene Xaml Segment Objekt neu gezeichnet bzw. mit Farbe gefüllt werden muss.

Das Demo zeigt dann wie man mehrere Led Panels an eine ListBox in WP binden und anzeigen kann.

Viel Spaß damit.

P
52 Beiträge seit 2015
vor 8 Jahren

Das Demo zeigt dann wie man mehrere Led Panels an eine ListBox in WP binden und anzeigen kann.

Auch wenn das Projekt älter ist, ich wollte diese in VS 2015 öffnen, wird laut dessen Info nicht unterstützt ?(

Gruß Padman
_
_Bugrick_ Themenstarter:in
48 Beiträge seit 2011
vor 8 Jahren

Hallo,

freue mich sehr über das gute Feedback.

Padman, ich werde versuchen es zeitlich hinzubekommen und bald eine Demo bereitzustellen, die sich mit VS2015 öffnen lässt.