[Interest] Qml Canvas is too slow
Alexander Dyagilev
alervdvcw at gmail.com
Thu Oct 31 17:42:52 CET 2019
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:
Map size: 2323 elements.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20191031/b90fd805/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: laaeocmjenhcnjkg.png
Type: image/png
Size: 2589 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20191031/b90fd805/attachment.png>
More information about the Interest
mailing list