問題タブ [quartz-graphics]

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 投票する
5 に答える
13643 参照

iphone - iPhone SDK用の(指で触れる)描画アプリケーションの最適化

指を使って簡単な図を描くアプリケーションを書いています。ほとんどの部分で機能していますが、現在はパフォーマンスを最適化しようとしています。ユーザーが指をすばやくスワイプすると、スムーズなパスを描画するのに十分なタッチイベントをキャプチャできません。

これが私の現在のアプローチです:

1)UIViewをサブクラス化し、CGLayerにポロパティを追加しました(遅延して作成され、UIViewと同じサイズです)。2)私のUIViewサブクラスは、現在および最後のタッチポイントをインスタンス変数に格納することによってタッチイベントに応答します。3)ビューのsetNeedsDisplayが呼び出され、描画長方形で次の手順を実行します。-前のタッチ位置から現在のタッチ位置への線をCGLayerに描画します-CGLayer全体をビューコンテキストに一度に描画します

主な問題は、ユーザーが高速でスワイプするとタッチイベントが比較的少なくなるため、タッチ間に描画する線が長くなり、パスがギザギザに見えて滑らかにならないことです。

私の質問:

1)drawRect(UIViewサブクラス上)とUIViewサブクラス上のタッチイベントハンドラーは同じスレッドで呼び出されますか?つまり、スレッドを実行する必要がありますか(1つはタッチイベントで、2つ目は描画長方形で)?

いいえの場合-drawRectが呼び出されている間、タッチイベントはキューに入れられますか?そして、どうすればパフォーマンスを向上させることができますか?単にdrawRectのパフォーマンスを向上させるだけですか?

はいの場合-よりスムーズなパスを描画できるように、タッチイベントをさらに発生させるにはどうすればよいですか?

ありがとう。

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

iphone - ユーザーが CGPath の近くをタップしたかどうかを確認するにはどうすればよいですか?

シナリオ:

Sのセットを持っていCGPathます。それらはほとんど単なる線です (つまり、閉じた形状ではありません)。UIViewそれらはの draw メソッドで画面に描画されます。

ユーザーがいずれかのパスの近くをタップしたかどうかを確認するにはどうすればよいですか?

これが私が働いていたものです:

私がやっていることは、私が必要とする機能を持っているので、画像コンテキストを作成することです. 次に、パスをコンテキストに追加し、線幅を 15 に設定します。この時点でパスをなぞると、クリックを見つけるために内部をチェックできるクリック領域が作成されます。そのため、パスをストローク パスに変換するようにコンテキストに指示し、そのパスを別の CGPath にコピーして、ストローク パスを取得します。後で確認できます。

それはすべてうまく機能しましたが、CGContextCopyPath文書化されていないため、明らかな理由で使用するのは悪い考えのように思えました。またCGContext、この目的のためだけに を作成することについては、ある種の不器用さもあります。

それで、誰かアイデアはありますか?ユーザーが の任意の領域の近く (この場合は 15 ピクセル以内) をタップしたかどうかを確認するにはどうすればよいCGPathですか?

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

iphone - アニメーション化されたパスを描画するテクニックはありますか?

クォーツを使って手書きをシミュレートする方法はありますか?

ポイントA、B、Cの間にパスがあることを意味します。パスがポイントAから出て、ポイントB、次にCにアニメーション化されるようにしたい.

頭に浮かぶのは、それを行うための2つのオプションです。

  1. 醜い-パスを作成してからマスクし、マスクを移動してパスを明らかにします。作成に時間がかかり、信頼性が低く醜いハック

  2. ポイントA、B、Cを移動し、それらの間に線を引きます。

  3. トレイルを離れるパスに沿って円をアニメーション化する方法はありますか?

テクニック、例はありますか?

ありがとう。

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

iphone - iPhone SDK Quartz を使用した PDF のズームと更新

QuartzDemo サンプル アプリケーションを見ると、Quartz のみを使用した (つまり、uiwebview を使用しない) PDF レンダリングの速度が気に入っています。ただし、PDF を拡大しても、PDF ビューのようにはっきりとは見えません。

マルチタッチを使用してズームインおよびズームアウトするときに同じ効果を得るために変更できるものはありますか? PDF変換マトリックスなどを操作するような?

本当にありがとう。

--ベン

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

iphone - 大きな CGPath を描画する最も効率的な方法は何ですか?

よし、かなり広いaUIViewを表示する aがあります。横方向CGPathにスクロールできます。UIScrollView現在、CATiledLayer幅が 1024 ピクセルを超えているため、ビューを使用しています。

だから私の質問は:これは効率的ですか?

基本的に、レイヤー内のタイルが描画されるたびにパス全体を描画しています。これが悪い考えなのか、それともクリッピング四角形内にあるパスの部分のみを描画することについて CGContext が比較的スマートなのか、誰かが知っていますか?

パスはほとんどの場合、サイズと形状がタイルに似ているブロックに分割できるように設定されていますが、それには私の側でより多くの作業が必要であり、パス間にいくらかの冗長性が必要になります (形状の場合)タイルの境界を越える)、また、描画するパスを見つけるために計算が必要になります。

この方向に進む価値はありますか、それとも CGPath はすでに比較的速く描画されていますか?

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

iphone - Quartz はテクスチャ圧縮をどのように処理しますか?

私は iPhone で開発しており、ゲームの大部分は OpenGL ES を使用していますが、CGImage と Quartz を使用して表示するメニューもあります。OpenGL ES では、どのような画像圧縮 (JPG、PNG など) を行っても、テクスチャとしてメモリに格納されたデータは 8 ビット テクスチャであることがわかっています。 2 ビットまたは 4 ビット。大きな CGImage が原因でメモリの問題が発生しているので、私の質問は... Quartz と CGImage はどのような最適化と圧縮を使用するのですか? Appleのドキュメントで詳細を見つけることができません.256色の画像を配置することで違いが生じるかどうか、またはJPGとPNGを2のべき乗で使用する場合に違いがあるかどうかを本当に知りたいのですが、速度は重要ではありません。ここではメモリがボトルネックです。

ありがとう。

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

iphone - CGLayer が間違った方向に表示される

幅 200 x 高さ 100 の UIView サブクラス (TraceView) があり、ピクセルごとに描画しようとしています。この場合、横方向の 75% を横切る青い水平線を引こうとしています。代わりに、2 本の垂直の青い線 (端に 1 本、中央に 1 本) が表示され、75% まで上がります。私が使用している CGLayer は 90 度回転して 50% 縮小されているようです。これを修正するにはどうすればよいですか?

.m ファイルの先頭:

drawRect のオーバーライド:

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

iphone - 逆さまのテキスト-Quartz/iPhone-CGContextScaleCTM

次を使用してiPhoneで描画するために、左上ではなく左下隅を使用しています。

これは、グラフを描画するために原点を変更する場合は問題なく機能しますが、ラベルは上下逆に表示されます。

座標系を使用するだけでなく、描画しているグラフに適切にラベルを付けるために通常の直線テキストを取得するにはどうすればよいですか?