码迷,mamicode.com
首页 > 其他好文 > 详细

qt qml 刮刮卡效果

时间:2015-02-13 18:22:17      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:

用canvas+mouseArea实现的刮刮卡效果。

表层是一层色彩,用手指划开,可看到下面的文字
Lisence: MIT, 请保留本文档说明
Author: surfsky.cnblogs.com 2015-02

【先看效果】

技术分享

【下载】

http://download.csdn.net/detail/surfsky/8445011

【核心代码】

 1     Canvas {
 2         id: canvas
 3         anchors.fill: parent
 4 
 5         //
 6         property bool isFirstPaint : true;
 7         property point lastPt;
 8 
 9         //
10         onPaint: {
11             var ctx = getContext(‘2d‘);
12             if (isFirstPaint){
13                 // 首次绘制刮刮层图案
14                 ctx.fillStyle = root.maskColor;
15                 ctx.fillRect(0, 0, width, height);
16                 isFirstPaint = false;
17             }
18             else{
19                 // 去除鼠标位置的图案
20                 clearRound(ctx, lastPt, 20);
21                 lastPt = Qt.point(area.mouseX, area.mouseY);
22             }
23         }
24 
25         // 清除圆形区域
26         function clearRound(ctx, p, r)
27         {
28             ctx.save();
29             ctx.globalCompositeOperation = ‘destination-out‘;
30             ctx.beginPath();
31             ctx.arc(p.x, p.y, r, 0, 2*Math.PI, false);
32             ctx.fill();
33             ctx.restore();
34         }
35 
36         // 记录下最后的鼠标点,并请求canvas重绘
37         MouseArea {
38             id: area
39             anchors.fill: parent
40             onPressed: {canvas.lastPt = Qt.point(mouseX, mouseY);}
41             onPositionChanged: {canvas.requestPaint();}
42         }
43     }

 

qt qml 刮刮卡效果

标签:

原文地址:http://www.cnblogs.com/surfsky/p/4290708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!