對於另一個問題,我也有一個similar answer,也就是使用多邊形作爲AWT剪輯。也許這在J2ME中得到支持?您需要知道要排除的矩形邊界以及繪圖區域的外邊界。
+-------------------+
| clip drawing area |
+---+-----------+ |
| | excluded | |
| | area | |
| +-----------+ |
| |
+-------------------+
編輯從OP。
這個答案適用於我,並且API在J2ME上受支持。另一個問題的答案似乎有一個錯誤 - 一組座標需要在外部左側和內部頂部開始點以創建一個封閉的多邊形。我的這些工作最終的代碼如下:
創建剪裁形狀,我用這個方法:
static public Shape getOutsideEdge(Graphics gc, Rectangle bb, int top, int lft, int btm, int rgt) {
int ot=bb.y , it=(ot+top);
int ol=bb.x , il=(ol+lft);
int ob=(bb.y+bb.height), ib=(ob-btm);
int or=(bb.x+bb.width), ir=(or-rgt);
return new Polygon(
new int[]{ ol, ol, or, or, ol, ol, il, ir, ir, il, il },
new int[]{ it, ot, ot, ob, ob, it, it, it, ib, ib, it },
11
);
}
我設置到圖形上下文,然後充滿了我的矩形:
Rectangle tmp=new Rectangle(px,py,pw,ph);
gc.setClip(getOutsideEdge(gc,tmp,thickness,thickness,thickness,thickness));
gc.fillRoundRect(px,py,pw,ph,RADIUS,RADIUS);
和然後我通過在每個角落畫一個點創建了圓角內角的錯覺:
gc.setClip(px,py,pw,ph);
gc.drawLine((px +thickness ),(py +thickness ),(px +thickness ),(py +thickness ));
gc.drawLine((px+pw-thickness-1),(py +thickness ),(px+pw-thickness-1),(py +thickness ));
gc.drawLine((px +thickness ),(py+ph-thickness-1),(px +thickness ),(py+ph-thickness-1));
gc.drawLine((px+pw-thickness-1),(py+ph-thickness-1),(px+pw-thickness-1),(py+ph-thickness-1));
不要k現在爲什麼這有一個「objective-c」標籤... – 2009-08-13 19:00:07
@ QUINN:感謝您的更正 - 我在標籤字段中鍵入了*「J2ME」,但我懷疑將標籤字段中的標籤按下切換到編輯摘要標籤,我沒有注意到!我發現標籤字段的標籤行爲非常煩人/違反直覺。 – 2009-08-13 22:26:45