![]() |
Messwerte mit Farbe darstellen
Hallo!
I stehe vor folgenden Problem: Ich habe ein array mit 100 Messwerten, im Bereich von 0 bis 255, nun möchte ich diese Werte auf der Image Komponente mit Farbe darstellen, code um ein Pixel mit Farbe darzustellen:
Delphi-Quellcode:
Kann mir da jemand helfen das ich die Array Werte mit Farbe ausgeben kann.
Image1.Canvas.Pixels[x,y] := clFarbe
Farbpalette: 0 ...Farbe Schwarz 255 ... Farbe Weiß Werte die dazwischen liegen sollen angepasst werden. Hat jemand einen Lösungsvorschlag ? Danke im voraus ! mfg |
Re: Messwerte mit Farbe darstellen
Hallo!
Zwischen schwarz und weiß liegen nicht besonders viele Farben im eigentlichen Sinn, vielleicht meinst du Graustufen. In diesem Fall ist es einfach:
Delphi-Quellcode:
Wenn r-, g- und b-Anteil bei einer Farbe gleich sind, erhält man eine Graustufe.
Image1.Canvas.Pixels[x,y] := RGB(Messwert, Messwert, Messwert);
Gruß Hawkeye |
Re: Messwerte mit Farbe darstellen
Zitat:
Gruß Igotcha |
Re: Messwerte mit Farbe darstellen
Nein, wenn alle drei Farben denselben Wert haben, ergibt sich ein "weiss<->grau<->schwarz"-Verlauf. :)
|
Re: Messwerte mit Farbe darstellen
Schau mal hier:
![]() Die Farbe errechnet sich dann so:
Delphi-Quellcode:
Wenn du einen Regenbogen willst, dann schnapp dir die Unit SpectraLibrary.pas
farbe := ColorBetween(clBlack, clWhite, messwert / 255.0):
aus ![]() |
Re: Messwerte mit Farbe darstellen
Zitat:
|
Re: Messwerte mit Farbe darstellen
Ich fürchte, ein solcher Vorteil ist nicht vorhanden.
|
Re: Messwerte mit Farbe darstellen
Zitat:
|
Re: Messwerte mit Farbe darstellen
@Igotcha
Du hast Recht, es war meine Interpretation, weil ich Begriffe wie "Regenbogen" in seiner Frage vermißt habe. Für solche Fälle sollte man den Hinweis von shmia beachten. Wenn lediglich ein Grauverlauf gesucht ist, kann man die Meßwerte direkt als Farbanteil nutzen. Gruß Hawkeye |
Re: Messwerte mit Farbe darstellen
DANKE!
Danke für die zahlreichen Antworten, hat super geklappt ! mfg mitch |
Re: Messwerte mit Farbe darstellen
Hallo ich bekomme Fehlermeldung:Ungültige Gleitkommaoperation!!
Hier erstmal der Link zum Thread ![]() Ich habe die übernommen aber bei blend wert definition mekert er Hier der Code:
Delphi-Quellcode:
Woran kann es liegen Round???? oder? ergibt doch Integer Wert??
blend := Round(AnzeigeWinkel/DrehWinkel); ////<<<<---- genau hier ist der Fehler/Bei z.B.blend:=0.5 zeigt er richtig die farbe
LedColor := ColorsBetween([clGreen, clYellow, clRed],blend); //// und dann kommt die LED Grafik with RecT do begin OldPen := SelectObject(DC,CreatePen(ps_Solid,1,0)); OldBrush := SelectObject(DC,CreateSolidBrush(LedColor)); while n > 0 do begin Dec(n); x := (ZentrumX + Trunc(Cos(LEDWinkel) * r1)); y := (ZentrumY - Trunc(Sin(LEDWinkel) * r2)); Ellipse(DC,x - LED_RADIUS, y - LED_RADIUS, x + LED_RADIUS, y + LED_RADIUS); LEDWinkel:=LEDWinkel-(Pi/8); end; Grüss Pinki |
Re: Messwerte mit Farbe darstellen
Die funktion Round muss weg:
Delphi-Quellcode:
Ausserdem darf DrehWinkel niemals 0 sein.
var
blend : double; blend := AnzeigeWinkel/DrehWinkel; AnzeigeWinkel muss zwischen 0 und maximal DrehWinkel sein. Hier bietet sich Assert() als Sicherheitsnetz an:
Delphi-Quellcode:
var
blend : double; Assert(Drehwinkel > 0, 'Drehwinkel ist nicht > 0'); Assert(AnzeigeWinkel >= 0, 'AnzeigeWinkel negativ'); Assert(AnzeigeWinkel <= DrehWinkel, 'AnzeigeWinkel zu gross'); blend := AnzeigeWinkel/DrehWinkel; |
Re: Messwerte mit Farbe darstellen
Hallo danke für den schnellen Tip aber gleiche Fehlermeldung kommt trotzdem.
Ich habe k.A. vielleicht spinnt der Winswitch nur :wall: Grüss Pinki P.S.Drehwinkel ist vorgegeben.es kann ja Werte 180,270 und 360° haben.Division / Zero ausgeschlossen. :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz