WP8下实现刮刮乐(橡皮擦)功能

说到刮刮乐这个功能,我们最先想到的是上下两张(长方形)重叠,之后对上面这张图片进行操作。

我的想法是:通过手势,让手指划过的地方变成透明的,底部就会显示了。

那如何让图片变为透明呢?这就要对图片的像素进行处理了。

首先,图片的像素是一个int型数组:int[], 此数组长度为图片高(像素)*宽(像素)

比如:一张图片的高宽为200pixel、400pixel,那么这个数组为int[80000]

对于每一个元素,官方文档说都是ARGB32[预乘RGB24]  (A指的是Alpha通道  控制透明度的)

256级(0-255)的RGB色彩总共能组合出约1678万种色彩,即256×256×256=16777216

即每一个元素都为:(-1:白色)----- (-16777216:黑色)   0或其他正值时为透明色

通过

originalWb = new WriteableBitmap(bitmapImage); 

我们获取到是一维数组,为了便于操作,我们将其转换为二维数组。

for (int i = 0; i < iOriginalHeight; i++)  //图片高
{
    for (int j = 0; j < iOriginalWidth; j++)  //图片宽
    {
        pixelTwo[i, j] = originalWb.Pixels[i * (iOriginalWidth) + j];
    }
}

之后我们在手势触摸后,我们就要处理像素了

如图所示:假设我们length=1(指的触摸后的大小吧)

如果我们选中的是红色那个位置,我就要将包括红色像素边上的距离为1的像素组成的正方形(绿色位置)变为透明

我们可以获取到绿色范围的开始结束行和列。

之后只要改变那个像素的颜色就行了。

originalWb.Pixels[(i * iOriginalWidth) + j] = 0;//获取到的周边某个像素的下标为(i * l) + j

最后赋值给图片

下面给出WP8下的demo:记住:需要联网下载一张图片

点击下载

PS:但是效果不是非常的好,由于使用的是正方形(可惜writeablebitmap没有WPF下的一些方法)

如果有更好的方法,希望能告诉我!

时间: 2024-10-09 14:33:49

WP8下实现刮刮乐(橡皮擦)功能的相关文章

自己定义控件-画板,橡皮擦,刮刮乐

画板效果图 页面代码 public class ActionerView extends View { private Paint mPaint = new Paint(); private Path mPath = new Path();//手指滑动路径 private Canvas mCanvas;//缓存画布 private Bitmap mBitmap;//缓存图片 private float pointX, pointY;//触点坐标 public ActionerView(Conte

自定义控件-画板,橡皮擦,刮刮乐

画板效果图 页面代码 public class ActionerView extends View { private Paint mPaint = new Paint(); private Path mPath = new Path();//手指滑动路径 private Canvas mCanvas;//缓存画布 private Bitmap mBitmap;//缓存图片 private float pointX, pointY;//触点坐标 public ActionerView(Conte

vue 刮刮乐功能实现

<template> <!--游玩区域--> <div class="panel"> <canvas id="canvas" @touchstart.prevent="touchStart($event)" @touchmove.prevent="eventMove($event)" :style='{"background-image":"url(&qu

Android实现刮刮乐效果

前几个月刚接触Android的时候做了一个小项目,其中也用到了类似刮刮乐的效果,现在把代码贴出来 首先要做一个类似橡皮擦的东西吧,然后才能把纸上的笔迹擦除 /** * FileName: SplashActivity.java * * @desc 橡皮擦功能,类似刮刮乐效果 * @author HTP * @Date 20140311 * @version 1.00 */ public class Text_Rubbler extends TextView { private float TOU

20行js代码制作网页刮刮乐

分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码效果如下 盖伦.jpg 刮刮乐.gif HTML部分 <body> ![](img/gailun.jpg) <canvas id="canvas" width="400" height="300"></canvas> </body> 没什么要特别注意的为了效果加了些CSS样式 CSS部分 <style type=&qu

Android 撕衣服(刮刮乐游戏)

项目简介: 该项目为撕衣服,类似刮刮乐游戏 详细介绍: 用户启动项目后,加载一张图片,当用户点击图片的时候,点击的一片区域就会消失,从而显示出在这张图片下面的图片 这个小游戏类似与刮奖一样,刮开涂层就会显示文字. 这里则是撕掉美女身上的衣服,漏出里面的图片. 该应用涉及到的知识有: 1.如何实现画图功能 2.如何把像素点变为透明色 3.如何监听手机对屏幕的操作 主要有触击,滑动,离开三种情况 注意: 1.一定要注意在设置像素点的时候,范围不能超过当前控件的范围 2.设置ImageView最好设置

[cocos2d-js]cc.RenderTexture几种用法(数字图片、刮刮乐效果)

[转]http://blog.csdn.net/realcrazysun1/article/details/42393629 本文基于cocos2d-js 3.0版本引擎开发 RenderTexture用法1:数字图片 通过这张图片实现任意数字 //数字图片精灵 var PictureNumber = cc.Sprite.extend({ m_Number:null, m_NumberTexture:null, ctor:function(){ this._super(); }, buildNu

简易刮刮乐源码

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>demo</title> <script src="

H5 Canvas刮刮乐

玩游戏的人 很多时候都会遇到翻牌子  开宝箱. 总有人傻傻的在哪里还纠结很久到底点哪一个! 纠结  指不定翻哪一个会多一点,你明明看到那个卡片的奖项多 . 那我就告诉你好了  其实很多时候在你点开那个页面的时候你的翻牌结果已经随着你点开而请求到了. 接下来 就是一些动画效果 然后告诉你的中奖结果是什么. 其实就很像你看的那种街头,赌碗 一个样子. 为什么 你的大号 总是什么奖都抽不到  小号总是能够抽到一些东西. 其实就是游戏策划对用户的一些粘度数据的分析   还有就是对你用户的衰减做的一些统计