Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

Performance tip Images/bg

From Qt Wiki
Jump to navigation Jump to search

[toc align_right="yes" depth="3"]

Български English

Растерна срещу векторна графика

В Qt могат да се използват изображения във всички стандартни формати. Като например PNG и JPEG и векторна графика във формат SVG.

И все пак рендирането на SVG е доста бавно, сравнено с битмап изображение. Ето още някои съвети, как да направите интерфейса на вашето приложение по-приятен.

Зареждайте големите изображения асинхронно

Ако зареждате изображенията синхронно, интерфейса се блокира, докато операцията не завърши. В повечето случаи, не е нужно изображенията да се показват незабавно, така че те могат да се заредят отделно. Това може да се направи като сложите свойството на QML Image asynchronous на true. По този начин интерфейса може да приема команди от потребителя. Внимание! Това свойство е валидно само за изображения, които са на локалната файлова система. Изображения, които се зареждат през мрежата (пр. HTTP), винаги се зареждат асинхронно.

Избягайте преоразмеряване/скалиране

Преоразмеряването и скалирането са много тежки операции в QML. Използвайте изображения, които са в техните реални размери, вместо да ги преоразмерявате/скалирате големи до желаният размер.

Използвайте sourceSize с големи изображения

Изображенията често са най-големият консуматор на памет в QML интерфейса. За големи изображения използвайте sourceSize. С него оказвате колко голямо да бъде изображението, когато бъде заредено в паметта. Ако имате голямо изображение 3264 x 2448, но сложите sourceSize 204x153, тогава то ще бъде скалирано и съхранено с размери 204x153 в паметта. По този начин много големи изображения не използват повече от нужното памет. Това е особено важно за изображения, които се зареждат от външен източник или се предоставят от потребителя. Внимание! Промяната на това свойство по време на изпълнение ще доведе до презареждането на изображението, което може да е доста бавно, ако то е на отдалечен компютър и не е кеширано на хард диска.

Включвайте Image.smooth само когато е необходимо

Включването на Image.smooth се отразява зле на производителността. Използвайте изображения с тяхната естествена големина или спирайте заглаждането по време на анимации. Свойството Image.smooth позволява изображението да изглежда по-добре, когато е преоразмерено или трансформирано. Това дава по-добро качестово, но е по-бавно.

Избягвайте да създавате композиции от изображения

По-ефективно е да създадете една картинка от много и да я заредите в QML, отколкото да ги обедините динамично в кода. Например, сянка на картинка може да се създаде като се постави Rectangle под изображението, но по ефективно е да направите картинката с рамка в някоя програма за изображения и нея да подадете на QML кода.