In QML ho creato una vista Rectangle
con un set di elementi Image
al suo interno. Non riesco a far funzionare la proprietà smooth
, che è impostata su true
sia per la vista che per le immagini. Ho provato a ridimensionare le immagini e ad aumentare la visualizzazione. A prescindere da ciò che faccio, ottengo un'immagine scalettata e seghettata. Mi sto perdendo qualcosa?QML Immagine liscia proprietà non funzionante
Sto lavorando con Qt 5.2 e sto usando un QtQuick2ApplicationViewer
(sottoclasse di QQuickView
) come la mia vista principale.
Ho trovato soluzioni in cui viene applicata la levigatura sostituendo il gestore di immagini nel motore, ma ritengo che la proprietà smooth
debba funzionare appena fuori dalla scatola.
Codice:
Image {
source: "image_400x400.png"
width: 400
height: 400
smooth: true
transform {
Scale {xScale: 0.25; yScale: 0.25}
}
}
Secondo tentativo:
Image {
source: "image_400x400.png"
width: 100
height: 100
smooth: true
}
terzo tentativo:
Rectangle {
width: 400
height: 400
smooth: true
Image {
source: "image_400x400.png"
width: 400
height: 400
smooth: true
}
transform {
Scale {xScale: 0.25; yScale: 0.25}
}
}
ottengo lo stesso risultato ogni volta.
Aggiornamento: come suggerito da Nejat, ho provato la nuova proprietà Qt 5 antialiasing
. Il risultato migliora, ma quando il ridimensionamento sotto i bordi di 0,5x risulta ancora un po 'frastagliato. C'è un modo per cambiare la qualità dell'antialiasing?
Da sinistra a destra:
- output atteso (scalato con Photoshop, inedito)
antialiasing
esmooth
abilitato- solo
smooth
abilitato
I' m anche vinto ancora dering why smooth
non fa nulla.
Questo è davvero elaborato, grazie Kay!Ora sto scherzando: funziona, ma il risultato immediato ha tanto aliasing che si sta facendo sfocato quando ridimensiono le immagini più di 4x. Immagino che scrivere effetti shader personalizzati sia il prossimo passo? Potrei semplicemente limitarmi alla soluzione per il formato di superficie che ho postato in precedenza per mantenere le cose semplici. – Robbert
Grazie ancora a Kay, 'mipmap: true' ha effettivamente risolto il problema a partire da Qt 5.3. – Robbert
Grazie! Ho passato un buon quarto d'ora a rinunciare alla proprietà di 'antialias' chiedendomi perché non stava facendo nulla ... –