查看完整版本: [-- QML的Canvas配合动画框架出现性能下降 --]

QTCN开发网 -> Qt QML开发 -> QML的Canvas配合动画框架出现性能下降 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

彩阳 2014-07-03 10:49

QML的Canvas配合动画框架出现性能下降

如题。是这样的,由于想要绘制一些直线什么的图元,因而使用Canvas来进行绘制。
但是基本上都是动态改变直线的位置的,所以利用了NumberAnimation作用于Canvas的直线位置。绘制直线的API如下:
context2D.moveTo( p1.x, p1.y );
context2D.lineTo( p2.x, p2.y );
这样的调用大概循环了20来次吧。运行NumberAnimation发现渲染的性能有些下降,本来很流畅的画面变得不再流畅了。
现在暂时没有什么好的方法解决问题,毕竟画线的函数在QML中我发现只能利用Canvas了。再不行的话可能就要使用QML调用C++来绘制OpenGL的直线了。

彩阳 2014-07-14 17:42
我目前采取了另外一个方法实现:动态创建Rectangle,再加上Rectangle.rotation来设置它的旋转。因为非常细的Rectangle也相当于一条直线,而且性能上比Canvas刷新要高。再加上QML的绑定功能可以获得更好的效果。

ch781609892 2017-09-30 15:39
使用c++的类性能要好点。QQuickPaintedItem。Canvas 如果画的复杂,并且不停的repaint,效率就低了。

angelus 2017-09-30 22:21
楼上正解,继承QQuickPaintedItem自定义qml显示控件,性能会达到最佳!

有时候自带qml会比较局限,比如显示图片只能用URL,不能直接接受QImage 或者Qpixmap类型的数据,就需要自己去实现显示组件!



查看完整版本: [-- QML的Canvas配合动画框架出现性能下降 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled