問題タブ [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.
ios - UIBezierPath描画の問題
UIBezierPath型とUIColor型の2つのメンバー変数を使用してmyBezierPathsというクラスを作成し、このクラスのオブジェクトを使用してbezierpathを描画しようとしましたが、bezierpathを取得できません。以下は私のコードです。
返事を待って、私の説明がはっきりしていることを願っています
よろしくランジット
ios - UIBezierPathは1pxの線をストロークし、1pxの幅の長方形を塗りつぶします-異なる結果。
これが簡単な図面です
非網膜3GSおよびシミュレーターでは、最初の線はぼやけて1ピクセルより広く見えますが、2番目の線は鮮明です。
残念ながら、私はiPhone4も新しいiPadもテストする必要はありませんが、網膜シミュレーターでは両方の線が同じように見えます。
質問:非網膜デバイスと網膜デバイスで同じ結果を得るには、ストロークではなく長方形が唯一の方法ですか?
objective-c - UIBezierPath の消しゴム
iPad アプリでのフリーハンド描画に UIBezierPath を使用しています。uibezierpathに消しゴムを適用したい。
ただし、パス内の図面のみを消去したいです。背景に他の要素があるため、パスの色を背景色として使用できません。
以下は、フリーハンドの図面を作成する方法です。
ios - UIBezierPathとCoreGraphicsを使用したフリーハンドのペイントと消去
私は多くのことを試みてきましたが、まだ解決策が見つかりません。iOSでペイントと消去を実装する必要があるため、を使用してペイントロジックを正常に実装しましたUIBezierPath
。問題は、消去の場合、を使用してペイントの場合と同じロジックを実装したkCGBlendModeClear
ことですが、問題は、消去された領域に再描画できないことです。これは、drawRectの各パスで、ペイントパスと消去パスの両方をストロークする必要があるためです。とにかく、描画パスから消去パスを差し引いて、結果のパスを取得し、それをストロークすることができます。私はCoreGraphicsを初めて使用し、返信とコメントを楽しみにしています。または、同じものを実装するための他のロジック。背景にテクスチャがあるため、消しゴムを背景色として使用できません。
ios - UIBezierPath配列レンダリングの問題(最適化のためにCGLayerRefを使用する方法)
友達、私はUIBezierPathsを使ってフリーハンドで描画していますが、すべてが正常に機能します。これにより、パスをパス配列に格納し、すべてが正常に機能します。レンダリング中は、配列全体をループしてパスをレンダリングしますが、すぐに配列数が増えると、描画中にラグが発生します。以下は私のdrawRectコードです。私がどこで間違っているのかを見つけるのを手伝ってください
@borrrdenによる以下の議論に従って更新されたコード
よろしくランジット
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:問題の矛盾(一貫性?)を説明するために、別のケースを含めます。
iphone - UIBezierPath:ビューのスクリーンショットの誤った取得
次のようにスクリーンショットを撮っています。
UIViewでは、を使用してパスを描画していますUIBezierPath
。
私が取得しているスクリーンショットは、このように正しくありません
なぜ上部が空白にカットされているのか、何か考えはありますか?UIViewでは、すべての図面が正しく表示されます。
UIBezierPath
更新:これは、ブラシを離してスクリーンショットを取得するときに長いパスを描画すると、スクリーンショットが正しく取得されるときに発生します。
ios - ベジエ曲線を使用してらせんを描く
これは iPad アプリケーション用ですが、基本的には数学の問題です。
線幅が変化する (単調に増加する) 円弧を描く必要があります。曲線の始点では、最初の太さ (2 ポイントとしましょう) を持ち、弧の終点で最大の太さ (12 ポイントとしましょう) になるまで、太さは滑らかに増加します。
これを作成する最善の方法は、UIBezierPath を作成して形状を塗りつぶすことです。私の最初の試みは、2 つの円弧 (中心がずれている) を使用することでした。これは 90° までは問題なく動作しましたが、円弧は多くの場合 90° から 180° の間になるため、この方法ではうまくいきません。
私の現在のアプローチは、ベジェ クワッドまたはキュービック カーブを使用して、わずかならせん (円弧からわずかに成長し、もう 1 つがわずかに縮小する) を作成することです。問題は、円弧からの偏差 (別名、形状の「厚さ」) が必要な値になるように、コントロール ポイントをどこに配置するかです。
制約:
- 形状は、任意の角度 (互いに 180° 以内) で開始および終了できる必要があります。
- 形状の「厚さ」(円からの偏差) は、指定された値で開始および終了する必要があります
- 「厚さ」は単調に増加する必要があります(大きくなってから再び小さくなることはできません)
- 滑らかに見える必要があります。急な曲がりがあってはなりません。
私は他のソリューションにもオープンです。