Seite 1 von 1

Frage wegen Farbverlauf Schleife[gelöst]

Verfasst: 19. Mai 2008 15:45
von Qt-nator
Hi,

ich hab folgende Schleifen:

nWidth = 256;

nHeigth = 10;

Code: Alles auswählen

      for(int i = 0; i <= nWidth; i++)
      {
        for(int y = 0; y <= nHeight; y++)
        {
          imgGray.setPixel(i,y,i);
        }
      } 
Die mir die Farben aus meiner Tabelle zu den Dazugehörigen Pixeln setzen.

Mein Frabe ist jetzt kann ich das auch in einer Schleife machen??? Bzw. Ich weis das es geht nur komm ich nicht weiter.

Mein Ansatz für die eine Schleife:

Code: Alles auswählen


      for(int i = 0; i <= nWidth * nHeight; i++)
      {
        imgGray.setPixel(i%nWidth,i/nWidth, //// Das weis ich nicht.);
      }

Der letzte Wert der dem Index der Farbtabelle entspricht also von 0 - 255 geht. Weis ich nicht wie ich da unterbringen soll.

Für Hilfe wäre ich sehr dankbar.

Gruß

Qt-nator

Edit:
Ist gelöst

Verfasst: 19. Mai 2008 15:59
von macman
Warum willst Du die schnelle Lösung durch eine langsame ersetzen?

Verfasst: 19. Mai 2008 16:01
von Qt-nator
Weil mir gesagt worden ist das:

1tens ich das so machen soll.

2tens Das die schnellere Lösung ist.

Verfasst: 19. Mai 2008 16:15
von macman
Qt-nator hat geschrieben:1tens ich das so machen soll.
Ist das ne Hausaufgabe? :-)
Qt-nator hat geschrieben:2tens Das die schnellere Lösung ist.
Bei der ersten Lösung wird setPixel nWidth * nHeight aufgerufen, mit jeweils bereits definierten Werten.
Bei der zweiten Lösung wird setPixel genauso oft aufgerufen, aber
1tens die Abruchbedingung jedesmal neu berechnet (wird vielleicht weg optimiert, aber Optimierungen habe ich immer aus, wegen unabsehbarer Nebeneffekte)
2tens werden bei jedem setPixel die Parameter neu berechnet.

Und das soll dann schneller sein?

Verfasst: 19. Mai 2008 16:20
von upsala
1tens ich das so machen soll.
Wer sagt das? Dein Lehrer? Dann ist es auch deine Aufgabe eine Lösung zu finden. Außerdem hat es dann auch nichts mehr mit Qt zu tun und ist somit hier OT...

Verfasst: 19. Mai 2008 16:29
von Qt-nator
Hier die von mir selbst gefundene Lösung.

Trotzdem danke

Code: Alles auswählen


      for(int i = 0; i <= 2560; i++)
      {
          imgGray.setPixel(i%nWidth,i/nWidth,i%nWidth);
      }
      int H = vGrayscales.size();