close
上個禮拜五
有需求要做zoom in的功能
就是在撥放影片的時候要能放大
聽到這樣的需求
當然就是剉著等....

首先,要知道播放什麼格式的影片
如果是微軟不支援的格式,那就精彩了
如果不支援那可能就要依賴DShow或是MF了
如果是在MFC開發,其實只要同時render兩個影像
然後改變其中一個影像就可以了
只是說兩個影像的排版
如果沒有採用分割視窗的模式
那就要自己算比例跟位置了
在這種情形下
採用MFC開發或許是一種福氣
從倒到尾只要面對一種語言
以及兩種framework
而且這兩種也是可分開測試的

如果要轉到WPF就比較麻煩一點
不過可以接受跟Winform相接的話
那就只需要網路善心人士包好的DShow或MF的.NET版
即可使用,只是在WPF上面排版就容易得多了

但是如果是微軟支援的格式哩
只要用WPF從頭幹到底就行了
這是一個好消息,WPF提供的Brush實在是太好用了
所以可以在微笑中完成

只是說不管用哪一種方案都會遇到共同的問題
如何選擇放大的區域
我的方法其實有是抄襲別人的
但我也不知道對方是怎麼做的


弄一個框框出來拉,另一個畫面就只要把選取的畫面秀出來即可
這個選取的框框如果在MFC底下可能要拜託CTrackRect來幫幫忙
不然就是自己去畫畫了,比較不好做的就是還要變更滑鼠的游標
如果把MF跟WP透過WinformF結合來做
有可能會失敗
會有Z index的問題,其實我並沒有做
只是靠經驗推測
如果是藉由D3DImagae來結合也許就不會有問題了
這也是推測,因為還沒有完成這著版本

除去這些問題在WPF上面
就是用Brush拚到底了
剩下就是計算顯示區域跟位移了
也多虧了去年寫小畫家以及上一間公司的訓練
讓我一下子就搞定了
反而玩最久的是那個選取框框
其實以前小畫家就做到爛掉了,只是最近看了一些流程圖的sample
讓我又多所遲疑地做實驗
讓我原本以為最難的算放大跟位移花不到30分鐘
但是整個UI的Layout跟怎樣做的靈感可以就花了一兩天了

一開始的時候是顯示全部的圖,所以框框也是最大的


再來是改變選取框框的位置跟把小

可以看到指秀出選取的範圍,並顯示在全部的畫面
其實這是使用圖片進行測試,因為影片都一直撥放
實在很難測試,這也是WPF來做這個題目最好的地方
只要把Image換成MediaElement就可以直接上陣了
這就是這個六日最大的成果
講實在的也不難啦
跟流程圖的UI比起來,這個只需要一個UserControl來做選取範圍的UI
其他就是靠著Brush拚到底就OK了

圖片來源:kissbaby7606--無名
arrow
arrow
    全站熱搜

    oven425 發表在 痞客邦 留言(0) 人氣()