說到刮刮樂這個功能,我們最先想到的是上下兩張(長方形)重疊,之後對上面這張進行操作。
我的想法是:通過手勢,讓手指劃過的地方變成透明的,底部就會顯示了。
那如何讓變為透明呢?這就要對的畫素進行處理了。
對於每乙個元素,官方文件說都是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++) //高之後我們在手勢觸控後,我們就要處理畫素了}
如圖所示:假設我們length=1(指的觸控後的大小吧)
如果我們選中的是紅色那個位置,我就要將包括紅色畫素邊上的距離為1的畫素組成的正方形(綠色位置)變為透明
我們可以獲取到綠色範圍的開始結束行和列。
之後只要改變那個畫素的顏色就行了。
originalwb.pixels[(i * ioriginalwidth) + j] = 0;//最後賦值給獲取到的周邊某個畫素的下標為(i * l) + j
ps:但是效果不是非常的好,由於使用的是正方形(可惜writeablebitmap沒有wpf下的一些方法)
如果有更好的方法,希望能告訴我!
刮刮樂canvas實現
class scratch config this.movenum 0 this.clearrange clearrange 2 this.canvasid canvasid this.radius radius 25 this.canvas this.canvasid this.ifend fal...
canvas 實現刮刮樂
在解決問題前,我們先來了解一下 canvas 標籤 canvas 是 html5 出現的新標籤,像所有的 dom 物件一樣它有自己本身的屬性 方法和事件,其中就有繪圖的方法,js 能夠呼叫它來進行繪圖。context是乙個封裝了很多繪圖功能的物件,獲取這個物件的方法是 var canvas docu...
刮刮樂實現android中刮牆效果
最近公司有個新需求,讓實現刮牆效果,說白了,就是刮刮樂,只是我們專案裡面涉及的比較深,不是簡單的新增乙個圖層,它包括底圖,中間層,以及上面的刮牆圖層,在網上找了好久,都木有合適的demo,後來拿來乙個刮刮樂的例子,自己修改了一下。感謝不相識的朋友,放心哈,demo小女子已經修改過了 public c...