Oppure

Loading
25/02/17 10:23
Thejuster
Buongiorno è da poco che ho messo mano al C++ con il framework Qt.
Mi sembra bello potente e performante.

Ho una paio di domande da porre.

Sto usando come strumento di grafica il Pixmap.
Volevo alcuni chiarimenti su questo componente, Il draw sul Pixmap è paragonabile a quello del C#
o più potente?

Sul C# quando utilizzavo le GDI avevo un rallentamento pazzesco su immagini di grosse dimensioni.



Sto provando a fare un piccolo programmino di esempio.
per disegnare delle immagini ritagliate i determinate posizioni


struct ElementPost
{
    QRect ElementPos;
    QPixmap imagedata;
};

QList<ElementPost *> elements;


void mapeditor::mousePressEvent(QMouseEvent *mouse_event)
{
    if(mouse_event->button() == Qt::LeftButton)
    {
        ElementPost *ps = new ElementPost;
        ps->ElementPos = QRect(mouse_event->x(),mouse_event->y(),32,32);
        ps->imagedata = imagedata;
        elements.append(ps);

    }

}





Override del metodo paint su oggetto


 //Draw Element
    for(int i = 0; i < elements.count(); i++)
    {

        p.drawPixmap(elements[i]->ElementPos.x() / blw * blw, elements[i]->ElementPos.y()/blh*blh,blw,blh,this->imagedata,elements[i]->ElementPos.x()/blw*blw,elements[i]->ElementPos.y()/blh*blh,blw,blh);

    }




Il risultato è che ottengo ciò


s21.postimg.org/qfzopfyhj/…


A sinistra ho un set di elementi divisi a griglia
come notate se ci clicco sopra, mi prende correttamente il pezzo e lo visualizza a destra
dove poi sarà l'utente a piazzarlo.

Ma con quella riga che ho fatto nel ciclo for, qualcosa non quadra

s16.postimg.org/yocdm96md/…

dal momento che vado e premere a destra mi aggiunge i vari elementi e coordinate nella lista
solo che anziché disegnarmi il prezzo preso dalle coordinate del pannello a sinistra mi va a ritagliare
le i vari pezzi prendendo blocchi di immagini diverse.

dove sbaglio? 8-|
mire.forumfree.it/ - Mire Engine
C# UI Designer
26/02/17 16:56
pierotofy
Postato originariamente da Thejuster:
Volevo alcuni chiarimenti su questo componente, Il draw sul Pixmap è paragonabile a quello del C#
o più potente?


Non so se la domanda ha molto senso... potente in senso di velocita', funzionalita', ... C# poi e' un linguaggio, non ha niente a che fare con la grafica. Forse intendevi un confronto tra Pixmap e GDI? Sinceramente non saprei in termini di prestazioni, potresti fare qualche benchmark e confrontare i risultati.


dove sbaglio? 8-|


A giudicare dalla chiamata, direi che i parametri di drawPixmap non sono corretti...

drawPixmap(int x, int y, const QPixmap & pixmap, int sx, int sy, int sw, int sh)
x = elements[i]->ElementPos.x()
y = elements[i]->ElementPos.y()
pixmap = this->imagedata
sx = elements[i]->ElementPos.x()
sy = elements[i]->ElementPos.y()
sw = blw
sh = blh


Da dove viene this->imagedata? Forse intendevi elements[ i]->imagedata? In tal caso e' probabile che x e y, o sx e sy devono essere aggiustati... rileggi la definizione di drawPixmap su doc.qt.io/qt-4.8/… e magari con carta e penna visualizza i diversi elementi e etichetta le varie coordinate.

Ultima modifica effettuata da pierotofy 26/02/17 16:56
Il mio blog: piero.dev
01/03/17 16:06
Thejuster
Ho risolto grazie per le info piero.

Il problema era principalmente tutto il sistema che avevo fatto.
Prendevo le coordinate si, ma in modo sbagliato.

Ho deciso quindi di includere nell'header del mapeditor quello del Tilepicker
in modo da poter recuperare l'ultima posiziona croppata ed al momento del click aggiungere le varie coordinate.

s18.postimg.org/appb1eavd/…
Ultima modifica effettuata da Thejuster 01/03/17 16:07
mire.forumfree.it/ - Mire Engine
C# UI Designer