問題タブ [uibezierpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2415 参照

ios - UIBezierPath描画の問題

UIBezierPath型とUIColor型の2つのメンバー変数を使用してmyBezierPathsというクラスを作成し、このクラスのオブジェクトを使用してbezierpathを描画しようとしましたが、bezierpathを取得できません。以下は私のコードです。

返事を待って、私の説明がはっきりしていることを願っています

よろしくランジット

0 投票する
2 に答える
21525 参照

ios - UIBezierPathは1pxの線をストロークし、1pxの幅の長方形を塗りつぶします-異なる結果。

これが簡単な図面です

非網膜3GSおよびシミュレーターでは、最初の線はぼやけて1ピクセルより広く見えますが、2番目の線は鮮明です。

残念ながら、私はiPhone4も新しいiPadもテストする必要はありませんが、網膜シミュレーターでは両方の線が同じように見えます。

質問:非網膜デバイスと網膜デバイスで同じ結果を得るには、ストロークではなく長方形が唯一の方法ですか?

0 投票する
2 に答える
2600 参照

objective-c - UIBezierPath の消しゴム

iPad アプリでのフリーハンド描画に UIBezierPath を使用しています。に消しゴムを適用したい。

ただし、パス内の図面のみを消去したいです。背景に他の要素があるため、パスの色を背景色として使用できません。

以下は、フリーハンドの図面を作成する方法です。

0 投票する
2 に答える
3891 参照

ios - UIBezierPathとCoreGraphicsを使用したフリーハンドのペイントと消去

私は多くのことを試みてきましたが、まだ解決策が見つかりません。iOSでペイントと消去を実装する必要があるため、を使用してペイントロジックを正常に実装しましたUIBezierPath。問題は、消去の場合、を使用してペイントの場合と同じロジックを実装したkCGBlendModeClearことですが、問題は、消去された領域に再描画できないことです。これは、drawRectの各パスで、ペイントパスと消去パスの両方をストロークする必要があるためです。とにかく、描画パスから消去パスを差し引いて、結果のパスを取得し、それをストロークすることができます。私はCoreGraphicsを初めて使用し、返信とコメントを楽しみにしています。または、同じものを実装するための他のロジック。背景にテクスチャがあるため、消しゴムを背景色として使用できません。

0 投票する
1 に答える
1701 参照

ios - UIBezierPath配列レンダリングの問題(最適化のためにCGLayerRefを使用する方法)

友達、私はUIBezierPathsを使ってフリーハンドで描画していますが、すべてが正常に機能します。これにより、パスをパス配列に格納し、すべてが正常に機能します。レンダリング中は、配列全体をループしてパスをレンダリングしますが、すぐに配列数が増えると、描画中にラグが発生します。以下は私のdrawRectコードです。私がどこで間違っているのかを見つけるのを手伝ってください

@borrrdenによる以下の議論に従って更新されたコード

よろしくランジット

0 投票する
1 に答える
258 参照

iphone - SVG ファイルから取得したベジエ曲線の整列

そのため、現在、 TBXMLを使用して SVG XML ファイルを解析し、「g」パス命令を取り除くUIView のサブクラスに取り組んでいます。次に、これらの一連の命令をSvgToBezier (入力としてパス命令を受け取り、UIBezierPath オブジェクトを返す単純なパーサー) に渡します。次に、drawRect メソッドでそれらを描画します。

パスは正常にレンダリングされますが、問題は、パスが想定どおりに整列していないことです (Google chrome、adobe illustrator などで表示される方法)。

SVGKit ライブラリを使用すると複雑な svg ファイルを解析できることは知っていますが、関連する概念の理解を深めるために、これを自分で作成したいと考えています。

まず、drawRect メソッドを示し、次に SVG ファイルの例を示します。これは予想される出力であり、iPhone で 300x300 の長方形に描画された実際の出力です。

これが生のSVGです

予想される描画結果は次のとおりです

そして、これが実際のiPhone出力です(iOSシミュレーターのスクリーンショット)

私はあらゆる種類の計算と CGAffineTransforms を試してきました.. 物事を混乱させるだけなので、コードからすべてを残しました。

助けてくれてありがとう!

乾杯

EDIT:問題の矛盾(一貫性?)を説明するために、別のケースを含めます。

期待される

実際

0 投票する
3 に答える
313 参照

iphone - UIBezierPath:ビューのスクリーンショットの誤った取得

次のようにスクリーンショットを撮っています。

UIViewでは、を使用してパスを描画していますUIBezierPath

私が取得しているスクリーンショットは、このように正しくありません

ここに画像の説明を入力してください

なぜ上部が空白にカットされているのか、何か考えはありますか?UIViewでは、すべての図面が正しく表示されます。


UIBezierPath更新:これは、ブラシを離してスクリーンショットを取得するときに長いパスを描画すると、スクリーンショットが正しく取得されるときに発生します。

0 投票する
2 に答える
4178 参照

ios - ベジエ曲線を使用してらせんを描く

これは iPad アプリケーション用ですが、基本的には数学の問題です。

線幅が変化する (単調に増加する) 円弧を描く必要があります。曲線の始点では、最初の太さ (2 ポイントとしましょう) を持ち、弧の終点で最大の太さ (12 ポイントとしましょう) になるまで、太さは滑らかに増加します。

これを作成する最善の方法は、UIBezierPath を作成して形状を塗りつぶすことです。私の最初の試みは、2 つの円弧 (中心がずれている) を使用することでした。これは 90° までは問題なく動作しましたが、円弧は多くの場合 90° から 180° の間になるため、この方法ではうまくいきません。

厚さが増加する 90 度円弧の例

私の現在のアプローチは、ベジェ クワッドまたはキュービック カーブを使用して、わずかならせん (円弧からわずかに成長し、もう 1 つがわずかに縮小する) を作成することです。問題は、円弧からの偏差 (別名、形状の「厚さ」) が必要な値になるように、コントロール ポイントをどこに配置するかです。

制約:

  • 形状は、任意の角度 (互いに 180° 以内) で開始および終了できる必要があります。
  • 形状の「厚さ」(円からの偏差) は、指定された値で開始および終了する必要があります
  • 「厚さ」は単調に増加する必要があります(大きくなってから再び小さくなることはできません)
  • 滑らかに見える必要があります。急な曲がりがあってはなりません。

私は他のソリューションにもオープンです。