Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Pixel-Farbe aus Grafik auslesen

Pixel-Farbe aus Grafik auslesen
18.10.2015 23:05:05
Markus
Hallo,
ich möchte die Farbe bestimmter Pixel einer Bitmap-Grafik auslesen und damit bestimmte Zellen einfärben.
Die Funktion getPixel scheint dafür zu passen, die scheint aber unter VBA 6.0 nicht zu funktionieren.
Das Beispielprogramm unter folgendem Link funktioniert bei mir nicht, da VBA 6.0 weder .ScaleMode noch .hdc zu kennen scheint. Auch die Hilfedatei findet dazu keine Einträge
http://www.vbarchiv.net/api/api_getpixel.html
Ist es richtig dass getPixel unter VBA 6.0 nicht funktioniert?
Gibt es ähnliche Funktionen die bereits bei VBA 6.0 implementiert sind?
Gruß
Markus

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pixel-Farbe aus Grafik auslesen
18.10.2015 23:30:02
Nepumuk
Hallo,
wo befindet sich das Bild und wie willst du das Pixel ansteuern (Maus oder Fester Wert)?
Gruß
Nepumuk

AW: Pixel-Farbe aus Grafik auslesen
19.10.2015 19:32:50
Markus
Hallo,
ich möchte über einen festen Wert (x- und y-Koordinate) auf die Grafik zugreifen.
Die Grafik exisitiert als Datei, die ich testweise in Excel eingefügt habe. Wenn es eine Möglichkeit gibt direkt auf die Datei über den Dateipfad zuzugreifen wäre mir das auch recht.
Gruß
Markus

Anzeige
AW: Pixel-Farbe aus Grafik auslesen
19.10.2015 21:07:10
Nepumuk
Hallo,
du könntest das Bild in ein Userform laden und dort per GetPixel die Farbe auslesen.
Hier mal ein Beispiel: https://www.herber.de/bbs/user/100880.xlsm
Beim Klick auf eine Farbe wird der Zellbereich entsprechend eingefärbt.
Gruß
Nepumuk

Anzeige
AW: Pixel-Farbe aus Grafik auslesen
19.10.2015 23:17:57
Markus
Hallo Nepomuk,
danke für deine Hilfe.
Das mit der Userform hatte ich auch schon ausprobiert.
Das von dir verlinkte Beispielprogramm funktioniert aber, das muss ich mir mal genau anschauen warum das hier funktioniert und bei meinem Programm nicht.
Es aber schon mal wichtig zu wissen dass getPixel grundsätzlich auch mit meiner alten Excel-Version funktioniert.
Gruß
Markus

Anzeige
AW: Pixel-Farbe aus Grafik auslesen
21.10.2015 20:40:19
Markus
Hallo,
irgendwie schaff ich das trotzdem nicht das Beispielprogramm so umzuändern dass ich auf meine eigene Grafik zugreifen kann.
Zum Verständnis wie das Beispielprogramm (https://www.herber.de/bbs/user/100880.xlsm) funktioniert hätte ich ein paar Fragen:
- Was genau macht die Funktion "FindWindow()"? Dass "ThunderDFrame" der Klassenname für das "UserForm"-Fenster ist hab ich irgendwo gelesen, aber worauf bezieht sich das "Caption"?
- Warum werden die X- und Y-Koordinate der Mausposition jeweils durch 0.748 geteilt?
Gruß
Markus

Anzeige
AW: Pixel-Farbe aus Grafik auslesen
21.10.2015 21:22:20
Nepumuk
Hallo,
mit FindWindow lese ich das Windows-Handle aus über welche dann der Device-Context gelesen werden kann. Caption ist die Caption des Userforms. Die Koordinaten muss ich durch 0,748 teilen um den X- bzw. Y-Wert von Point in Pixel umzurechnen.
Gruß
Nepumuk

AW: Pixel-Farbe aus Grafik auslesen
23.10.2015 16:12:04
Markus
Hallo,
funktioniert jetzt, lag offenbar an der Art wie ich die Grafik eingebunden habe. Ich hatte die Grafik zunächst über das Werkzeug "Anzeige" eingefügt.
Jetzt hab ich sie über die UserForm-Eigenschaft "Picture" eingefügt und das hat funktioniert.
Nur interessehalber (es funktioniert ja mittlerweile):
Warum findet FindWindow meine Userform, wenn ich als zweiten Parameter einfach nur "Caption" angebe? Müsste ich da nicht eigentlich "UserForm1" angeben, die Caption hat ja sowohl bei mir als auch bei deinem Beispielprogramm den Wert "UserForm1"
Gruß
Markus

Anzeige
AW: Pixel-Farbe aus Grafik auslesen
23.10.2015 20:16:45
Nepumuk
Hallo,
Caption ist das was in der Titelleiste steht und danach wird gesucht.
Gruß
Nepumuk
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Pixel-Farbe aus Grafik auslesen in Excel


Schritt-für-Schritt-Anleitung

  1. Bild in UserForm einfügen: Lade das Bild, dessen Pixel-Farbe du ermitteln möchtest, in eine UserForm. Gehe dazu in Excel auf Entwicklertools, wähle UserForm und füge ein Image-Steuerelement hinzu. Setze die Eigenschaft Picture auf das gewünschte Bild.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul hinzufügen: Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf VBAProject klickst und Einfügen > Modul wählst.

  4. Code für Pixel-Farbe bestimmen: Verwende die folgende Funktion, um die Farbe eines Pixels auszulesen:

    Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
    
    Function GetPixelColor(x As Long, y As Long) As Long
       Dim hdc As Long
       hdc = GetDC(UserForm1.hWnd)
       GetPixelColor = GetPixel(hdc, x, y)
       ReleaseDC UserForm1.hWnd, hdc
    End Function
  5. Pixel-Farbe ermitteln: Rufe die Funktion GetPixelColor auf, um den Farbcode des gewünschten Pixels zu erhalten. Du kannst die X- und Y-Koordinaten anpassen, um die Farbe an der gewünschten Stelle zu ermitteln.

  6. Farbcode auslesen und anwenden: Verwende den Farbcode, um Zellen in Excel entsprechend einzufärben.


Häufige Fehler und Lösungen

  • Fehler: GetPixel funktioniert nicht: Wenn GetPixel in deiner Excel-Version nicht funktioniert, überprüfe, ob du die UserForm korrekt eingerichtet hast und ob das Bild über die Picture-Eigenschaft hinzugefügt wurde.

  • Fehler: Bild nicht gefunden: Stelle sicher, dass der Pfad zum Bild korrekt ist, wenn du das Bild nicht direkt in die UserForm eingefügt hast.

  • Fehler: Falsche Koordinaten: Achte darauf, dass die X- und Y-Koordinaten in der richtigen Maßeinheit angegeben sind. Möglicherweise musst du die Koordinaten umrechnen.


Alternative Methoden

Eine alternative Methode zur Ermittlung der Pixel-Farbe ist die Verwendung von externen Tools oder Bibliotheken, die speziell für die Bildbearbeitung entwickelt wurden. Hier sind einige Optionen:

  • SharpDX oder GDI+: Diese Bibliotheken ermöglichen eine tiefere Interaktion mit Bilddaten und bieten mehr Funktionen als die Standard-VBA-Funktionen.

  • Online-Tools: Es gibt zahlreiche Online-Tools, die es ermöglichen, Farbcodes aus Bildern auszulesen. Diese können nützlich sein, wenn du Excel nicht verwenden möchtest.


Praktische Beispiele

  1. Farben aus Bild auslesen: Wenn du ein Bild mit verschiedenen Farbtönen hast, kannst du die Funktion GetPixelColor verwenden, um die Farben für eine Palette in Excel zu erstellen.

    Dim color As Long
    color = GetPixelColor(10, 20) ' Beispielkoordinaten
    Cells(1, 1).Interior.Color = color ' Zelle A1 einfärben
  2. Dynamische Farbauswahl: Erstelle eine UserForm mit Schaltflächen, um verschiedene Pixel-Farben auszulesen und auf Zellen anzuwenden, abhängig von der Benutzerinteraktion.


Tipps für Profis

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in deinen VBA-Code, um unerwartete Fehler zu vermeiden.

  • Performance: Wenn du viele Pixel-Farben auslesen möchtest, optimiere deinen Code, um die Geschwindigkeit zu verbessern. Vermeide unnötige Bildschirmaktualisierungen.

  • Dokumentation: Halte deinen Code gut dokumentiert und benutze beschreibende Namen für Variablen und Funktionen, um die Wartbarkeit zu erhöhen.


FAQ: Häufige Fragen

1. Frage Warum funktioniert die getPixel-Funktion nicht in meiner Excel-Version?

Antwort: Die getPixel-Funktion kann in älteren Versionen von Excel eingeschränkt sein. Stelle sicher, dass du die Funktion in einer UserForm verwendest und dass dein Bild korrekt eingefügt ist.

2. Frage Wie kann ich die ermittelte Farbe als Excel-Farbcode verwenden?

Antwort: Du kannst den zurückgegebenen Farbcode von GetPixelColor direkt verwenden, um die Interior.Color-Eigenschaft von Zellen in Excel zu setzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige