Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
7-Segmentanzeige und Uhrzeitenanzeige
_Bugrick_
myCSharp.de - Member



Dabei seit:
Beiträge: 51

Themenstarter:

7-Segmentanzeige und Uhrzeitenanzeige

beantworten | zitieren | melden

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
Attachments
private Nachricht | Beiträge des Benutzers
_Bugrick_
myCSharp.de - Member



Dabei seit:
Beiträge: 51

Themenstarter:

7-Segmentanzeige und Uhrzeitenanzeige

beantworten | zitieren | melden

Wie angekündigt, hier das Demoprogramm.
Attachments
private Nachricht | Beiträge des Benutzers
_Bugrick_
myCSharp.de - Member



Dabei seit:
Beiträge: 51

Themenstarter:

beantworten | zitieren | melden

Logik
Attachments
private Nachricht | Beiträge des Benutzers
_Bugrick_
myCSharp.de - Member



Dabei seit:
Beiträge: 51

Themenstarter:

beantworten | zitieren | melden

Screenshot
Attachments
private Nachricht | Beiträge des Benutzers
elTorito
myCSharp.de - Member

Avatar #avatar-3263.gif


Dabei seit:
Beiträge: 180
Herkunft: Niederrhein

beantworten | zitieren | melden

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.

Moderationshinweis von herbivore (17.06.2011 - 09:20:55):

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

private Nachricht | Beiträge des Benutzers
elTorito
myCSharp.de - Member

Avatar #avatar-3263.gif


Dabei seit:
Beiträge: 180
Herkunft: Niederrhein

beantworten | zitieren | melden

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.
Attachments
private Nachricht | Beiträge des Benutzers
Padman
myCSharp.de - Member



Dabei seit:
Beiträge: 53
Herkunft: NRW

beantworten | zitieren | melden

Zitat von elTorito
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
private Nachricht | Beiträge des Benutzers
_Bugrick_
myCSharp.de - Member



Dabei seit:
Beiträge: 51

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers