zoukankan      html  css  js  c++  java
  • qt qml 刮刮卡效果

    用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     }
  • 相关阅读:
    浅析值类型与引用类型的内存分配[转载]
    C#引用类型参数,ref按引用传值
    java调用WebService的例子
    poj 2727 Expectation
    IT O
    Android_notepadz
    tomcat mysql 数据源
    android_snakez
    Tomcat下配置ssl
    Android_Hello Worldz
  • 原文地址:https://www.cnblogs.com/surfsky/p/4290708.html
Copyright © 2011-2022 走看看