Qt實現多邊形內環裁剪

2021-09-11 16:17:48 字數 592 閱讀 7436

1、qt的裁剪原理是每次setclippath都預設對已存在的path進行替換

2、如果需要實現多邊形內環的裁剪,即扣島,需要將多邊形外環、內環都設定在乙個path裡面,然後裁剪型別設定為qt::clipoperation::intersectclip

示例如下:

void qtcanvas::clip(polygon* polygon)

path.addpolygon(out_polygon);

int inner_clip_count = polygon->numinteriorrings();

for(int o = 0; o < inner_clip_count; ++o)

qpolygon qpolygon;

for(int i = 0; i < point_count; ++i)

path.addpolygon(qpolygon);

} auto clip = qt::clipoperation::intersectclip;

_canvasptr->setclippath(path, clip);

}

多邊形裁剪

如果按線段的方法裁剪,得到的是一系列線段。而實際上,應該得到的是下圖所示的有邊界的區域 多邊形裁剪演算法的輸出應該是裁剪後的多邊 形邊界的頂點序列!需要構造能產生乙個或多個封閉區域的多邊 形裁剪演算法 該演算法的基本思想是將多邊形邊界作為乙個整體,每次用視窗的一條邊對要裁剪的多邊形和中間結果多邊形進...

多邊形裁剪問題

案例 用乙個矩形框裁剪乙個多邊形。思路 將問題降到邊切割邊的問題。霍格曼演算法 h 遍歷 裁剪多邊形的每一條邊,每一條邊向兩邊無限延長,依次分割多邊形。遍歷被裁剪多邊形的每條邊 2條邊的位置關係比較明確。當被裁剪多邊形一條邊 起點p,終點q 相對於視窗某條邊界及其延長線進行剪裁時,共有四種情況 1 ...

多邊形裁剪二 Weiler Atherton演算法

weiler atherton 任意多邊形裁剪 sutherland hodgeman 演算法解決了裁剪視窗為凸多邊形視窗的問題,但一些應用需要涉及任意多邊形視窗 含凹多邊形視窗 的裁剪。weiler atherton 多邊形裁剪演算法正是滿足這種要求的演算法。一 weiler atherton 任...