同樣是最近的小專案,捏捏。
順帶一提我想好英文的名字了,就叫Pinch,我沒有創意了。
上次已經把核心功能給實現出來了,只有扭曲跟筆刷的部分,但UI的部分完全沒有。也還沒辦法從剪貼簿存取圖片。
扭曲核心功能O
拿以前畫過的六花來試試,當時被人說大腿不夠豐滿來著。
過程中比較麻煩的是windows api的使用,畢竟沒有C#那些現成的功能可以直接抓來用,第一次搞這種東西就直接做圖片的讀取,好險使用上沒有很困難ww。
前情提要
上次已經把核心功能給實現出來了,只有扭曲跟筆刷的部分,但UI的部分完全沒有。也還沒辦法從剪貼簿存取圖片。
目前進度
扭曲核心功能O
讀取剪貼簿圖片O
將結果存回剪貼簿O
復原至最初O
畫面縮放O
畫面拖拉O
筆刷大小調整O
筆刷視覺化O
透明背景O
復原上一動X
筆刷柔度調整X (突然有想法了)
滑鼠軌跡算法修改X
縮放扭曲筆刷X
品質調整X (其實應該不太需要,後面解釋)
多個圖層複製貼上XXX(似乎是沒辦法的)
使用測試
拿以前畫過的六花來試試,當時被人說大腿不夠豐滿來著。
開啟CPS,點選圖層之後直接CTRL+C
回到Pinch之後,直接貼上。
在Pinch中,放大、縮小、拖曳畫面都能夠正常運作。
另外紅色的那塊就是筆刷的視覺化。
筆刷也能正常縮放
接下來捏來捏去的過程就省略,直接放原圖(左)跟捏完後的圖片(右)
沒有花太多時間下去捏,沒復原上一動也蠻不方便的。不過大致上可以看到是能用的,最後只要複製貼回CSP就好了。
順帶一提,測試的這台電腦配備如下:
CPU : i3-2120
RAM : 10GB
然後就沒有獨顯了,有夠糞,可以感覺到有延遲存在,但用起來是還算流暢的,而且回頭看看這配備又覺得沒事了ww。
所以應該是沒有需要做品質選項讓使用者調整拉。
小結
過程中比較麻煩的是windows api的使用,畢竟沒有C#那些現成的功能可以直接抓來用,第一次搞這種東西就直接做圖片的讀取,好險使用上沒有很困難ww。
另外還會需要知道bmp檔案格式,header的資料擷取等等。
反而讓我比較頭痛的是拖曳跟縮放...,畢竟是openGL,不像那些系統提供好的圖形介面,每個元件都分得好好的,拖曳跟縮放在實作的時候還得好好思考一下,怎麼讓畫面以滑鼠位置為中心縮放、矩陣放的順序有沒有放反= =,怎麼分配座標系統會最好寫之類的...。
順帶一提,原始碼還沒更新上Github,如果現在去看的話,只會看到一坨便便。
參考資料