Alexander, Why do you want to stick to pure Qml?
What are the reasons? -- Nuno Santos No dia 31/10/2019, às 18:13, Alexander Dyagilev <alervd...@gmail.com> escreveu: > 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 <alervd...@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 >>> property int offset: 1 >>> onPaint: drawMap() >>> function drawMap() { >>> if (columnsCount === 0 || rowsCount === 0) { >>> return; >>> } >>> var map = downloadProgressMap.map(); >>> var ctx = getContext("2d"); >>> for (var i = 0; i < map.length; i++) { >>> var x = (i % columnsCount) * rectangleSize; >>> var y = (Math.floor(i/columnsCount)) * rectangleSize; >>> if (map[i]) { >>> drawFillRect(ctx, x, y); >>> } else { >>> drawClearRect(ctx, x, y); >>> } >>> } >>> } >>> function drawFillRect(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); >>> } >>> function drawClearRect(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@qt-project.org >>> https://lists.qt-project.org/listinfo/interest >>
_______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest