Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Qt transformacja obrazu

Ostatnio zmodyfikowano 2014-09-09 12:39
Autor Wiadomość
Locke
Temat założony przez niniejszego użytkownika
Qt transformacja obrazu
» 2014-09-01 11:16:41
Cześć.
Mam pytanie w jaki sposób ustawić obraz.jpg oraz wyświetlić w funkcji dany obraz np. po skalowaniu. Znalazłem na jakimś forum działający przykład ale nie mogę jakoś wcielić go w życie.
Oto co stworzyłem
void ImageWidget::SkalowanieQ()
{
    QPainter rys;
    QImage in("obraz.jpg");
    QImage out;
    double sx = 1.5;
    double sy = 1.5;
    int w1 = in.width();
    int h1 = in.height();

    double w2 = w1 * sx;
    double h2 = h1 * sy;

    double x1,y1;

    double ratioX = w1/w2;
    double ratioY = h1/h2;

    for(int y=0; y<h2; y++)
    {
        for(int x=0; x<w2; x++)
        {
            x1 = x * ratioX;
            y1 = y * ratioY;
            if(x1 >= 0 && x1 < in.width() && y1 >= 0 && y1 < in.height())
                out.setPixel(QPoint(x,y),in.pixel(x1,y1));
        }
    }
    rys.drawImage(0, 0, out);
    update();
}
Kompiluje się lecz po kliknięciu na przycisk skalowanie nic się nie dzieje.

P-116484
madmike44
» 2014-09-09 12:39:44
Qt posiada gotowe mechanizmy do skalowania obrazów. Linki poniżej (klasa QImage):

http://qt-project.org/doc/qt-5​/qimage.html#scaled
http://qt-project.org/doc/qt-5​/qimage.html#scaled-2
http://qt-project.org/doc/qt-5​/qt.html#AspectRatioMode-enum

Co do wyświetlania, to konstruktor obiektu klasy QPainter przyjmuje jako argument wskaźnik do obiektu, po którym będzie rysował, a więc w tym przypadku kod powinien wyglądać tak:

C/C++
QPainter rys( this );

, a nie tak:

C/C++
QPainter rys;

Oczywiście przyjmując, że obiekt, po którym chcesz rysować, to obiekt Twojej klasy ImageWidget.
P-116793
« 1 »
  Strona 1 z 1