Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Farbverläufe mit QImage



rk79
20-04-2005, 15:51
Wie kann man mit QIamge Objekten Farbverläufe erzeugen?

Über die Suchfunktion habe ich einen Farbverlauf für Graustufen gefunden, welcher mir aber nicht weiterhilft.

Über die setPixel Funktion möchte ich Farben direkt übergeben.

Doch jedes mal, wenn ich über qRgb eine Farbe übergebe bekomme ich Fehlermeldungen von wegen out of range.

Das QImage habe ich wie folgt erzeugt:

fortschrittsbalken = QImage(100,100,8,256);

Also mit 256 Farben, wenn ich nicht irre.

Mein Ziel ist am Ende eine Funktion, welche sowohl Radialen als auch linearen Farbverlauf realisiert.

Kennt sich jemand mit dieser Problematik aus?

anda_skoa
20-04-2005, 18:38
Vielleicht hast du als Parameter der qRgb Funktion Werte benutzt, die im deinem Farbbereich nicht mehr abgebildet werden können.

Ciao,
_

rk79
21-04-2005, 07:08
Naja, in der qRgb Funktion hab ich selbst bei den Werten (0,0,0)

den Überlauf.

anda_skoa
21-04-2005, 10:00
Verstehe.

Probier mal mit setColor für die 256 Indices die gewünschten Farben zu setzen und dann bei setPixel diesen Index zu benutzen.

Ciao,
_

rk79
21-04-2005, 10:05
Half leider nicht wirklich.

Hier mal mein Code, vielleicht ist da doch was offensichtlich falsch:

fortschrittsbalken = QImage(100,100,8,256);

for(long i = 0; i < 256; i++)
fortschrittsbalken.setColor( i, qRgb(i,0,0) );
for(long j = 0; j < 256; j++)
fortschrittsbalken.setColor( j, qRgb(0,j,0) );
for(long k = 0; k < 256; k++)
fortschrittsbalken.setColor( k, qRgb(0,0,k) );

fortschrittsbalken.fill(qRgb(0,255,0));

for(int y4 = 0; y4 < 100; y4++)
{
for(int x4 = 0; x4 < 100; x4++)
{
fortschrittsbalken.setPixel(0, 0, 0);
}
}

anda_skoa
21-04-2005, 13:32
for(long i = 0; i < 256; i++)
fortschrittsbalken.setColor( i, qRgb(i,0,0) );
for(long j = 0; j < 256; j++)
fortschrittsbalken.setColor( j, qRgb(0,j,0) );
for(long k = 0; k < 256; k++)
fortschrittsbalken.setColor( k, qRgb(0,0,k) );

Die beiden oberen Schleifen kannst du auch gleich weglassen :)



fortschrittsbalken.setPixel(0, 0, 0);

Sollte da nicht wo x4, y4 vorkommen?

Ciao,
_

rk79
21-04-2005, 14:19
Stimmt mit dem x4,y4. Das sind doch aber immer noch nicht die Farben oder?

Ich weis echt nicht weiter, was versteh ich da nur nicht ?