[Interest] Qml Canvas is too slow

Alexander Dyagilev alervdvcw at gmail.com
Thu Oct 31 19:13:02 CET 2019


Thanks for the answer.

This means I'll have to use c++. But I was asking for a way to stick 
with a pure QML.


On 10/31/2019 7:52 PM, Nuno Santos wrote:
> Alexander,
>
> You should use QtQuick Scene Graph. It will be 100x faster.
>
> Look for examples on QtCreator under the welcome tab. Use the search 
> input box and write “scene graph”.
>
> Scene Graph - Custom Geometry
> Scene Graph - Graph
>
> If it is the first time, it might look confusing but it will pay off.
>
> Best,
>
> Nuno
>
>> On 31 Oct 2019, at 16:42, Alexander Dyagilev <alervdvcw at gmail.com 
>> <mailto:alervdvcw at gmail.com>> wrote:
>>
>> Hello,
>>
>> The following code is too slow (paint operation takes few seconds):
>>
>> Canvas{
>>
>> id:map
>> width:columnsCount*rectangleSize
>> height:rowsCount*rectangleSize
>> anchors.horizontalCenter:alignCenter?parent.horizontalCenter:undefined
>> anchors.left:alignCenter?undefined:parent.left
>> anchors.bottom:parent.bottom
>> propertyintoffset:1
>> onPaint:drawMap()
>> functiondrawMap(){
>> if(columnsCount===0||rowsCount===0){
>> return;
>> }
>> varmap=downloadProgressMap.map();
>> varctx=getContext("2d");
>> for(vari=0;i<map.length;i++){
>> varx=(i%columnsCount)*rectangleSize;
>> vary=(Math.floor(i/columnsCount))*rectangleSize;
>> if(map[i]){
>> drawFillRect(ctx,x,y);
>> }else{
>> drawClearRect(ctx,x,y);
>> }
>> }
>> }
>> functiondrawFillRect(ctx,x,y){
>> ctx.fillStyle=appWindow.theme.progressMapFillBorder
>> ctx.fillRect(x+offset,y+offset,rectangleSize-offset*2,rectangleSize-offset*2);
>> ctx.fillStyle=appWindow.theme.progressMapFillBackground
>> ctx.fillRect(x+offset+1,y+offset+1,rectangleSize-(offset+1)*2,rectangleSize-(offset+1)*2);
>> }
>> functiondrawClearRect(ctx,x,y){
>> ctx.fillStyle=appWindow.theme.progressMapClearBorder
>> ctx.fillRect(x+offset,y+offset,rectangleSize-offset*2,rectangleSize-offset*2);
>> ctx.fillStyle=appWindow.theme.background
>> ctx.fillRect(x+offset+1,y+offset+1,rectangleSize-(offset+1)*2,rectangleSize-(offset+1)*2);
>> }
>> }
>>
>> Can anything be done to improve its speed, or should we use c++ instead?
>>
>> It paints the following:
>>
>> <laaeocmjenhcnjkg.png>
>>
>> Map size: 2323 elements.
>> _______________________________________________
>> Interest mailing list
>> Interest at qt-project.org <mailto:Interest at qt-project.org>
>> https://lists.qt-project.org/listinfo/interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20191031/80ec8ad2/attachment-0001.html>


More information about the Interest mailing list