QML做图片倒影效果(控件倒影)
前言
用 QML 做图片倒影,主要是用ShaderEffect组件来实现,先来看看实际效果,如下:
还可以用同样的方式来做其他控件的倒影,例如:
正文
直接来看源码
import QtQuick 2.0
import QtQuick.Controls 1.4Rectangle {id: windowwidth: 600height: 500gradient: Gradient {GradientStop { position: 0; color: "lightsteelblue" }GradientStop { position: 1; color: "black" }}Image {id: imgwidth: 300height: 170source: "car.png"anchors.centerIn: parent}ShaderEffect {anchors.top: img.bottomwidth: img.widthheight: img.heightanchors.left: img.leftproperty variant source: imgproperty size sourceSize: Qt.size(0.5 / img.width, 0.5 / img.height)fragmentShader: "varying highp vec2 qt_TexCoord0;uniform lowp sampler2D source;uniform lowp vec2 sourceSize;uniform lowp float qt_Opacity;void main() {lowp vec2 tc = qt_TexCoord0 * vec2(1, -1) + vec2(0, 1);lowp vec4 col = 0.25 * (texture2D(source, tc + sourceSize)+ texture2D(source, tc- sourceSize)+ texture2D(source, tc + sourceSize * vec2(1, -1))+ texture2D(source, tc + sourceSize * vec2(-1, 1)));gl_FragColor = col * qt_Opacity * (1.0 - qt_TexCoord0.y) * 0.2;}"}
}
若要拓展做其他控件的倒影,只需要修改property variant source: img 对象即可.
还有一种比较简单的容易理解的方式来实现同样的效果
import QtQuick 2.0
import QtQuick.Controls 1.4Rectangle {id: windowwidth: 600height: 500gradient: Gradient {GradientStop { position: 0; color: "lightsteelblue" }GradientStop { position: 1; color: "black" }}Image {id: imgwidth: 300height: 170source: "car.png"anchors.centerIn: parent}Item{width: img.widthheight: img.heightImage{source: img.sourceanchors.fill: parenttransform: Scale{yScale: -1origin.y:img.height/2.}}LinearGradient{width: img.widthheight: img.heightgradient: Gradient{GradientStop{position: 0.0;color:Qt.rgba(0,0,0,0.1)}GradientStop{position: 0.4;color:Qt.rgba(0,0,0,1)}}}}
}
原理是先通过设置一张倒着的图片,然后在图片上添加一个渐变层,代码很简单,不再赘述。
QML做图片倒影效果(控件倒影)相关推荐
- QT如何实现控件倒影特效
QT如何实现控件倒影特效 想要为某些控件不只是图片加倒影特效,例如: 这样: 例如: 这样: 于是,在我的潜心研究之下,终于找到了两种实现方法: (一)使用QT的QGraphicsEffect类 QG ...
- 图片剪裁控件——ClipImageView
这段时间在做自己的项目时,须要使用到图片剪裁功能,当时大概的思考了一些需求.想到了比較简单的实现方法.因此就抽了点时间做了这个图片剪裁控件--ClipImageView 这里先贴上ClipImageV ...
- Android微信九宫格图片展示控件
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/214 Android微信九宫格图片展示控件 半年前,公司产 ...
- Android开发技巧——定制仿微信图片裁剪控件
拍照--裁剪,或者是选择图片--裁剪,是我们设置头像或上传图片时经常需要的一组操作.上篇讲了Camera的使用,这篇讲一下我对图片裁剪的实现. 背景 下面的需求都来自产品. 裁剪图片要像微信那样,拖动 ...
- 第一站小红书图片裁剪控件,深度解析大厂炫酷控件
先来看两张效果图: 哈哈,就是这样了.效果差了一些,感兴趣的小伙伴们可以运行代码感受丝滑与弹性.前段时间在竞品小红书上看到了这样的效果:图片可以跟随手指移动,双指可以(无限)放大,缩小,还可以挤压,手 ...
- CropImageView android上的一个图片裁剪控件
CropImageView **文前:**本文非常容易让读者看的云里雾里,建议直接看效果图,觉得有用就去看源码吧. CropImageView的原型来自Cropimage_demo,是android上 ...
- 第一站小红书图片裁剪控件之二,自定义CoordinatorLayout联动效果
本篇续: 第一站小红书图片裁剪控件,深度解析大厂炫酷控件 先来看看几张效果图: emmmm,想感受高清丝滑的动画效果,有以下两种方式: https://github.com/HpWens/MeiWid ...
- 像小红书一样的图片裁剪控件联动效果
今日科技快讯 据CNBC报道,美国法官已经要求特斯拉首席执行官埃隆·马斯克(Elon Musk)在未来两周内设法与美国证券交易委员会(SEC)达成和解协议.否则,法院将决定是否判马斯克犯有藐视法庭罪. ...
- 第一站仿小红书图片裁剪控件,深度解析大厂炫酷控件
先来看两张效果图: 哈哈,就是这样了.效果差了一些,感兴趣的小伙伴们可以运行代码感受丝滑与弹性.前段时间在竞品小红书上看到了这样的效果:图片可以跟随手指移动,双指可以(无限)放大,缩小,还可以挤压,手 ...
最新文章
- 高低压配电系统基础知识,都是非常全面的分享!
- Handle/Body pattern(Wrapper pattern)
- 程序设计语言基础-知识点
- IplImage, CvMat, Mat 的关系和相互转换(转)
- 色彩空间(CIE色度图,SRGB,AdobeRGB...)
- 易语言 火眼 哈勃 防分析源码
- origin拟合曲线,并绘制曲线上某一点的切线
- HTML 命名规范说明
- 如何使用Hulu观看晚会与朋友一起看电视
- wuauclt.exe windows 自动更新测试命令
- NISP网络信息安全面试怎么选择(六)NISP管理中心
- PreRNN+:Towards A Resolution of the Deep-in-Dilemma in Saptiotemporal Predictive Learning
- 教你关闭烦人的“程序兼容性助手”~~~~~
- 主力吸筹猛攻指标源码_通达信最准确的抄底指标——主力吸筹(无未来附源码)...
- 【解决方法】Win10还原默认打开方式图标
- Eclipse配置Python的IDE
- android 携程页面,android 仿携程首页源码(自定义button)
- 【Java面试】什么是字节码?采用字节码的好处是什么?
- 仿淘宝关闭二维码案例
- setTimeout 的黑魔法