1

三角形の境界をなくすには?

白い境界線を持つ黒い三角形

三角形の描画アプリで export-to-pdf を実装しています。上の画像は、pdf 出力がどのように見えるかを示しています。幅が 1 ピクセル未満の白い境界線がどこにでもあります。

三角形は任意の色にすることができます。


次のように、各三角形を描きます。

CGContextBeginPath(context);
CGContextMoveToPoint(context, x0, y0);
CGContextAddLineToPoint(context, x1, y1);
CGContextAddLineToPoint(context, x2, y2);
CGContextClosePath(context);
CGContextFillPath(context);

黒と白の三角形が同じサイズであることが重要です。


アプローチ

アプローチ 1 - 脳卒中

すべての三角形の周りに 1 ピクセルの太さのストロークを描画します。

アプローチ 2 - 押し出し

三角形が重なるように、すべての三角形を 2 ピクセル押し出します。

アプローチ 3 - 組み合わせる

接触している三角形を 1 つの多角形に結合します。

アプローチ 4 - PDF オーバーラップ設定

おそらく、PDF には境界をなくすための設定があります。わからない。

アプローチ 5 - 後処理

境界ピクセルを検出して除去するフィルターを作成します。これは私にはうまくいきません。PDF に保存する必要があります。シェーダー コードは、iOS の PDF ではサポートされていません。

アプローチ X - よりスマートな方法

三角形を一緒にスナップするより良い方法はありますか?

4

3 に答える 3

0

アプローチ 3 - 組み合わせる

私はGPC – General Polygon Clipper ライブラリを使用していますが、ほぼ期待どおりに動作します。

UNION 操作を一度に 1 つの三角形で実行します。すべての三角形が UNION されて結果になるまで。

以下は GPC からの出力です。白い縁は見られません。

GPC使用時の出力。


また、 Angus Johnson の Clipper ライブラリを使用してみましたが、一度に 1 つの三角形を UNIONing してポリゴンを構築することはできませんでした。三角形の間の白いエッジをいくつか削除しただけです。Clipper は GPC よりも強力に見えますが。

以下は Clipper からの出力で、白いエッジが表示されています。 Clipper を使用した場合の出力に、白いエッジが含まれる

于 2013-05-11T20:01:54.243 に答える
0

安価で簡単な解決策は、各三角形を 2 回描画することです。これにより、アンチエイリアシングが減少しますが、エッジに沿ったカバレッジが向上します。すべて同じ色の場合は、単一のパスとしてレンダリングすることもできます。

于 2013-04-14T15:39:10.553 に答える