Kirjoittaja Aihe: Kuvan pyöritys Qt:lla? [Ratkaistu]  (Luettu 1226 kertaa)

snifi

  • Vieras
Kuvan pyöritys Qt:lla? [Ratkaistu]
« : 06.06.10 - klo:20.43 »
Minulla on kaksi kuvaa, joista olen yrittänyt tehdä koostekuvan:
Ensimmäinen kuva:

Toinen kuva:


Tarkoituksena olisi pyörittää tuulinuoli oikeaan asentoon:

Koodia: [Valitse]
# -*- coding: utf-8 -*-

from PyQt4.QtGui import *

compassrose=QImage("compass_rose_pale.png")
windarrow=QImage("compass_rose_arrow.png")
resultImage=compassrose
painter=QPainter(resultImage)
s=windarrow.size().height()/2
for rot in [10,20,30,40,50,60,70,80,90]:
  matrix=QMatrix()
  matrix.translate(s,s)
  matrix.rotate(rot)
  matrix.translate(-s,-s);
  painter.drawImage(0, 0, windarrow.transformed(matrix));
resultImage.save("compass_rose_combined.png")

Mutta tulos on tämä:

Miten saisin kuvan pyörimään oikealla tavalla keskeltä? Näyttäisi, että se pyörii oikein, mutta neliskulmaisena kuvana se muuttaa kuvan dimensioita samalla.
« Viimeksi muokattu: 06.06.10 - klo:23.16 kirjoittanut snifi »

snifi

  • Vieras
Vs: Kuvan pyöritys Qt:lla?
« Vastaus #1 : 06.06.10 - klo:23.15 »
Ei hirveän kaunis ratkaisu, mutta:

Koodia: [Valitse]
# -*- coding: utf-8 -*-

from PyQt4.QtGui import *

compassrose=QImage("compass_rose_pale.png")
windarrow=QImage("compass_rose_arrow.png")
resultImage=compassrose
painter=QPainter(resultImage)
centerX=windarrow.size().width()/2
centerY=windarrow.size().height()/2

for rot in range(0,360,10):
  matrix=QMatrix()
  matrix.translate(centerX,centerY)
  matrix.rotate(rot)
  matrix.translate(-centerX,-centerY)

  transformed=windarrow.transformed(matrix)
  cx=transformed.size().width()/2
  cy=transformed.size().height()/2
  xShift = centerX-cx
  yShift = centerY-cy
  painter.drawImage(xShift, yShift, transformed);
resultImage.save("compass_rose_combined2.png")