Performance tip Images/bg

From Qt Wiki
< Performance tip Images
Revision as of 07:38, 24 February 2015 by Maintenance script (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

[toc align_right="yes&quot; depth="3&quot;]

Български 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 кода.