原文:
win10 uwp 螢火蟲效果
本文在nukepayload2指導下,使用他的思想用c#寫出來。
下面先讓大家看一下效果圖再告訴大家如何做
介面只需要很簡單兩句**,第一句**是命名引用,第二句**就是新增 win2d
這裡為何使用xmlns:canvas="using:microsoft.graphics.canvas.ui.xaml"
x:name="canvas"
clearcolor="black"
update="canvas_onupdate"
draw="canvas_draw">
canvas:canvasanimatedcontrol>
canvasanimatedcontrol
而不是使用canvascontrol
?因為需要進行更新,canvasanimatedcontrol
提供了一些事件,這些事件可以用來做動畫。
在canvas_onupdate
就寫更新所有螢火蟲的**,在canvas_draw
就寫畫出螢火蟲的**。
於是開始建立螢火蟲的**,在建立之前,需要乙個隨機的類,這個類用於控制螢火蟲的呼吸和移動,都是隨機的。
在指定的範圍之內,隨機取乙個點,這個點作為目的的點。於是當前的值就開始移動向目的的點,移動的過程存在速度。
從這裡可以知道,這個類需要下面這些屬性
其中public
double value
public
double to
public
double dalue
public
double ma
public
double mi
////// 加速度
///public
double po
dalue
就是速度,從 value 到 to 的速度,這個速度在隨時可以被修改。
下面是這個類全部**
下面就是主要的類class ran
public
double value
public
double to
public
double dalue
public
double ma
public
double mi
public
bool easingfunction
////// 加速度
///public
double po
public
void
time(timespan time)
else
}//減數
if (easingfunction && math.abs(value - to) < dalue*10
/*如果接近*/)
}int n = 1;
if (value > to)
value += n * dalue * time.totalseconds * 2;
if (n > 0 && value >= to)
if (n < 0 && value <= to)
}private
static random ran = new random();
}
fireflyparticle
包含了位置和顏色,不同透明度,當然不透明度可以做呼吸效果,於是這些值都需要做隨機移動
看到這,是不是覺得引數存在class fireflyparticle
;_y = new ran(point.y, bound.height, 0)
;_radius = new ran(ran.next(2, 5), 5, 2)
;bound = bound;
}public
fireflyparticle()
public
void
time(timespan time)
public point point
public rect bound
set}
public
double radius = 10;
public color centercolor = color.fromargb(255, 252, 203, 89);
public
double opcolor = 1;
private
static random ran = new random();
private ran _radius;
private ran _opcolor = new ran(1, 1, 0.001);
private ran _x;
private ran _y;
private rect _bound;
}
time
無法理解?這裡的使用 time 是為了在效能比較差的電腦得到效果和效能比較好的一樣,雖然中途有一些沒有顯示的,但是計算結果相同,不會出現效能差的電腦,動畫速度和效能好的電腦不一樣。
下面就是更新所有的值,建立屬性fireflyparticle
用於放所有的類,因為很簡單,我就不解釋。
把所有的值都進行變化,就是在做動畫,但是移動距離不能太長,移動的演算法在上面的隨機類寫的,演算法很簡單,也不是關鍵,於是在這裡就不說了。private listfireflyparticle = new list();
private
void
bpyaxxjwkqwknemobzpage_loaded(object sender, routedeventargs e)}}
private
void
canvas_onupdate(icanvasanimatedcontrol sender, canvasanimatedupdateeventargs args)
}
這裡的核心就是畫出來,如何在 win2d 畫出乙個點,把這個點高斯模糊。不知道大家知道 photoshop ,這裡用到了圖層,需要自己心中知道是什麼東西。現在的一般都是很多個合成,於是可以把乙個點作為乙個圖層,到時候把這些點合併就是上面給大家看到的圖。
如何在 win2d 使用圖層,主要的類是canvascommandlist
用它就可以做出圖層,最好使用drawimage
把他弄出來。
如何對圖層做模糊?在win2d有很多效果,先嘗試把點畫出來,效果圖:private
void
canvas_draw(icanvasanimatedcontrol sender, canvasanimateddraweventargs args)}}
需要知道所有的效果都是可以直接畫出來,我用的方法很簡單,就直接寫**
如何要把圖層畫出來,那麼修改class gloweffectgraph : idisposable
;blur.source = morphology;
}public gaussianblureffect blur = new gaussianblureffect();
public
void
dispose()
public
void
setup(icanvasimage canvas, double amount = 10)
}
canvas_draw
的**
這個效果我放在 商業遊戲 可以玩一下,**開源private
void
canvas_draw(icanvasanimatedcontrol sender, canvasanimateddraweventargs args)}}
}}
參見:使用win2d實現螢火蟲粒子效果 - nukepayload2 -
螢火蟲效果
螢火蟲 public.js function id id 求隨機數 function rand min,max 隨機的16進製制顏色 function getcolor return color function zero val 時間差 function diff start,end sport5...
win10 uwp 繫結密碼
win10 下,密碼框無法繫結到viewmodel,password是不可以繫結。我們可以自己使用簡單方法去繫結 我們之前在wpf 使用繫結密碼框,我寫了一篇,關於如何繫結,我提供乙個我自己試了可以的類。首先,我們新建乙個類,這個類是讓 passwordbox 可以繫結password。uwp讓 p...
win10 uwp 重啟軟體
在16299支援在軟體自己重啟,不需要讓使用者點選關閉然後啟動,雖然我還不知道這個有什麼用。本文告訴大家如何讓軟體關閉重新開啟 首先需要使用的版本是 16299 然後使用 requestrestartasync 方法就可以關閉軟體重新開啟。下面就是簡單的軟體 100 horizontalalignm...