From eb5169e9644c4b912b557c84762a136603cbd22d Mon Sep 17 00:00:00 2001 From: changbowen Date: Sat, 13 Aug 2016 19:35:25 +0800 Subject: [PATCH] Added random option --- Ken Burns Slideshow.v12.suo | Bin 99840 -> 91136 bytes Localization/StringResources.xaml | 5 +- Localization/StringResources.zh-CN.xaml | 5 +- MainWindow.xaml.vb | 347 ++++++++++++------------ OptWindow.xaml | 3 +- OptWindow.xaml.vb | 9 +- bin/Release/Ken Burns Slideshow.exe | Bin 176128 -> 177152 bytes 7 files changed, 183 insertions(+), 186 deletions(-) diff --git a/Ken Burns Slideshow.v12.suo b/Ken Burns Slideshow.v12.suo index e37346220787ccb7162e6e5a3beb6b5a1198b109..4cbe0d5abe485da06ca94b4a87bcaa1b7805d308 100644 GIT binary patch delta 5060 zcmdT|4OG-s7N7ffW}K-RW{?5KVbB2;(S`y13Xt?Kkf5e8qNRpuk|j!NGJ`ICFuJx| z8%N=P)$yZJL9y2IgV~(&D-cs`+mf=5$8B}(c($`!`LPE~wo~lA!~AjZ*q&{-?X>Tl zANRfc?tAaP`}O{Vr%LT&>Pq0UL%uOBA=dnoRAKSM5L(cdCw%zaC z3pGniC7pdn741+>SVLG#;Fw!SR3cz-ypiYzf;TwcM07J@3t=naCBn-DUb~Ixb^@-B zvg`K*nR|)u!y{4Au`F^s9A-(}ugmqN>5ZUady-@)I)@CbbA6b1%Ste6q}p4b$l~wx0;9p8BNwAV{CAe9nV7Ou?`Fvl|$N2 zNFq20$%GU_DmE!8qpW6ACXMbPj3JCAhy*FtZVEjspLl_7#aLVS1V_Crgs#}CTC*S} z9@p`HBBA>xZHZRU|2oKF?i$MBxg1T%Z&qy`+OP)6$clOw-M!_ zswJ?A>Iux}h8v@7s;&To=+2s@IZ{E6j%ya*H6TDSgsy^oJ@ANc-_30+$j4?O68Y;=*R z=hOWjvcK?U^>hV4NJ9E|wH86ja=~nLXBBGrS(O(;5w>Sl!Yp)W7i#n&6RMds&|t^# zC*du0kEn!2*iL`nMEA%k`as>69}4!l>HtYAu_I|Bn+6Kd?Vx+;h?y9&C$>2}Fa_Po z6k!xullcS!H@vtc-Itzs5+w24a7Z})#K^ewz1Ae)w^uUq`Uh?iH|~OtH-vyZt!Ujg z2%mb>V7!{mm6P7lWySN$92E=jbV7=}tpbgsEm+*%ADhlh!tEzwvE+QTv9R)~Ler?| zesz7r>JK%y8Zi7^Urf0$9j$D?(?6yLh4 z(%!_v51(=P9P2)WI??hrtuQ>`D2A^f)L~{TU=%2anFByW&iSre_D6C^_<%0W z>F?FIIdey1)uCqGe1u(Uz)eSDr8AA_Jn=Yw)f$1~$BjIU+nSA*#x&)l8AVHQ?8i;s zhlhX_t?dI*%xFZhT|{y8a^sFoLq0n?GvHY%)lSOH8BffUbgwvYs4b2t-rN4Y7{i(+k?Abstr^IQko$nS{<5BM6-3j$_c93#JZz6&QG z1q?qi2#1c23ha$54~z`_;2_1oest#_9=J5o|NB=fOY%pK?uE{T3c zx=CC)Arks5gSJ!2-_<pO%$wm+`-wQ z&E-FN^auEBmmTq?Gi_|mO@Rq4Fp&i~;bnnI-ZL>^@2S8Lr62~6`?SY#hi>lnpC0Gu z;{EHHb`1EB@Le{mq)3p-o-%rlqG zKF8SFRX;(uN&%s+x0Q-sQ1h*KRjYzm_wEk^lXsB;*8hMj zHVWR~*x+|q@J$#tUNQO?njirhE;Yda=;r<#i(w-vT?tBWR(~o9i@$l75BGbPK}v+r Lc1h|wdGbF22P`L$ delta 8485 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

8G~sk-)OFdj6>opX@>f;oV93wi7$;pSaK7#n zB&fkbB81C&Ux za`|bdXNhyT5 z$)6knb>ADmZnu=r%JsvFE2-!_Iz6&5!+o5lr5OyyoNY(khc72&A!u(*rkqB={>CZp zP{mmvh<^=*5R~_5!H<)I)E*lpa2*5TWZz|Y?aDozRA;e=gwh$7Qrp~AZ)xD9*?o%Q z<1fq#_I!(viZt|cDie7Nng`=i|4Ilvh~|uZ`^!#rn(ju;86%oraqgW2I`#HML6}!i zSva4is1-Ya>Ivsceks|w`Z|Elc% zgB*|Voq*22MB&NLDU|&&$Z`MYUG#oA$a}xsDU*Gqz{jsofh~CCx*3A;FW3K}a2a|0 zgb92ysONDtpDN&+HNKMlydpdQ-cf=DOu$z#p!XrT!}0Dn$uhAu9~O&m%>b?V+dP=W zn5ysdRWQ|0>{7%1c;Y|=-B_)4&|1KL^A8|6KE62xu>VS`qxtd>;D*7JlPPc&qz^Ef zUBK!CGx&~6+EQJ{F#OZS*jsKZ9G!y(aM<2(f@=$6_efq}o(#?_XfyH$As2Bd9-=WJ zB39bFyu+mn68APerGn#>Jc}pPP(F^A51CS>yOlAXep`1dcR1i*M*I$GK-T?{>{K8u z1w43Qy4daq9phT+iy88tWuTQmW}qZ|_nT62h7u;iA~8+{k$%gR6=H>w+<&q7wm(Ee zC3i>TGv6l6)m75xh_%X6w>f3O#`31h+Sam=Go8_UaCPZDs6@Oi;*Kk$G75@jKY@up=M(uppCvn<9hRZTtp0N{^%bT0mD|g@%FQnmJko6|gH=Dbiq7(SpiFcbk``sW^ZLLf0cEH|E^#!Auna(r4_6EVb)AHQ7;oYZY9#rqdsP=d`XN}LL{8@c%FI)_+^(-{}1vmQ?8T%4S)J<{(|PJ|jJx2qdyjF!W)#NZ;& z>T;_AMn@U2-n0unbo^J0`Yc!cXN=m(RXKL{5BD z4emYtjz``hm%LY9nkmpgUjF!+Df2LSf0W4w5);}F{r|3W?+1C6xI6%si{~`33YLno z0Wez$9BHb=p+L}O-%lt#fg_dQ;fhV4Du;rfIKy{%)BX$`CcIRNd@uv3n z^Tu@bPvMQ}?eFq!u-~}{vu}Bc*vH)c>`vZ(b}LuEf?dFcu3{JPlCb5*m74A7rD9u* zOU0J)Qn4~!JOV!O>7Pi~uZ5_MHWH-&&;HqzAi^XFx!r`fj}qQ>^8fd_A*FtAM^h*s an*}~48=KF)E;?sGVBfVeFod|3AM@YNUxir! diff --git a/Localization/StringResources.xaml b/Localization/StringResources.xaml index 353f4b4..8458c5a 100644 --- a/Localization/StringResources.xaml +++ b/Localization/StringResources.xaml @@ -80,6 +80,7 @@ Register menu Unregister menu Register right-click menu entry for folders in Windows Explorer. - Randomize order - This will ignore custom ordering in Edit Slides for next runs. + Random image order + Random music order + This will ignore custom ordering in Edit Slides for next runs. Restart program to revert back to default order. diff --git a/Localization/StringResources.zh-CN.xaml b/Localization/StringResources.zh-CN.xaml index deadb99..504fb3c 100644 --- a/Localization/StringResources.zh-CN.xaml +++ b/Localization/StringResources.zh-CN.xaml @@ -80,6 +80,7 @@ 注册文件夹关联 解除文件夹关联 在Windows资源管理器的文件夹右键菜单中添加播放选项。 - 随机顺序 - 选择此项会忽视编辑幻灯片中的自定义顺序。下次启动生效。 + 随机图片顺序 + 随机音乐顺序 + 选择此项会忽视编辑幻灯片中的自定义顺序。下次启动恢复默认顺序。 diff --git a/MainWindow.xaml.vb b/MainWindow.xaml.vb index 84d36c7..3cefbcf 100644 --- a/MainWindow.xaml.vb +++ b/MainWindow.xaml.vb @@ -5,9 +5,9 @@ Class MainWindow Public Shared PicFormats() As String = {".jpg", ".jpeg", ".bmp", ".png", ".tif", ".tiff"} Private BGMFormats() As String = {".mp3", ".wma", ".m4a", ".aac", ".wav", "asf"} Public Shared config_path As String = "config.xml" - Private ListOfMusic As New List(Of String) + Private Shared ListOfMusic As New List(Of String) Private ran As New Random - Private player As New System.Windows.Media.MediaPlayer + Private Shared player As New System.Windows.Media.MediaPlayer Private currentaudio As Integer = 0 Private playing As Boolean = False Private audiofading As Boolean = False @@ -43,7 +43,8 @@ Class MainWindow Private Declare Function SetThreadExecutionState Lib "kernel32" (ByVal esFlags As EXECUTION_STATE) As EXECUTION_STATE Dim ExecState_Set As Boolean Public Shared reallyclose As Boolean = False - Public Shared randomize As Boolean = False + Public Shared randomizeV As Boolean = False + Public Shared randomizeA As Boolean = False Private Enum EXECUTION_STATE As Integer '''

''' Informs the system that the state being set should remain in effect until the next call that uses ES_CONTINUOUS and one of the other state flags is cleared. @@ -137,13 +138,6 @@ Class MainWindow Exit Sub End If - AddHandler player.MediaEnded, Sub() - currentaudio += 1 - If currentaudio = ListOfMusic.Count Then currentaudio = 0 - player.Open(New Uri(ListOfMusic(currentaudio))) - player.Play() - End Sub - 'loading settings Do If config.Elements("Framerate").Any Then framerate = config.Element("Framerate").Value @@ -152,21 +146,11 @@ Class MainWindow duration = tmp If tmp >= 5 Then picmove_sec = tmp End If - If config.Elements("VerticalLock").Any AndAlso config.Element("VerticalLock").Value.ToLower = "false" Then - verticalLock = False - End If - If config.Elements("ResolutionLock").Any AndAlso config.Element("ResolutionLock").Value.ToLower = "false" Then - resolutionLock = False - End If - If config.Elements("VerticalOptimize").Any AndAlso config.Element("VerticalOptimize").Value.ToLower = "false" Then - verticalOptimize = False - End If - If config.Elements("HorizontalOptimize").Any AndAlso config.Element("HorizontalOptimize").Value.ToLower = "false" Then - horizontalOptimize = False - End If - If config.Elements("Fadeout").Any AndAlso config.Element("Fadeout").Value.ToLower = "false" Then - fadeout = False - End If + If config.Elements("VerticalLock").Any AndAlso config.Element("VerticalLock").Value.ToLower = "false" Then verticalLock = False + If config.Elements("ResolutionLock").Any AndAlso config.Element("ResolutionLock").Value.ToLower = "false" Then resolutionLock = False + If config.Elements("VerticalOptimize").Any AndAlso config.Element("VerticalOptimize").Value.ToLower = "false" Then verticalOptimize = False + If config.Elements("HorizontalOptimize").Any AndAlso config.Element("HorizontalOptimize").Value.ToLower = "false" Then horizontalOptimize = False + If config.Elements("Fadeout").Any AndAlso config.Element("Fadeout").Value.ToLower = "false" Then fadeout = False If config.Elements("VerticalOptimizeRatio").Any Then verticalOptimizeR = config.Element("VerticalOptimizeRatio").Value If config.Elements("HorizontalOptimizeRatio").Any Then horizontalOptimizeR = config.Element("HorizontalOptimizeRatio").Value If config.Elements("Transit").Any Then transit = config.Element("Transit").Value @@ -177,9 +161,8 @@ Class MainWindow loadmode_next = config.Elements("LoadMode").Value loadmode = loadmode_next End If - If config.Elements("Randomize").Any AndAlso config.Element("Randomize").Value.ToLower = "true" Then - randomize = True - End If + If config.Elements("RandomizeV").Any AndAlso config.Element("RandomizeV").Value.ToLower = "true" Then randomizeV = True + If config.Elements("RandomizeA").Any AndAlso config.Element("RandomizeA").Value.ToLower = "true" Then randomizeA = True 'loading music list folders_music.Clear() @@ -243,17 +226,18 @@ Class MainWindow config.Save(config_path) End Using - If randomize Then - Using ListOfPic_Copy = ListOfPic.Clone - Dim ran As New Random - Do While ListOfPic.Rows.Count > 0 - Dim i = ran.Next(ListOfPic.Rows.Count) 'selecting a random row index - ListOfPic_Copy.ImportRow(ListOfPic.Rows(i)) - ListOfPic.Rows.RemoveAt(i) - Loop - ListOfPic = ListOfPic_Copy.Copy - End Using - End If + If randomizeV Then Shuffle(ListOfPic) + If randomizeA Then Shuffle(ListOfMusic) + + AddHandler player.MediaEnded, Sub() + currentaudio += 1 + If currentaudio = ListOfMusic.Count Then + currentaudio = 0 + If randomizeA Then Shuffle(ListOfMusic) + End If + player.Open(New Uri(ListOfMusic(currentaudio))) + player.Play() + End Sub tb_date0.FontSize = h / 12 tb_date1.FontSize = h / 12 @@ -408,6 +392,29 @@ Class MainWindow ExecState_Set = True End Sub + Private Sub Shuffle(ByRef dt As System.Data.DataTable) + Using tmpdt = dt.Clone + Dim r As New Random + Do While dt.Rows.Count > 0 + Dim i = r.Next(dt.Rows.Count) 'selecting a random row index + tmpdt.ImportRow(dt.Rows(i)) + dt.Rows.RemoveAt(i) + Loop + dt = tmpdt.Copy + End Using + End Sub + + Private Sub Shuffle(ByRef lst As List(Of String)) + Dim tmplst = New List(Of String) + Dim r As New Random + Do While lst.Count > 0 + Dim i = r.Next(lst.Count) + tmplst.Add(lst(i)) + lst.RemoveAt(i) + Loop + lst = New List(Of String)(tmplst) + End Sub + Private Sub FillPic(PicDir_ele As XElement) For Each ele In PicDir_ele.Elements If My.Computer.FileSystem.DirectoryExists(ele.Value) Then @@ -646,53 +653,49 @@ Class MainWindow Dim ease_in, ease_out, ease_inout As Animation.CubicEase Dim anim_fadein, anim_fadeout As Animation.DoubleAnimation - Dispatcher.Invoke( - Sub() - If ListOfMusic.Count > 0 Then - player.Open(New Uri(ListOfMusic(0))) - player.Play() - playing = True - End If - ease_in = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseIn} - ease_out = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseOut} - ease_inout = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseInOut} - anim_fadein = New Animation.DoubleAnimation(0, 1, New Duration(New TimeSpan(0, 0, 1))) - anim_fadeout = New Animation.DoubleAnimation(0, New Duration(New TimeSpan(0, 0, 1))) - Panel.SetZIndex(tb_date0, 2) - Panel.SetZIndex(tb_date1, 3) - End Sub) + Dispatcher.Invoke(Sub() + If ListOfMusic.Count > 0 Then + player.Open(New Uri(ListOfMusic(0))) + player.Play() + playing = True + End If + ease_in = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseIn} + ease_out = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseOut} + ease_inout = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseInOut} + anim_fadein = New Animation.DoubleAnimation(0, 1, New Duration(New TimeSpan(0, 0, 1))) + anim_fadeout = New Animation.DoubleAnimation(0, New Duration(New TimeSpan(0, 0, 1))) + Panel.SetZIndex(tb_date0, 2) + Panel.SetZIndex(tb_date1, 3) + End Sub) Dim tgt_img As Image Dim date_chkpoint As Integer = 1 Dim text_chkpoint As Integer = 1 Do - If position = date_chkpoint Then - Task.Run(Sub() dateThrd(position, date_chkpoint)) - End If - If position = text_chkpoint Then - Task.Run(Sub() textThrd(position, text_chkpoint)) - End If + If position = date_chkpoint Then Task.Run(Sub() dateThrd(position, date_chkpoint)) + If position = text_chkpoint Then Task.Run(Sub() textThrd(position, text_chkpoint)) If ListOfPic.Rows(position - 1)("CB_Title") Then Anim_TitleSlide(tgt_img) Else - Dispatcher.Invoke( - Sub() - SwitchTarget(tgt_img) - Anim_KBE(tgt_img, ease_in, ease_out, ease_inout, anim_fadein) - End Sub) + Dispatcher.Invoke(Sub() + SwitchTarget(tgt_img) + Anim_KBE(tgt_img, ease_in, ease_out, ease_inout, anim_fadein) + End Sub) Thread.Sleep(1000) End If Dim tmpposition = position - Dim loadtask = Task.Run( - Sub() - Thread.CurrentThread.Priority = ThreadPriority.Lowest - If position = ListOfPic.Rows.Count Then - position = 0 - End If - LoadNextImg() - End Sub) + Dim loadtask = Task.Run(Sub() + Thread.CurrentThread.Priority = ThreadPriority.Lowest + If position = ListOfPic.Rows.Count Then + position = 0 + date_chkpoint = 1 + text_chkpoint = 1 + If randomizeV Then Shuffle(ListOfPic) + End If + LoadNextImg() + End Sub) If Not ListOfPic.Rows(tmpposition - 1)("CB_Title") Then Thread.Sleep((picmove_sec - 2) * 1000) @@ -720,54 +723,50 @@ Class MainWindow Loop Dim ease_in, ease_out, ease_inout As Animation.CubicEase Dim anim_fadein, anim_fadeout As Animation.DoubleAnimation - Dispatcher.Invoke( - Sub() - If ListOfMusic.Count > 0 Then - player.Open(New Uri(ListOfMusic(0))) - player.Play() - playing = True - End If - ease_in = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseIn} - ease_out = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseOut} - ease_inout = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseInOut} - anim_fadein = New Animation.DoubleAnimation(0, 1, New Duration(New TimeSpan(0, 0, 1))) - anim_fadeout = New Animation.DoubleAnimation(0, New Duration(New TimeSpan(0, 0, 1))) - Panel.SetZIndex(tb_date0, 2) - Panel.SetZIndex(tb_date1, 3) - End Sub) + Dispatcher.Invoke(Sub() + If ListOfMusic.Count > 0 Then + player.Open(New Uri(ListOfMusic(0))) + player.Play() + playing = True + End If + ease_in = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseIn} + ease_out = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseOut} + ease_inout = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseInOut} + anim_fadein = New Animation.DoubleAnimation(0, 1, New Duration(New TimeSpan(0, 0, 1))) + anim_fadeout = New Animation.DoubleAnimation(0, New Duration(New TimeSpan(0, 0, 1))) + Panel.SetZIndex(tb_date0, 2) + Panel.SetZIndex(tb_date1, 3) + End Sub) Dim tgt_img As Image Dim date_chkpoint As Integer = 1 Dim text_chkpoint As Integer = 1 Dim last_zoom = False Do - If position = date_chkpoint Then - Task.Run(Sub() dateThrd(position, date_chkpoint)) - End If - If position = text_chkpoint Then - Task.Run(Sub() textThrd(position, text_chkpoint)) - End If + If position = date_chkpoint Then Task.Run(Sub() dateThrd(position, date_chkpoint)) + If position = text_chkpoint Then Task.Run(Sub() textThrd(position, text_chkpoint)) If ListOfPic.Rows(position - 1)("CB_Title") Then Anim_TitleSlide(tgt_img) Else - Dispatcher.Invoke( - Sub() - SwitchTarget(tgt_img) - Anim_Breath(tgt_img, ease_in, ease_out, ease_inout, anim_fadein, last_zoom) - End Sub) + Dispatcher.Invoke(Sub() + SwitchTarget(tgt_img) + Anim_Breath(tgt_img, ease_in, ease_out, ease_inout, anim_fadein, last_zoom) + End Sub) Thread.Sleep(1000) End If Dim tmpposition = position - Dim loadtask = Task.Run( - Sub() - Thread.CurrentThread.Priority = ThreadPriority.Lowest - If position = ListOfPic.Rows.Count Then - position = 0 - End If - LoadNextImg() - End Sub) + Dim loadtask = Task.Run(Sub() + Thread.CurrentThread.Priority = ThreadPriority.Lowest + If position = ListOfPic.Rows.Count Then + position = 0 + date_chkpoint = 1 + text_chkpoint = 1 + If randomizeV Then Shuffle(ListOfPic) + End If + LoadNextImg() + End Sub) If Not ListOfPic.Rows(tmpposition - 1)("CB_Title") Then Thread.Sleep((picmove_sec - 2.5) * 1000) @@ -798,52 +797,48 @@ Class MainWindow Dim ease_in, ease_out, ease_inout As Animation.CubicEase Dim anim_fadein, anim_fadeout As Animation.DoubleAnimation Dim direction As Boolean = ran.Next(2) - Dispatcher.Invoke( - Sub() - If ListOfMusic.Count > 0 Then - player.Open(New Uri(ListOfMusic(0))) - player.Play() - playing = True - End If - ease_in = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseIn} - ease_out = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseOut} - ease_inout = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseInOut} - anim_fadein = New Animation.DoubleAnimation(0, 1, New Duration(New TimeSpan(0, 0, 2))) - anim_fadeout = New Animation.DoubleAnimation(0, New Duration(New TimeSpan(0, 0, 1))) - Panel.SetZIndex(tb_date0, 2) - Panel.SetZIndex(tb_date1, 3) - End Sub) + Dispatcher.Invoke(Sub() + If ListOfMusic.Count > 0 Then + player.Open(New Uri(ListOfMusic(0))) + player.Play() + playing = True + End If + ease_in = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseIn} + ease_out = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseOut} + ease_inout = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseInOut} + anim_fadein = New Animation.DoubleAnimation(0, 1, New Duration(New TimeSpan(0, 0, 2))) + anim_fadeout = New Animation.DoubleAnimation(0, New Duration(New TimeSpan(0, 0, 1))) + Panel.SetZIndex(tb_date0, 2) + Panel.SetZIndex(tb_date1, 3) + End Sub) Dim tgt_img As Image Dim date_chkpoint As Integer = 1 Dim text_chkpoint As Integer = 1 Do - If position = date_chkpoint Then - Task.Run(Sub() dateThrd(position, date_chkpoint)) - End If - If position = text_chkpoint Then - Task.Run(Sub() textThrd(position, text_chkpoint)) - End If + If position = date_chkpoint Then Task.Run(Sub() dateThrd(position, date_chkpoint)) + If position = text_chkpoint Then Task.Run(Sub() textThrd(position, text_chkpoint)) If ListOfPic.Rows(position - 1)("CB_Title") Then Anim_TitleSlide(tgt_img) Else - Dispatcher.Invoke( - Sub() - SwitchTarget(tgt_img) - Anim_Throw(tgt_img, ease_in, ease_out, ease_inout, anim_fadein, direction) - End Sub) + Dispatcher.Invoke(Sub() + SwitchTarget(tgt_img) + Anim_Throw(tgt_img, ease_in, ease_out, ease_inout, anim_fadein, direction) + End Sub) End If Dim tmpposition = position - Dim loadtask = Task.Run( - Sub() - Thread.CurrentThread.Priority = ThreadPriority.Lowest - If position = ListOfPic.Rows.Count Then - position = 0 - End If - LoadNextImg() - End Sub) + Dim loadtask = Task.Run(Sub() + Thread.CurrentThread.Priority = ThreadPriority.Lowest + If position = ListOfPic.Rows.Count Then + position = 0 + date_chkpoint = 1 + text_chkpoint = 1 + If randomizeV Then Shuffle(ListOfPic) + End If + LoadNextImg() + End Sub) If Not ListOfPic.Rows(tmpposition - 1)("CB_Title") Then Thread.Sleep((picmove_sec - 1) * 1000) @@ -876,41 +871,35 @@ Class MainWindow Dim text_chkpoint As Integer = 1 Dim last_zoom As Boolean = False Dim direction As Boolean = ran.Next(2) - Dispatcher.Invoke( - Sub() - If ListOfMusic.Count > 0 Then - player.Open(New Uri(ListOfMusic(0))) - player.Play() - playing = True - End If - ease_in = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseIn} - ease_out = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseOut} - ease_inout = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseInOut} - anim_fadein1 = New Animation.DoubleAnimation(0, 1, New Duration(New TimeSpan(0, 0, 1))) - anim_fadein2 = New Animation.DoubleAnimation(0, 1, New Duration(New TimeSpan(0, 0, 2))) - anim_fadeout = New Animation.DoubleAnimation(0, New Duration(New TimeSpan(0, 0, 1))) - Panel.SetZIndex(tb_date0, 2) - Panel.SetZIndex(tb_date1, 3) - End Sub) + Dispatcher.Invoke(Sub() + If ListOfMusic.Count > 0 Then + player.Open(New Uri(ListOfMusic(0))) + player.Play() + playing = True + End If + ease_in = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseIn} + ease_out = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseOut} + ease_inout = New Animation.CubicEase With {.EasingMode = Animation.EasingMode.EaseInOut} + anim_fadein1 = New Animation.DoubleAnimation(0, 1, New Duration(New TimeSpan(0, 0, 1))) + anim_fadein2 = New Animation.DoubleAnimation(0, 1, New Duration(New TimeSpan(0, 0, 2))) + anim_fadeout = New Animation.DoubleAnimation(0, New Duration(New TimeSpan(0, 0, 1))) + Panel.SetZIndex(tb_date0, 2) + Panel.SetZIndex(tb_date1, 3) + End Sub) Do - If position = date_chkpoint Then - Task.Run(Sub() dateThrd(position, date_chkpoint)) - End If - If position = text_chkpoint Then - Task.Run(Sub() textThrd(position, text_chkpoint)) - End If + If position = date_chkpoint Then Task.Run(Sub() dateThrd(position, date_chkpoint)) + If position = text_chkpoint Then Task.Run(Sub() textThrd(position, text_chkpoint)) If ListOfPic.Rows(position - 1)("CB_Title") Then Anim_TitleSlide(tgt_img) Else - Dispatcher.Invoke( - Sub() - tgt_img = New Image - tgt_img.Name = "tgt" - RenderOptions.SetBitmapScalingMode(tgt_img, scalemode) - mainGrid.Children.Add(tgt_img) - End Sub) + Dispatcher.Invoke(Sub() + tgt_img = New Image + tgt_img.Name = "tgt" + RenderOptions.SetBitmapScalingMode(tgt_img, scalemode) + mainGrid.Children.Add(tgt_img) + End Sub) Select Case ran.Next(3) Case 0 Dispatcher.Invoke(Sub() Anim_Breath(tgt_img, ease_in, ease_out, ease_inout, anim_fadein1, last_zoom)) @@ -949,14 +938,16 @@ Class MainWindow End Select End If - Dim loadtask = Task.Run( - Sub() - Thread.CurrentThread.Priority = ThreadPriority.Lowest - If position = ListOfPic.Rows.Count Then - position = 0 - End If - LoadNextImg() - End Sub) + Dim loadtask = Task.Run(Sub() + Thread.CurrentThread.Priority = ThreadPriority.Lowest + If position = ListOfPic.Rows.Count Then + position = 0 + date_chkpoint = 1 + text_chkpoint = 1 + If randomizeV Then Shuffle(ListOfPic) + End If + LoadNextImg() + End Sub) loadtask.Wait() diff --git a/OptWindow.xaml b/OptWindow.xaml index ec04b24..54ce7e9 100644 --- a/OptWindow.xaml +++ b/OptWindow.xaml @@ -90,7 +90,8 @@ - + + diff --git a/OptWindow.xaml.vb b/OptWindow.xaml.vb index e6808a0..06688a3 100644 --- a/OptWindow.xaml.vb +++ b/OptWindow.xaml.vb @@ -23,7 +23,8 @@ TB_LoadQuality.Text = MainWindow.loadquality CbB_ScaleMode.SelectedItem = New KeyValuePair(Of Integer, String)(MainWindow.scalemode, MainWindow.ScaleMode_Dic(MainWindow.scalemode)) CbB_BlurMode.SelectedIndex = MainWindow.blurmode - CB_Randomize.IsChecked = MainWindow.randomize + CB_RandomizeV.IsChecked = MainWindow.randomizeV + CB_RandomizeA.IsChecked = MainWindow.randomizeA If Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Classes\Directory\shell\OpenWithKenBurns\command") Is Nothing Then Btn_FolderAsso.Content = Application.Current.Resources("register menu") @@ -121,7 +122,8 @@ MainWindow.loadmode_next = CbB_LoadMode.SelectedIndex MainWindow.scalemode = CbB_ScaleMode.SelectedItem.Key MainWindow.blurmode = CbB_BlurMode.SelectedIndex - MainWindow.randomize = CB_Randomize.IsChecked + MainWindow.randomizeV = CB_RandomizeV.IsChecked + MainWindow.randomizeA = CB_RandomizeA.IsChecked 'saving to file Dim config As New XElement("CfgRoot") @@ -148,7 +150,8 @@ config.Add(New XElement("ScaleMode", CbB_ScaleMode.SelectedItem.Key)) config.Add(New XElement("BlurMode", CbB_BlurMode.SelectedIndex)) config.Add(New XElement("LoadMode", CbB_LoadMode.SelectedIndex)) - config.Add(New XElement("Randomize", CB_Randomize.IsChecked.Value)) + config.Add(New XElement("RandomizeV", CB_RandomizeV.IsChecked.Value)) + config.Add(New XElement("RandomizeA", CB_RandomizeA.IsChecked.Value)) 'copy slides data if exists If My.Computer.FileSystem.FileExists(MainWindow.config_path) Then diff --git a/bin/Release/Ken Burns Slideshow.exe b/bin/Release/Ken Burns Slideshow.exe index 05b33d671b2bc2bb28e66970209c518bd79d9b52..0875f81540d67a8f8ef9a4ba7158719889fe5844 100644 GIT binary patch delta 56750 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�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

3lcSpOcM zB*Gu^v1-0|MeajBT?8-kplG-V&iB5}%f-Xz`FwHH5k6ZSIM1&yZnQQfyU=heqmkR< z;C%i(|I=sY$mVIVHMXrgW|?;X=VKbs-^rLI6H#-s*5szRyjPg5>a}es4lC^GHDi`t zcUwWFX^5gzyiy#0mp7KKPDWU3Tb*4%T>>07B@^Pg1ALsg_HX=K3)`2QJ)1hs$?ffP z*$6$afUcfV7^p4`)QAfQ`Sl`oh?kEW$y{B?sd}Dx=@2YSyuq)#ai}30L-F3Qxot?C zyqhs29afkv4RuAhvkw6WbyrzEg@@R({Znq@8!YZgz&1~`fdmMA|k?Pdcl1@e} zsC^Wo<-J_mxPTLRsOj|@_t#C(ic*1zz9%L&H`!e#k;NLmQ+PZ2pgY`o~@wNB)RPplrXyhf)j$~Z? z{Ukj3)Kk30*r){uO0=P7^3UOG~Yhp;k zWg1&1iYg#in6WN2G?rdZ9J>Pjz~HyQXiX@dG{X=ZZZRgla)8egZy(?*%M0`#7CmAF z)wtc_055Y?Z>$k_{*`x#e|wJyO5^shN=4dU`!0;iLVcb8M7;Pq-!OW_Bxcr#SN_Ip z$ImPCn;`2m2nt_H2fHVaUph?e@d?{;5N5b?0S!n4c>)G&q#rD3tj2FYH{T-FI8&hh>LIV zMHRDVvARge_6g|Qjyno6&YCS29)^#9e~^2j4Qr_Uhc6)Fr3-kayz>J{^2rZ)V9Ky- z81cnxtQh$U>7wAel06aexubmT1k#KAM8sAPifD;JfY>(j$ZsCwt5WQPA7isi7S zHjKrra9m|Hny#=qLuM1SwG-0{nxe>g1^mceR*YsE`B_U_G(WRhNi#9b*P^imoRf54 z^8MPx1h4&RxT)x69E4?i^2E@HLz!+9$ zb=uoeD{w>?r#%mCQ0o8tDW!%RC983G8NuB*Q5+qH*mhK;&eGTNc`noq+&21p+~}NY{~d2OmL5k!Pk!nGvP} z6-~`cQ-pUm>OQX*?;l8?)OCOQtUrCusVWL?+oe5jqTQ|(Rqzt(Mn&lX7kHH5=2w8M z6djSOfq;?D=)pix4}u6PNT~&i7&q{o1KE5T9Evj|g9j}j&Mm8leE}79sscgv$xMWJ zita*+Dt&Y%FEuh#Xm2XRNBJPP3|HW>KZu;7da)TcaZ9 z;a9@6tL0Q^XFB80G^tFncdA83rYeA{&{t7aynoV|9SnF>C$`uHk~#dD6#;+d)_|_& zi?R!xs^+`DP>O%1wMqvX(x17l2p9SAaiOzyw1q5;KLVn#rj z?-@B%7o7p+3qlJj*UFysXEGX2!{E$;$doG6#3zEv?VkEXq`g7TvPB9B#nJJ~a&e$k znctOpg7kI0)YmVg3c7~JfjBf>S8P#wJkU)e^E4#y*M<$JHWh;m*Jv)(9-B$eyrb5OR&BIeq-psC znqKKBHL}$_1<#P3jrz!t^nXUS3f4~%RkkP7y*{oC8E6G_c(|@f7lPVJ85c}ab>jxo zbsdEx7HA8n+guQ(QC}?}X!4MO__Me9v+Ije@HhVK2D^Do>cngaXk_n%Jsa6(P4jvY zg|Ly`rb%_mW>Dw5NgJ|vQwkLEWunpa+*6{eMkAzX!X6{L!pPnlq)y_tf@PnO@;)sa zI8FMILe5>X*oR04fA%3+`g68Gd+p7OYNeBV@v)Qaus1u=?_RH`(#7*a+KKz8sy;}5 zzY#K;G-Cn2O~HV%0Gy5NqyFp;{3x{3%b8Z65c9?=sgwt<7v@0@aTLroPwHN#3`LWx z#VOJJ9txog$T?=X8}X9R-3%JF4^aVdu_+_F-_M-Vb7%M4>a{OW%A6SS$eY`7DN37u zx&+ZxBe4`&<4eeKph$*~SPR2q_5i^_8X)f>tq&O4!?Kk#{csW}?ieDVQ$ZaAm{<1P z1-o-DkrT~k;|5~| z!s$z?VN2FXLYjow$^f&LN`Wnm(WsiNj>hOYY-YBl<@d=A%*tB=?}J1ii-vE8?K@OV zHei9Bn(8#VH6yHfRV|O`QbGt#eozXN%4Nz`h=-E#8)0szq#g^6 zRvpl&e4pZtXu~vyEZfpibNIb|=wqE4IJ=K#5insQFuq_K^)&P__f=#ys>*#s4xL;I zp7d1#mBYRYR>6xrG6|gi&`5=>aQZYnAqnQB9>8dDPd}a4Pw7?nxn^Kp0CQmmm)%b> zZ<5V|w zF7?@+@Y!(HQnAoYd3NAP1?3gaQ)=|0YUF>Uj?{q{?D856KSNxG8PF^)d%zCT1SNeh z&5}^GLS1{Smy6w{O8GPz5E7f(J8{lx24lsz+!PPvq-J}lr>pv^@C@3Z-22*>U3a3gyzYD@T5`miAM! z049Bb#R`K|Y;|j6Yii@o1Ky*D7WY-3zV3ma{^5IlGb)wW?pJ2a`RU${_xL{mDRKQc