資源下載地址:https://download.csdn.net/download/sheziqiong/85731164
資源下載地址:https://download.csdn.net/download/sheziqiong/85731164
基於PythonGUI實現的繪圖工具軟件設計 演示視頻
目錄
1 綜述 1
2 算法介紹 2
2.1 繪制線段 2
2.1.1 DDA算法 2
2.1.2 Bresenham算法 2
2.1.3 代碼處理 2
2.2 繪制多邊形 3
2.3 繪制橢圓 3
2.4 繪制曲線 3
2.4.1 Bezier曲線 3
2.4.2 B-spline曲線 3
2.4.3 代碼處理 3
2.5 平移 4
2.6 旋轉 4
2.7 縮放 4
2.8 裁剪 4
2.8.1 Cohen-Sutherland算 4
2.8.2 Liang-Barskey算法法 4
3 系統介紹 5
3.1 CLI框架 5
3.2 GUI框架 5
3.3 GUI功能 6
3.4 額外功能 9
3.4.1 界面美化 9
3.4.2 菜單部分 9
3.4.3 繪圖工具欄 10
3.4.4 編輯工具欄 10
4 總結 10
4.1 遇到的一些問題 10
4.2 6月更新 10
4.2.1 添加功能 10
4.2.2 bug修正及其他更新 11
參考文獻 11
1綜述
在老師所給框架代碼上進行修改完善,完成了所有要求的指令輸入輸出,GUI界面實現了CLI部分的所有功能,包括設置畫筆顏色、重置畫布、保存畫布、兩種算法繪制線段、兩種算法繪制多邊形、繪制橢圓、兩種算法繪制曲線、平移、旋轉、縮放和兩種算法裁剪線段.
額外實現了如下內容:
•點擊畫布右、下、右下角邊框調整畫布大小; 點擊畫布選擇圖元; 編輯時顯示平移等操
作控制點.
•刪除選中圖元,復制選中圖元,粘貼已復制圖元.
•繪制虛線段; 凸多邊形和橢圓填充.
•更美觀的界面.
2算法介紹
2.1繪制線段
2.1.1DDA算法
基本思想是記下起點,然後讓長的一邊變量不斷加一,短的一邊則不斷加斜率乘1後近似
為int值.代碼參照[7].
2.1.2Bresenham算法
基本思想其實和DDA是一樣的.只是Bresenham算法通過變形避免了浮點運算.這樣一
來,既提高了運算的效率,又避免了浮點數不斷累加造成的長線段誤差.所以本質上,Bresenham是DDA算
法的優化形式.代碼參照[7].
2.1.3代碼處理
•特判使得能夠處理兩端點相等的情況.
•因為講義中說不要求像素級一致,所以和偽代碼一樣只亮一邊端點,即線段點的范圍[P0, P1).
2.2繪制多邊形
默認指令中的點是排好序的, 直接調用線段繪制算法按順序連點.
2.3繪制橢圓
使用ppt上的中點橢圓算法, 先畫出1/4橢圓, 然後對稱. 畫1/4橢圓時,根據是否到達切線斜率為-1的位置, 來判斷選點的方向是基於x還是基於y, 再根據實際橢圓上的點離哪個點更近取近似.
實際代碼要先求出中心和長短軸, 然後以中心為原點求點, 再映射回原來的坐標系.
對稱的時候考慮了x軸和y軸上的特例, 不然x=0和y=0的點對稱後相當於1個點出現了兩次.
代碼流程參考書上ppt相關部分.
資源下載地址:https://download.csdn.net/download/sheziqiong/85731164
資源下載地址:https://download.csdn.net/download/sheziqiong/85731164