實驗三 互動式繪製多邊形

2022-07-21 03:15:12 字數 1289 閱讀 9883

置頂內容:

孔令德的無密碼的實驗**是有的,如下:

在螢幕上點選乙個點,鬆開移動滑鼠,線就會跟著滑鼠進行延長,再次點選就會形成新的點,兩點之間形成線段,然後新的線繼續跟著滑鼠跑。

當滑鼠經過起點的時候,直線自動連到起點,形成閉合多邊形,並且完成顏色的填充。

所以相對實驗二,我們要實現直線的動態顯示(橡皮筋繪製技術)和填充多邊形。其中填充多邊形用到了雙緩衝機制,避免繪圖的過渡(瞬間上色)。

直線在滑鼠的移動下像橡皮筋那樣拉伸,就是橡皮筋技術。實現這個技術同樣需要雙緩衝機制。

下面的**是網上找來的。**

int ispress=0;

cpoint start;

cpoint end;

//將上述**放在***view.cpp裡面的開頭部分(只要能在***view.cpp裡面起控制全域性的作用就行,例如放在#endif後面)

//在***view.cpp裡面用新增類嚮導將單擊滑鼠左鍵,滑鼠移動對映為相應的函式。並且新增以下**

void cxiangpijinview::onlbuttondown(uint nflags, cpoint point)

void cxiangpijinview::onmousemove(uint nflags, cpoint point)

cview::onmousemove(nflags, point);

}

以上**實現了畫線的橡皮筋功能,效果類似於實驗二,但是是系統呼叫的方法。

可以在螢幕上畫線了,就要繪製多邊形。

當滑鼠左擊一次,就建立乙個點,滑鼠移動顯示橡皮筋拉伸的線。再次點選,生成第二個點,線段生成,並生成新的橡皮筋線。

我們需要儲存畫的點和線。

//在view.h中建立乙個cpoint

cpoint point[100];

如果要儲存邊,就要建立新的類,aet和bucket類

雖然孔令德的實驗**沒辦法得到,但是他的課本課後習題的**在網上有,其中就有「多邊形有效邊表填充演算法」的實驗,裡面實現了aet和bucket

檔案我就不發出來了,最後看我的**就可以。

使用aet和bucket儲存邊,並且進行填充。

程式剛啟動的時候不要著急點,等待程式載入,不然你會發現點不出直線。

左鍵用來畫線,右鍵用來繪製,切記!!

本文**:

Opencv繪製多邊形

利用opencv繪製多邊形,主要是因為給的資料是4個點,而繪製矩形的函式cv2.rectangle只傳遞兩個點,即左上和右下。繪製矩形框可以參考這裡 就是利用cv2.fillpoly函式 cv2.fillpoly img,area1,area2,area3 2,255,255 image表示處理的 ...

vc 使用api繪製多邊形

全域性變數 point poly1 5 poly2 5 poly3 5 hpen hpen 畫筆控制代碼 hbrush hbru 畫刷控制代碼 mypaint函式 void mypaint hdc hdc selectobject hdc,hpen selectobject hdc,hbru pol...

canvas繪製多邊形並填充

let canvas document.getelementbyid canvas canvas.width 800 畫布寬度 canvas.height 800 畫布高度 let context canvas.getcontext 2d canvasmonth context,100,100,40...