Qt drawPixmap

Gast #4590222
Lesenswert?

Hallo zusammen,

ich habe eine Frage zur Funktion:
1
void QPainter::drawPixmap(int x, int y, const QPixmap & pixmap, int sx, int sy, int sw, int sh)

Die Beschreibung lautet:
1
 
2
This is an overloaded function.
3

4
Draws a pixmap at (x, y) by copying a part of the given pixmap into the paint device.
5

6
(x, y) specifies the top-left point in the paint device that is to be drawn onto. (sx, sy) specifies the top-left point in pixmap that is to be drawn. The default is (0, 0).
7

8
(sw, sh) specifies the size of the pixmap that is to be drawn. The default, (0, 0) (and negative) means all the way to the bottom-right of the pixmap.

Da heisst, die Funktion zeichnet das Pixmap von oben links beginnend bis 
unten rechts. Ich bräuchte nun eine Funktion, die von unten rechts 
beginnend bis oben links zeichnet. Weiss da einer etwas?
Natürlich könnte ich mir nun ein Bild in der Farbe des Hintergrunds 
erstellen und damit das eigentlich Bild überdecken aber das wäre zuerst 
einmal nur ein workaround für mich.
(Firma: O.D.I.S.) #4590230
Lesenswert?

Hallo Mike,

wenn ich das richtig verstehe, kannst Du mit der Funktion ein
Pixmap, bzw. auch einen Teil davon, auf ein PaintDevice zeichnen / 
kopieren. Dabei sollte es doch egal sein, ob das von links nach rechts 
oder umgekehrt gezeichnet wird. Oder verstehe ich etwas an Deiner Frage 
nicht?

Gruß

Olaf
Gast #4590237
Lesenswert?

Ich habe einfach einen vertiaklen Balken, der einen Füllstand 
wiedergibt. Jetzt möchte ich, dass der Balken von oben her niedirger 
wird und nicht von unten. Und mit dieser Funktion habe ich es bisher nur 
geschafft, den Balken von unten her kleiner zu machen.
(Firma: O.D.I.S.) #4590267
Lesenswert?

Ok. Welche Werte veränderst Du denn?
x, y, sx, sy, w oder h?

Wenn der Balken von oben her niedriger werden soll,
musst Du y (also die vertikale Position auf dem PaintDevice)
verändern. Damit der untere Rand des gezeichneten Pixmaps konstant 
bleibt,
musst Du natürlich h auch entsprechend verändern.

Normalerweise nimmt man für so etwas eine Fertige Füllstandsanzeige 
(QProgressBar).

Gruß

Olaf
Gast #4590276
Lesenswert?

Olaf D. schrieb:
> Wenn der Balken von oben her niedriger werden soll,
> musst Du y (also die vertikale Position auf dem PaintDevice)
> verändern.

y ist die Position, an die gezeichnet werden soll. Hat also nichts mit 
der "Normierung" des Pixmaps zu tun.
Ich habe nun mit sy etwas herumgespielt. So wie ich das sehe ist sy 
einfach ein Offset. Das Pixmap wird einfach um sy nach oben verschoben 
und oben herum abgeschnitten. Zusätzlich habe ich den gleiche Werte wie 
in sy zu y Position addiert und schon scheint es zu passen.


Olaf D. schrieb:
> Normalerweise nimmt man für so etwas eine Fertige Füllstandsanzeige
> (QProgressBar).
Ich verwedene gar keine Widgets von Qt, da ich fertige Grafiken habe.
#4590703
Lesenswert?

Mike schrieb:
> Olaf D. schrieb:
>> Wenn der Balken von oben her niedriger werden soll,
>> musst Du y (also die vertikale Position auf dem PaintDevice)
>> verändern.
>
> y ist die Position, an die gezeichnet werden soll. Hat also nichts mit
> der "Normierung" des Pixmaps zu tun.

y gibt die Oberkante an. Wenn die verschoben werden soll, musst du y 
ändern. Mir ist nicht ganz klar, was du mit "Normierung" meinst.

> Ich habe nun mit sy etwas herumgespielt. So wie ich das sehe ist sy
> einfach ein Offset.

sx, sy, sw und sh beschreiben, welchen Ausschnitt aus der Pixmap du 
zeichnen willst.

> Das Pixmap wird einfach um sy nach oben verschoben und oben herum
> abgeschnitten.

Ja, so kann man es auch formulieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren