seb*_*sgo 13
effect所有视觉QML项目都具有的属性接受作为子类的所有效果QGraphicsEffect.Qt的4.8附带QGraphicsBlurEffect,QGraphicsColorizeEffect,QGraphicsDropShadowEffect,和QGraphicsOpacityEffect.最初这些都是默认的QML版本,但是在开发的同时(在QtQuick的第一次公开发布之前),由于性能原因,它们被排除在外.为了使它们再次工作,必须在其应用程序的C++部分中包含以下代码行,例如在main函数中:
qmlRegisterType<QGraphicsBlurEffect>("Effects",1,0,"Blur");
qmlRegisterType<QGraphicsColorizeEffect>("Effects",1,0,"Colorize");
qmlRegisterType<QGraphicsDropShadowEffect>("Effects",1,0,"DropShadow");
qmlRegisterType<QGraphicsOpacityEffect>("Effects",1,0,"OpacityEffect");
Run Code Online (Sandbox Code Playgroud)
这使得这些类可用于QML,因此可以使用它们,如:
import QtQuick 1.1
import Effects 1.0
Item {
// [...]
effect: Blur {
blurRadius: 10.0
}
}
Run Code Online (Sandbox Code Playgroud)
这样可行,但在许多情况下,最终的性能确实是不可接受的.然后你应该尝试在帮助下实现模糊ShaderEffectItem.通过这种方式,可以使用GLSL着色器程序实现图形效果,从而导致GPU渲染,这比旧QGraphicsEffect的方法更快.
| 归档时间: |
|
| 查看次数: |
4719 次 |
| 最近记录: |