Performance tip Images/bg
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine. Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean. |
[toc align_right="yes" depth="3"]
Български English
Растерна срещу векторна графика
В Qt могат да се използват изображения във всички стандартни формати. Като например PNG и JPEG и векторна графика във формат SVG.
И все пак рендирането на SVG е доста бавно, сравнено с битмап изображение. Ето още някои съвети, как да направите интерфейса на вашето приложение по-приятен.
Зареждайте големите изображения асинхронно
Ако зареждате изображенията синхронно, интерфейса се блокира, докато операцията не завърши. В повечето случаи, не е нужно изображенията да се показват незабавно, така че те могат да се заредят отделно. Това може да се направи като сложите свойството на QML Image asynchronous на true. По този начин интерфейса може да приема команди от потребителя. Внимание! Това свойство е валидно само за изображения, които са на локалната файлова система. Изображения, които се зареждат през мрежата (пр. HTTP), винаги се зареждат асинхронно.
- За повече информация: http://doc.qt.nokia.com/latest/qml-image.html#asynchronous-prop
Избягайте преоразмеряване/скалиране
Преоразмеряването и скалирането са много тежки операции в QML. Използвайте изображения, които са в техните реални размери, вместо да ги преоразмерявате/скалирате големи до желаният размер.
Използвайте sourceSize с големи изображения
Изображенията често са най-големият консуматор на памет в QML интерфейса. За големи изображения използвайте sourceSize. С него оказвате колко голямо да бъде изображението, когато бъде заредено в паметта. Ако имате голямо изображение 3264 x 2448, но сложите sourceSize 204x153, тогава то ще бъде скалирано и съхранено с размери 204x153 в паметта. По този начин много големи изображения не използват повече от нужното памет. Това е особено важно за изображения, които се зареждат от външен източник или се предоставят от потребителя. Внимание! Промяната на това свойство по време на изпълнение ще доведе до презареждането на изображението, което може да е доста бавно, ако то е на отдалечен компютър и не е кеширано на хард диска.
- Повече информация за свойството Image::sourceSize : http://doc.qt.nokia.com/latest/qml-image.html#sourceSize-prop
- Изображенията се кешират, така че ако няколко Image елемента имат един и същ файл, само 1 копие ще бъде заредено . За повече информация: http://doc.qt.nokia.com/latest/qml-image.html#source-prop
Включвайте Image.smooth само когато е необходимо
Включването на Image.smooth се отразява зле на производителността. Използвайте изображения с тяхната естествена големина или спирайте заглаждането по време на анимации. Свойството Image.smooth позволява изображението да изглежда по-добре, когато е преоразмерено или трансформирано. Това дава по-добро качестово, но е по-бавно.
- За повече информация: http://doc.qt.nokia.com/latest/qml-image.html#smooth-prop
Избягвайте да създавате композиции от изображения
По-ефективно е да създадете една картинка от много и да я заредите в QML, отколкото да ги обедините динамично в кода. Например, сянка на картинка може да се създаде като се постави Rectangle под изображението, но по ефективно е да направите картинката с рамка в някоя програма за изображения и нея да подадете на QML кода.
- За повече информация: http://doc.qt.nokia.com/latest/painting-imagecomposition.html
- Още информация: http://doc.qt.nokia.com/latest/qdeclarativeperformance.html#image-resources-over-composition