Seite 1 von 1

QPicture schneiden?

Verfasst: 16. Juli 2006 20:49
von Whitefurrows
Hallo,

wenn ich ein QPicture(z.b. Höhe 500 x Breite 250) habe, wie kann ich dieses zuschneiden, damit ich ein neues QPicture habe(z.B. Höhe 250 x Breite 250). Die neue Höhe muss von unten gemessen werden, da das Original QPicture in der Höhe variieren kann und ich brauche immer den unteren Teil von z.B. 250.

Gruß

Whitefurrows

Verfasst: 16. Juli 2006 22:18
von upsala
du kannst versuchen, mit QPainter:setClipRect(...) zu arbeiten

Verfasst: 16. Juli 2006 23:05
von Whitefurrows
Hallo,

danke für den Tipp. So habe ich es versucht:

Code: Alles auswählen

QPainter p;
QPicture pic;
QRect cut;

pic.load("c:\\pic.png");
cut.setRect(0, pic.height()-250 ,250,250);

p.begin(&pic);
p.setClipRect(cut);
p.end();

pic.save("c:\\pic2.png")
Leider funktioniert es nicht, kannst du mir helfen?

Gruß

Whitefurrows

Verfasst: 16. Juli 2006 23:13
von Esleborn
ähm ich hab eigentlich keine Ahnung davon, aber könnte es sein, dass du
den Painter zwar als abgeschnitten zu zeichnen definierst, aber erstens vergisst das Bild zu zeichnen und zweitens wenn du zeichnen würdest, der Rest immernoch da wäre, da du ihn ja nicht verworfen hast?

Probier mal:

Code: Alles auswählen

QPicture pic;
QPicture target;

pic.load("c:/pic.png");

if ( !pic.isNull ( ) )
{
   QRect cut ( 0, pic.height()-250 ,250,250);
   QPainter painter ( &target );
   painter.setClipRect(cut);
   painter.drawPicture(0, 0, pic);
   painter.end();
}

target.save("c:/pic2.png")
Elgrimm Esleborn

Verfasst: 16. Juli 2006 23:51
von Whitefurrows
Ja, das hört sich gut an, aber leider funktioniert es so auch nicht? Ist vielleicht jemand da der sich damit auskennt, sollte eigentlich nicht so schwer sein!?

Gruß

Whitefurrows

Verfasst: 17. Juli 2006 17:01
von upsala
Also, das hier funktioniert:

Code: Alles auswählen

#include <QtGui>

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);

	QPicture pic1;
	
	QPainter p;
	p.begin(&pic1);
	p.setPen(QColor(0, 0, 255));
	p.setBrush(QColor(0, 128, 0));
	p.drawEllipse(0, 0, 100, 100);
	p.end();
	
	QPicture pic2;
	p.begin(&pic2);
	p.setClipRect(0, 0, 50, 50);
	p.drawPicture(0, 0, pic1);
	p.end();
	
	QLabel *label=new QLabel(0);
	label->show();
	label->setPicture(pic2);
	
	
	return app.exec();
}

Verfasst: 19. Juli 2006 23:29
von Whitefurrows
Hallo,

danke für den Tipp, funktioniert super. Allerdings verstehe ich nicht warum er mit target.save("c:/pic2.png") das Bild nicht speichert. Ebenso lädt er mir das Bild nicht mit pic.load("c:/pic.png");

Hat jemand evtl. eine Erklärung dafür?

Gruß

Whitefurrows

Verfasst: 20. Juli 2006 17:26
von upsala
Weil wir hier keine Pixel- sondern Vektordaten haben und somit png nicht als Grafikformat sinnvoll ist.

Verfasst: 20. Juli 2006 18:07
von Whitefurrows
Wie kann ich dann eine Pixel-Grafik landen und eine Vektor-Grafik als Pixel-Grafik speichern?

Gruß

Whitefurrows