Schrift auf den Bildschirm in der richtigen Farbe.
-
Streusselkuchen schrieb:
@TGGC Ich habe 256 Farben zur Verfügung,-> 256 Farb modi (DirectDraw (1024*768*8bit)
Jede dieser 256 Farben habe ich definiert (Mit SetPalette). Damit kann ich dann Farbübergänge erhalten und bestimmte Farben brauch ich nicht.Deswegen KANN RGB nicht funktionieren!
Ich weiß, das nummer 16 Rot ist, kann diese Farbe aber nicht erzeugen (Mit Schrift). Und vielleicht brauch ich ja irgendwann irgendeine andere Nummer.
Wenn ich Pixel mit Farbe 16 Zeichne geht es, mit der Schrift nicht.@BugJoe
Die Idee mit der Hashmap ist vielleicht ganz gut, nur weiß ich nicht, auf welches COLORREF windows welchen Farbcode zurückliefert.
EDIT: Und bei 256 Farben ist das sehr aufwändig, alles rauszusuchen!Eine andere Idee ist mir noch gekommen: Irgendwie muss es ja funktionieren
8bit #7 #6 #5 #4 #3 #2 #1 #0 -> Welches dieser Bits ist für welche Farbe zuständig? zB.: #7 #6 #5 für rot #5 #4 #3 für grün und der Rest für Blau?
Ist das so, wenn nicht, wie dann?Das muss dann per Schiebebefehle in 32 bit konvertiert werden.
Wie ist das bei 32 bit aufgebaut? (#31-#x R, ... G ...
Danke schonmal, Gruß Streusselkuchen.
Du hast weder verstanden wie die GDI Funktionen arbeiten, noch wie das mit der Palette funktioniert. Wo soll ich also anfangen?
Bye, TGGC
-
Möglicher weise hab ich es wirklich nicht verstanden. Dann sag mir bitte, wie ich es hinkriege, schrift in meiner gewünschten Farbe anzugeben. Denn wenn ich als Farbwert RGB(255,0,0) angebe, erhalte ich kein Rot, gebe ich als Farbwert RGB(0,255,0) an, erhalte ich kein Grün.
Ich weiß auch nicht, wie ich den Farbwert nr. sonstwas hier angeben kann.
Ich habe mir eine Assembler-Procedur geschrieben, die Bilder auf den Bildschirm bringen kann. Hier wie gesagt funktioniert das mit den Farbwerten (0-255) ganz prima, er gibt mir die Bilder ordentlich aus. (eigenes Format)
Nur spricht halt die DrawText(...) & SetTextBK(...) nicht an.Bin für jede Hilfe dankbar.
Gruß Streusselkuchen.
-
Dann muss dein Windows wohl kaputt sein. Farbnummer kannst du nur für das entsprechende Makro nehmen. RGB geht nunmal nur mit RGB (ach?!).
Bye, TGGC
-
@TGGC Nein, mein Windows ist nicht kaputt. Ich dachte, ich hätte das schon erklärt.
RGB ist nur ein Makro und berücksichtigt die vorhandene Palette nicht, sondern es geht von einer bestimmten Palette aus, die ja beim erstellen des 256-Farben Modus schon vorhanden ist.->So funktioniert das RGB ja auch ganz prima: geb ich RGB(255,0,0) an, erhalte ich rot.Was ist aber, wenn ich Farbübergange brauche, wie zB.: Schwarz zu Weiß???
Genau: Palette neu definieren, außerdem lassen sich auch tolle Effekte ereichen, wenn wärrend des Laufens die Palette verändert wird.
lpDDPalette->GetEntries(0, 0, 256, palEntry); ... lpDDPalette->SetEntries(0, 0, 256, palEntry);Verstehst du jetzt, warum ich die nummer haben will?
-
Häää? Farbübergang von Schwarz zu Weiß einfach von RGB(0,0,0) zu RGB(255,255,255) durchgehen? Da brauchst du doch gar keine Farbpalettennummer...
-
Das mit einer s/w Palette kein Rot gemalt wird ist ja wohl klar...
Bye, TGGC
-
Mit 256 wirst eh ein überlauf machen

-
@Dali: Beim 256 Farben Modus, den ich verwende gibt es (bevor ich die Palette neu definiert habe) KEINEN schönen übergang von Schwarz zu weiß.
@TGGC Ich nutze nicht die ganze palette für den Farbübergang von Schwarz zu Weiß, sondern nur einen Teilausschnitt.
Farbe 16-72 -> Farbübergang rot zu Gelb, dann gibt es noch Blau zu weiß, und sonstige Farbenübergänge, die ich gut verwenden kann.@Dali 2. Antwort: Ja es ist mir schon klar, das ich als Maximale Farbnummer 255 ansprechen kann

Herzlilche Grüße, Streusselkuchen.
-
Sorry aber was du machst ist einfach Bullshit... Nimm das RGB Makro rgb von 0 bis 255 und das ist ein schöner Übergang sonst machst was falsch...
..das ich als Maximale Farbnummer 255 ansprechen kann..
besser wäre müssen...
-
besser wäre müssen
Keine sorge, ich schreibe keine Pixel, deren Wert nicht in ein byte passt. Ich weiß jetzt nicht, warum du sowas schreibst, vielleicht deswegen?
lpDDPalette->GetEntries(0, 0, 256, palEntry); ... lpDDPalette->SetEntries(0, 0, 256, palEntry);Ich glaube kaum, dass das jetzt eine Neuigkeit ist: Es werden insgesammt 256 Farben per Setpalette definiert, nicht von 0-256 (was ja insgesamt 257 wäre).
Nimm das RGB Makro rgb von 0 bis 255 und das ist ein schöner Übergang sonst machst was falsch...
Ich kann das doch nicht, weil ich doch nur 256 Farben habe. Und wenn ich 32 Farben mit Schwarz zu Weiß definiert habe, die sich sonstwo befinden, wo nur ich (als Programmierer) weiß wo... Verdammt noch mal: RGB kann wegen meiner Farbneudefinition nicht funktionieren! (Und funktioniert übrigens auch nicht!)
Außerdem könnte es doch sinnvoll sein, wenn ich zum Beispiel Schrift mit Farbcode n erzeuge, und nur den Farbwert von n durchschalte (Edit: mit Setpalette), und damit tolle Farbvibrationseffekte erhalte.
Wie auch immer, ich werd das mit Colorref (Die Umwandlung) mal probieren. Wenn jemand eine Antwort hat, die a) sinnvoll ist und sich b) mit meinem Problem befasst, kann er sie gerne hier posten, ansonsten bitte bleiben lassen.
(Ich glaube fast, dass irgendwie keiner meine Problematik versteht, oder die, die es tun, keine Antwort parat haben, ich hoffe nur, dass ich mich in diesem Punkt irre)Gruß Streusselkuchen
-
Streusselkuchen schrieb:
Wie auch immer, ich werd das mit Colorref (Die Umwandlung) mal probieren.
RGB wandelt die Daten doch in ein COLORREF um...
Warum soll RGB eigentlich nicht funktionieren? Wenn ich meinen Desktop auf 8bit schalten funktionieren mein Programme doch trotzdem ohne das sie wer auf die 8Bit Palette umschreibt und sie intern immer noch SetColor(blubb) verwenden. Wie gesagt, du hast das mit dem GDI wohl noch nicht so recht verstanden...
Bye, TGGC
-
RGB wandelt die Daten doch in ein COLORREF um...Ich weiß...
Warum soll RGB eigentlich nicht funktionieren? Wenn ich meinen Desktop auf 8bit schalten funktionieren mein Programme doch trotzdem ohne das sie wer auf die 8Bit Palette umschreibt und sie intern immer noch SetColor(blubb) verwenden. Wie gesagt, du hast das mit dem GDI wohl noch nicht so recht verstanden...
Wenn du deinen Desktop auf 8Bit umschaltest, gehen Farbinformationen verloren, was ja auch logisch ist, weil jetzt nicht mehr 256^3 bzw. 2^16 Farben zur Verfügung stehen, sondern nur noch 2^8, also 256.
Da verwendet dann Windows automatisch eine Palette, wo das RGB dann funktioniert. DAS IST MIR AUCH KLAR. (256 Farben im guten Mix verhältnis)Also jetzt zu hundertsten Mal: DIESE STANDARTSPALETTE EXISTIERT NICHT BEI MIR, weil ich mir eine neue Palette definiert habe. ->Siehe Farbübergänge.
Mit Umwandlung meine ich: Auf ein bestimmtes COLORREF muss ein bestimmter Farbcode folgen. (Irgendwie logisch, oder?) Die Umwandlung soll aus dem Farbcode, den ich erhalten will, ein COLORREF machen, welches ich dann in meiner Funktion DDrawText(...) verwende, wo Windows dann wiederum meinen gewünschten Farbcode draus macht.
Frage: liest man sich eigentlich meine Posts in etwa durch?`
Gruß Streusselkuchen.
-
Na dann eben nicht...
Bye, TGGC
-
Sry, ich muss mich jetzt mal an alle entschuldigen, die wohlmöglich zu viel Zeit geopfert haben, für den Blödsinn, den ich hier geschrieben habe, mein Fehler...
Ok, wenn ich RGB(r,g,b) angebe, sucht Windows mir den Farbwert aus meiner Palette, der am ähnlichsten mit r/g/b, bzw. gleich ist...
Probieren hat aus dummen Zufall vorher nicht geklappt.
Fehler lag an einer Verwechslung: RGB(0,255,0) hab ich mal angegeben, um Blau zu erhalten->hätte aber grün werden müssen, und diese Farbe war bei mir noch nicht definiert. OK, ganz schön Blöd, kommt (hoffentlich) nicht wieder vor.
Trotzdem danke für alle gekommenen Antworten, mit denen ich leider nicht viel anfangen konnte... Klappt jetzt aber

Gruß Streusselkuchen.
-
Hoffentlich

...RGB(0,255,0) hab ich mal angegeben, um Blau zu erhalten->hätte aber grün werden müssen, und diese Farbe war bei mir noch nicht definiert...
Also wenn das kein Kandidat für lolotw ist dann weiß ich auch nicht

-
Also wenn das kein Kandidat für lolotw ist dann weiß ich auch nicht
Hast du noch nie Mist in deine Programme geschrieben, und dich dann über die unschönen Ergebnisse gewundert? (Kann ja auch manchmal an Müdigkeit liegen)
