HSV Color Dialog



  • Danke dir audacia, funtkioniert wunderbar und ruckelt auch nicht.
    Jetzt wo die grafische Darstellung fürs erste fertig ist müssen die Werte in RGB und HSV natürlich auf der Form auch angezeigt werden. Wenn ich das aber mit einbaue, auch wenn es nur der hue Wert ist und mehr nicht wird der Wert auch nur verspätet aktualisiert. "Ruckelt" also schon wieder.
    Ich glaube das man dieses Problem lösen kann indem man threads verwendet.
    Liege ich richtig mit meiner Vermutung?



  • Tsurai schrieb:

    ...
    Ich glaube das man dieses Problem lösen kann indem man threads verwendet.
    Liege ich richtig mit meiner Vermutung?

    Threads können so einige Performance-Probleme lösen... Ich versuche mich allerdings auch immer davor zu drücken Threads zu verwenden 😉 Ich glaube aber, dass es wie mit vielen Dingen beim Programmieren ist: Wenn man es ein paar Mal verwendet hat und die wichtigsten Tricks und Kniffe kennt, ist es so einfach wie Kaffee kochen.

    Übrigens finde ich den Thread hier sehr interessant, da diese Optimierungsgeschichten prinzipiell für jeden Programmierer mal entscheidend werden können. => Gestern meinte man noch "die Rechner sind heut' schnell genug", heute hat man schon ein Performance-Problem...



  • Tsurai schrieb:

    Jetzt wo die grafische Darstellung fürs erste fertig ist müssen die Werte in RGB und HSV natürlich auf der Form auch angezeigt werden. Wenn ich das aber mit einbaue, auch wenn es nur der hue Wert ist und mehr nicht wird der Wert auch nur verspätet aktualisiert. "Ruckelt" also schon wieder.

    Es ruckelt nicht, sondern es wird nicht hinreichend oft aktualisiert. Rufe einfach TEdit::Repaint() auf, nachdem du den Wert veränderst.

    Tsurai schrieb:

    Ich glaube das man dieses Problem lösen kann indem man threads verwendet.

    Nein 😉



  • Kolumbus schrieb:

    Tsurai schrieb:

    ...
    Ich glaube das man dieses Problem lösen kann indem man threads verwendet.
    Liege ich richtig mit meiner Vermutung?

    Threads können so einige Performance-Probleme lösen... Ich versuche mich allerdings auch immer davor zu drücken Threads zu verwenden 😉 Ich glaube aber, dass es wie mit vielen Dingen beim Programmieren ist: Wenn man es ein paar Mal verwendet hat und die wichtigsten Tricks und Kniffe kennt, ist es so einfach wie Kaffee kochen.

    Übrigens finde ich den Thread hier sehr interessant, da diese Optimierungsgeschichten prinzipiell für jeden Programmierer mal entscheidend werden können. => Gestern meinte man noch "die Rechner sind heut' schnell genug", heute hat man schon ein Performance-Problem...

    Das dumme ist nur das ich in den Wochen in denen wir Threads in der Berufsschule hatten krank und deswegen war ich immer etwas zu faul mich damit zu beschäftigen und habe es immer vermieden sie zu benutzen. Jetzt glaube ich aber, dass ich keine andere Wahl mehr habe.

    Performence Probleme hatte ich bisher auch noch nie. Mal abgesehen davon das bei der Mikrokontroller Programmierung der Prozessor zu schnell war und man ihn verlangsamern musste um LED Ausgaben anständig erkennen zu können.

    Edit:
    Ahh audacia, jetzt sehe ich erst das du etwas gepostet hast in der zeit in der ich am schreiben war.
    Wenn das wirklich so einfach ist und keine Threads braucht wäre das wirklich gut. Obwohl ich Threads trotzdem mal lernen sollte 😉



  • Mein Indianername: "DerAufDemHolzwegWandelt" 🤡
    Trotzdem ist es sinnvoll sich mit Threads zu beschäftigen! 👍



  • Oh Wunder oh Wunder es ist ein weiteres Problem aufgetreten...(sollte ich mal solangsam ein neuen Thread machen oder diesen weiter benutzen weil es ja alles teil des Dialoges ist?)
    Wie auch immer....die eigentliche Farbe soll man jetzt in dem großen Farbfeld auswählen können. Dafür hätte ich gerne einen anderen Cursor.
    Ich habe bereits einen eigenen Cursor erstellt und ihn in die Project.res hinzugefügt. Mit folgendem Code versuche ich den Cursor des Bildes zu ändern:

    const crMyCursor = 5;
    Screen->Cursors[crMyCursor] = LoadCursor(HInstance, "Cursor1");
    imgColorPalette->Cursor = TCursor(5);
    

    Weil das nicht funktioniert hat habe ich einmal zum testen den Cursor manuel geändert, d.h. in dem Object Inspector von crDefault auf crDrag gestellt. Seltsamerweise bewirkt das aber auch nichts, der Cursor bleibt gleich. Bei dem Bild mit den Hue Werten kann ich aber über den Inspector den Cursor ganz normal verändern.
    Könnte mir jemand sagen woran das liegen könnte?

    mfg,

    Tsurai



  • Tsurai schrieb:

    Weil das nicht funktioniert hat habe ich einmal zum testen den Cursor manuel geändert, d.h. in dem Object Inspector von crDefault auf crDrag gestellt. Seltsamerweise bewirkt das aber auch nichts, der Cursor bleibt gleich.

    Bei welcher Komponente hast du nun die Cursor-Eigenschaft verändert?
    Wenn ich in meinem Beispiel ImgColorPalette->Cursor auf crCross (oder etwas anderes) setze, wird der entsprechende Cursor erwartungsgemäß zur Laufzeit angezeigt.



  • Jetzt geht das wieder mit dem Inspektor. Aber der code geht trotzdem nicht



  • Tsurai schrieb:

    Mit folgendem Code versuche ich den Cursor des Bildes zu ändern:

    const crMyCursor = 5;
    Screen->Cursors[crMyCursor] = LoadCursor(HInstance, "Cursor1");
    imgColorPalette->Cursor = TCursor(5);
    

    Weil das nicht funktioniert

    Was gibt denn LoadCursor zurück?



  • LoadCurser gibt ein HCURSOR handler zurück. Damit kann man den Cursur in der globalen Screen Variable speichern. Mit imgColorPalette->Cursor legt man dann den index des Cursor Arrays fest. So habe ich das zumindest verstanden.



  • Das weiß ich. Mich interessiert, welcher Wert in deinem konkreten Fall von LoadCursor zurückgegeben wird 😉



  • Ok...kein Wunder das es nicht funktioniert. LoadCursor gibt NULL zurück. Ich weiß aber nicht warum.

    Edit:
    Ich habe mir jetzt den Fehler Code mit GetLastError() angeguckt. Es handelt sich um den Fehler 1813 - ERROR_RESOURCE_TYPE_NOT_FOUND. Warum dieser Fehler kommt ist mir immer noch nicht klar deswegen habe ich jetzt auf die Methode LoadCursorFromFile zurückgegriffen. Mit dieser funktioniert es wunderbar.


Anmelden zum Antworten