Michl hat geschrieben:Na wirklich hilfreiche Antworten kann ich zu dem Thema nicht geben, da ich sowas noch nicht gemacht hatte. Daher habe ich mich gestern abend kurz hingesetzt und es einmal selbst probiert. Das Ergebnis siehst du hier, ob es dir eine Hilfe ist, kann ich nicht sagen.
Ich hätte wohl den Zwinker-Smiley anhängen sollen.
Ich meinte damit das es keine Anregung ist, sondern ein fast perfekte Lösung. Zum dem fast Perfekt weiter unten.
Michl hat geschrieben:(Achtung, TFPColor nutzt Word zur Speicherung der RGBA-Werte, also den linken Byte-Wert).
Hast du deswegen den SHL-Befehl beim heraus finden des RGB-Wertes der Kombinationen.
Der Scheint mir unnötig zu sein.
Michl hat geschrieben:Nein, ich lese eine Grafikdatei ein und gehe jeden Pixel dieses TFPImages durch und suche nach dem nächstliegenden RGB-Wertes in dem letztgenannten Array. Dabei bilde ich einfach die Differenz (daher Abs) der jeweiligen Farbkanäle Rot, Grün, Blau und addiere die Differenz. Die Farbe, deren Differenz vom TFPImages Pixels und einem Eintrag des Arrays am niedrigsten ist (am nächsten liegt), wird in einem neuen Array gespeichert, welches dem Abbild des TFPImage entspricht.
Irgendwie irritiert mich das neue Array.
Dafür nutzt du ja die GetTwoColorChar-Funktion. Da findet doch nur eine suche in dem Array statt, und das nächste was passt gibt zu als TTwoColorChar-Typ zurück.
Das will ich ja ähnlich machen, dazu aber mehr weiter unten.
Michl hat geschrieben:Ja, in der Konsole kann ich nur die Hintergrundfarben 0..7 setzen, die Hintergrundfarbe 8..15 entsprechen wieder 0..7. Weiß nicht, ob man das ändern kann, habe mich damit nicht beschäftigt, nur festgestellt.
Ich konnte die Hintergrundfarben erhöhen.
Im Fenstermodus der Konsole und Windows werden die Vordergrundfarben nicht blinkend dargestellt.
Aber das hat die Farbgenauigkeit nicht verbessert.
Irgendwie fängt der Fehler bei den Grautönen an.
Michl hat geschrieben:Ja, das ist kein Problem. Da gibt es sicher ganz viele verschiedene Herangehensweisen.
Ein Beispiel. wenn man ein Bild auf 256 Farben reduziert kann man bei GIMP die Fehlerdiffusion einstellen wie die Farben behandelt werden sollen.
Erstelle ein Bild mit mehreren Grüntönen aber nicht mit dem Grünwert $FF.
Dann verringere die Farben des Bildes und versuche mit dem RGB-Wert $00FF00 das Farbe wird dann nicht den Wert $00??00 haben, sonder kann auch z.B. der Wert $23DD43 haben.
Bei deiner Methode erhalte ich für den RGB-Wert $00FF00 den Farbecode 2 (Grün).
Bei meiner Tabelle die ich abarbeite will (wäre schön wenn es eine besser Methode geben würde, aber ich kam ja nicht mal auf deine Methode) würde ich die Vordergrundfarbe 10, die Hintergrundfarbe 0 und das Zeichen für 100 % erhalte.
Diese Methode wäre Farbtreuer als deine.
Michl hat geschrieben:16 Farben und nicht nur 8 nutzen kann/könnte, käme man sogar mit nur 2 Chars (░ und ▒) aus, da das Char ▓ durch Invertierung von ░ genutzt werden könnte und █ durch z.B. ▒ Vordergrund- = Hintergrundfarbe erreicht würde.
Wäre sinnvoll wenn nur das Zeichen für 25 oder 75 % zur Verfügung stehen würde.
Dafür müsste man aber ein kleine Vergleichsfunktion hinzufügen, und das würde mehr Code und Platz in Anspruch nehmen als es mit Nutzung des Zeichen nimmt.
Aber so gesehen könnte man eines der Zeichen bei eine Benutzerdefinierten Schrift weglassen, und man hätte Platz für ein anderes Zeichen.
Michl hat geschrieben:Vielleicht helfen dir die Hinweise ein wenig.
Du hast es eher gelöst, und nach meiner Meinung elegant.