Laden...

Colorbar mit WPF

Erstellt von DeeKay vor 10 Jahren Letzter Beitrag vor 10 Jahren 3.107 Views
D
DeeKay Themenstarter:in
9 Beiträge seit 2012
vor 10 Jahren
Colorbar mit WPF

Hallo Zusammen und ein frohes neues Jahr,

und zwar erstelle ich mit folgenden Code ein Bild:


 bmpSource = BitmapSource.Create(width, height, dpi, dpi,
               PixelFormats.Gray8, null, image, width);
            return bmpSource;

Jetzt möchte ich mir dazu die colorbar anzeigen lassen, und diese vll. sogar im Wertebereich verändern. So das vll. mehr Werte weiß angezeigt werden und weniger in schwarz.

Wo wäre hier der Ansatz wo ich anfangen müsste? Kann man das mit einer Progressbar machen (wie irgendwo im Internet mit VB beschrieben) oder braucht es dafür auch ein Image?

Wie ihr seht, habe ich keine Idee wie ich da anfangen soll.

Grüsse Daniel

4.939 Beiträge seit 2008
vor 10 Jahren

Hallo,

was genau verstehst du unter "Colorbar" (bei einem Graubild)? Meinst du das Histogramm?
Und mit Änderung der Schwarz-/Weiß-Werte meinst du die Helligkeit bzw. den Kontrast?

Für GDI(+) (d.h. WinForms) gibt es z.B. LowLevelGraphicsLibrary mit der Bildänderungen vorgenommen werden können.

Für WPF habe ich auf die Schnelle im Internet folgenden Artikel gefunden: Image Processing is done using WPF

Und für Histogramme habe ich folgende gefunden:
A simple histogram displaying control (aber auf Basis von GDI(+))
How to create an image histogram using C# and WPF (auf Basis der Image processing Library AForge.NET)

D
DeeKay Themenstarter:in
9 Beiträge seit 2012
vor 10 Jahren

Ich habe gerade nochmal mit meinem Chef gesprochen. Ich wollte das so wie in Matlab haben, aber er meint es reicht ihm wenn ich einfach nur ein Bild mit den Farbsprektrum von 0-255 anzeige und oben/unten min und max der Bildwerte hinschreibe und die dann aktualisiere während des fensterns (Sind 12Bit bilder).

ich habe mal ein Beispiel von Matlab angehängt. Meine Frage ist halt, wie bekomme ich die Colorbar auf der rechten Seite hin? Das ich die Farbbereiche manuell ändern kann hat sich erstmal erledigt.

4.939 Beiträge seit 2008
vor 10 Jahren

OK, jetzt weiß ich was du meinst. Du hattest oben ja explizit "Gray8" stehen und da bin ich von einem reinem Graubild ausgegangen. So wie ich das verstehe, hast du zwar jetzt auch ersteinmal ein Graubild, aber colorierst es für die Anzeige (d.h. schwarz wird zu blau und weiß zu rot), d.h. du benötigst zuersteinmal einen Color-Converter der aus Grauwerten Farben erzeugt.
Für die Anzeige in der ProgressBar kannst du dann verschiedene Parts benutzen, welche sich mittels des LinearGradientBrush von einer Farbe zur anderen zeichnen (blau nach gelb, gelb nach orange, orange nach rot - d.h. du mußt ein bißchen experimentieren, wenn es exakt so aussehen soll wie in Matlab).

Schau auch mal in Farbe des ProgressBar dynamisch ändern rein...

190 Beiträge seit 2012
vor 10 Jahren
  • Wer lesen kann, ist klar im Vorteil
  • Meistens sitzt der Fehler vorm Monitor
  • "Geht nicht" ist keine Fehlermeldung!
  • "Ich kann programmieren" != "Ich habe den Code bei Google gefunden"

GidF

S
248 Beiträge seit 2008
vor 10 Jahren

Hallo,

die, meiner Meinung, einfachste Art ist es, das Darstellen der Colorbar und das Zeichnen des Bildes mit der gleichen Farbpalette zu machen (siehe BitmapPalette).
Diese kann dann beliebige Farbübergänge haben.

Den Slider kannst du dann auch relativ einfach zeichnen:
Du nimmst ein Bild mit 1x256 oder 256x1 Pixel mit den Werten 0..255 und wendest auf das Bild deine vorhandene Palette an. Dieses Bild kannst du dann direkt zeichenen oder dynamisch in ein Image einsetzten.

Grüße spooky