Performance tip Images/bg: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
[toc align_right="yes" depth="3"]
[toc align_right="yes" depth="3"]


'''Български''' [[Performance_tip_Images|English]]
'''Български''' [[Performance_tip_Images|English]]
Line 15: Line 15:




Ако зареждате изображенията синхронно, интерфейса се блокира, докато операцията не завърши. В повечето случаи, не е нужно изображенията да се показват незабавно, така че те могат да се заредят отделно. Това може да се направи като сложите свойството на QML ''Image'' ''asynchronous'' на ''true''. По този начин интерфейса може да приема команди от потребителя. '''Внимание!''' Това свойство е валидно само за изображения, които са на локалната файлова система. Изображения, които се зареждат през мрежата (пр. HTTP), винаги се зареждат асинхронно.<br />* За повече информация: http://doc.qt.nokia.com/latest/qml-image.html#asynchronous-prop
Ако зареждате изображенията синхронно, интерфейса се блокира, докато операцията не завърши. В повечето случаи, не е нужно изображенията да се показват незабавно, така че те могат да се заредят отделно. Това може да се направи като сложите свойството на QML ''Image'' ''asynchronous'' на ''true''. По този начин интерфейса може да приема команди от потребителя. '''Внимание!''' Това свойство е валидно само за изображения, които са на локалната файлова система. Изображения, които се зареждат през мрежата (пр. HTTP), винаги се зареждат асинхронно.
* За повече информация: http://doc.qt.nokia.com/latest/qml-image.html#asynchronous-prop


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




Изображенията често са най-големият консуматор на памет в QML интерфейса. За големи изображения използвайте sourceSize. С него оказвате колко голямо да бъде изображението, когато бъде заредено в паметта. Ако имате '''голямо''' изображение 3264 x 2448, но сложите ''sourceSize'' 204x153, тогава то ще бъде скалирано и съхранено с размери 204x153 в паметта. По този начин много големи изображения не използват повече от нужното памет. Това е особено важно за изображения, които се зареждат от външен източник или се предоставят от потребителя. '''Внимание!''' Промяната на това свойство по време на изпълнение ще доведе до презареждането на изображението, което може да е доста бавно, ако то е на отдалечен компютър и не е кеширано на хард диска.<br />* Повече информация за свойството Image::sourceSize : http://doc.qt.nokia.com/latest/qml-image.html#sourceSize-prop<br />* Изображенията се кешират, така че ако няколко ''Image'' елемента имат един и същ файл, само 1 копие ще бъде заредено . За повече информация: http://doc.qt.nokia.com/latest/qml-image.html#source-prop
Изображенията често са най-големият консуматор на памет в 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'' само когато е необходимо ==
Line 33: Line 36:




Включването на Image.smooth се отразява зле на производителността. Използвайте изображения с тяхната естествена големина или спирайте заглаждането по време на анимации. Свойството Image.smooth позволява изображението да изглежда по-добре, когато е преоразмерено или трансформирано. Това дава по-добро качестово, но е по-бавно.<br />* За повече информация: http://doc.qt.nokia.com/latest/qml-image.html#smooth-prop
Включването на Image.smooth се отразява зле на производителността. Използвайте изображения с тяхната естествена големина или спирайте заглаждането по време на анимации. Свойството Image.smooth позволява изображението да изглежда по-добре, когато е преоразмерено или трансформирано. Това дава по-добро качестово, но е по-бавно.
* За повече информация: http://doc.qt.nokia.com/latest/qml-image.html#smooth-prop


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

Revision as of 13:22, 25 February 2015

[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 кода.