問題タブ [cglayer]
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.
iphone - CGLayer を使用して複数の画像を画面外に描画する方法
最終的には、iPhone で使用するボックス ブラー機能に取り組んでいます。
その関数は UIImage を受け取り、最初に側面に透明なコピーを描画し、次にその画像を取得して上下に透明なコピーを描画し、きれいにぼやけた画像を返します。
Drawing with Quartz 2D Programming Guideを読むと、この種の操作には CGLayers を使用することが推奨されます。
ガイドのサンプル コードは、私が理解するには少し複雑なので、UIImage を取得してCGLayerに変換し、そのコピーを描画して UIImage として返すという非常に簡単な例を誰かに示してもらいたいと思います。
値がハードコーディングされていても問題ありません (簡単にするため)。これは、製品コードではなく、頭を包むためだけのものです。
iphone - フォトアルバムに保存するUIImageを計算する
基本的には、一連のソース画像からタイル画像を自動的に作成し、それをユーザーのフォトアルバムに保存したいと考えています。たくさんの小さなUIImageを1つの大きなUIImageに描画することに成功していません。これを達成するための最良の方法は何ですか?現在、UIGraphicsBeginImageContext()や[UIImage drawAtPoint]などを使用しています。最終的には、512x512の黒い正方形だけになります。これをどのように行うべきですか?CGLayerなどを探していますが、選択肢はたくさんあるようですが、特に簡単に機能するものはありません。
私のコードを実際に入れましょう:
実際、上記は私のコードで正確に起こっていることではないことに注意する必要があります。実際に起こることは、UIGraphicsPushContextの前にすべての行を呼び出し、次にアニメーションタイマーで、描画をゆっくりとインクリメントしてコンテキストに描画することです。次に、すべてが完了した後、UIGraphicsPopContext以降のすべてを呼び出します。
iphone - CGLayerは良い解決策ですか?
アプリに少し機能を追加したいのですが、CGLayerを使用するのが最善の方法だと思いますが、(いくつかの基本的なチュートリアルを除いて)これまでQuartzの描画を行ったことがありません。
私の意図は、アプリが描画する画像の全体像(パラメーターに基づく基本的な幾何学的形状)をビューの上半分に表示し、その画像の拡大部分をビューの下半分に表示することです。ユーザーが一番上の画像に触れた場所。ズームインした部分を高解像度で表示したいので、たとえば640 x 640 CGLayerに画像を描画してから、ビューの上部320 x 320の半分にその完全なレイヤーを描画する必要があると考えています(スケーリングされています)。収まるように下に)、ビューの左下160 x 160でユーザーが触れた関連部分ですが、拡大縮小されていないため、メイン画像の4分の1が表示されます。
ユーザーがメインビューの周りで指を動かすと、左下の部分ビューがCGLayerから再描画されるため、新しい画像のレンダリングは行われず、CGLayerの描画のみが行われます。
私の経験の浅い脳が見逃したかもしれないこのアプローチの問題を誰かが見ることができますか?
タ、ジュールズ。
iphone - 回転した CGImage/CGlayer のアンチエイリアスはジャギーに見えますが、UIImageView はそうではありません
回転したグレースケール画像で「テクスチャ」画像をマスクする必要があります。
CGImagesまたはCGlayersを使用する必要があることがわかりました ( UIImageViewsのみを使用する簡単な方法がある場合は、お知らせください)。
私の問題は簡単です:
回転変換された CGのアンチエイリアスは静かで ギザギザです ...
...しかし、回転変換された UIImageView のアンチエイリアスは完璧です。アンチエイリアス処理された美しい回転を生成するにはどうすればよいですか?
私が何を話しているかを確認するために、実際の iPhone シミュレーターのスクリーンショットを含む「証明」をアップロードしました: http://gotoandplay.freeblog.hu/files/Proof.png
renderInContextで「キャプチャ」されたCGImages、CGLayers、UIImageViewsを使用しようとしました。 CGContextSetInterpolationQualityを高くしようとしました。
来年は OpenGL を使って学習する予定ですが、この開発は CoreGraphics のみを使用してリリースする必要があります。完全にレンダリングされた回転した画像を取得する方法を教えてください。それが不可能であることは受け入れられません。
iphone - 描画前にCGLayerの「不透明度」を設定しますか?
私は UIView サブクラスを持っています - 実際にはパズルのピース - 2 つの異なる CGLayer が initWithFrame で初期化されています。
drawRect では、この 2 つのレイヤーをブレンドする必要があり、最上部にはゲーム ロジックに応じて可変アルファが必要です。
これを行うための最良の (最もパフォーマンスが最適化された) 方法は何ですか? 描画する前にアルファを設定する CGLayer または CGContext 関数はありますか?
iphone - メソッド drawRect の外で CGLayer を描画する: より高速ですか?
私はよくわかりません、私は何を求めているのですか...
...しかし、別々のメソッドでレイヤーコンポジットを作成し、それらを drawRect: メソッドの外でもビューに描画すると... ...アプリのパフォーマンスが向上する可能性はありますか?
実際には、パズルのピースがレンダリングされる puzzlePiece:UIView クラスをサブクラス化していますが、描画の実装は drawRect: メソッドで行われるため、再描画は setNeedsDisplay で呼び出されます。アプリが遅い。
いわゆる drawRect: メソッドを削除すると、パフォーマンスを改善できますか?
実装したいもの: http://gotoandplay.freeblog.hu/
iphone - CGLayerを使用してUITableViewのセルをキャッシュする
アプリのスクロールのパフォーマンスを改善しようとしています。私は一般的に受け入れられているすべてのアドバイス(CGで自分で描く、セルが不透明、サブビューがないなど)に従いましたが、バックグラウンドのCPUとネットワークアクティビティがあると、まだ途切れることがあります。
ここに述べられている1つの解決策:
http://www.fieryrobot.com/blog/2008/10/08/more-glassy-scrolling-with-uitableview/
試したセルのビットマップスナップショットをキャッシュすることです。しかし、ビットマップはあいまいで、大量のメモリを消費していました(それぞれ数百kb)。
そのリンクのコメントの1つの提案は、セルがグラフィックカードのメモリに移動するため、CGLayerまたはCALayer(?)を使用してセルをキャッシュすることです。それで、いくつかの質問、
1)これを試したことはありますか?サンプルコード?
2)iphone / ipod touchグラフィックカードにはどのくらいのメモリがありますか?これは意味がありますか?
3)物事をスピードアップするための他の提案はありますか?
詳しくは
私は(電話で)CPUサンプラーを使用し、問題を解明するためにセルから物事を体系的に排除しました。いくつかのこと:
1)セルの設定ではありません。描画呼び出し(drawinrectなど)だけを削除し、セットアップをそのままにしておくと、ガラスのようになります。
2)最小の画像(25x25 png)の描画ではありませんが、それを入れても問題ありません。
3)2番目または3番目の画像(最初は大きな背景320x1004kB、もう1つはボタン画像61x35 4kB)を追加すると、途切れます。クラスメソッドで両方のUIImageを取得しているので、キャッシュされます。
4)テキストも問題です。drawRectは、その時間の75%を私が使用している3つのNSStringdrawInRectメソッドに費やしているようです。好き:
[mytext drawInRect:drawrect withFont:myFont lineBreakMode:UILineBreakModeTailTruncation];
それらの呼び出しはWebコアを経由しているようですが、おそらくそれがいくつかのスタッターを引き起こしますか?2行のテキストと1つの小さな段落のテキストをフォーマットできる必要があります。テキストを省略記号で切り捨てる機能が必要です。これらをクリティカルパスから実行してキャッシュできますか?その部分をレイヤーでできますか?
iphone - iPhone: 配列に格納された CGLayers の描画中にクラッシュする
やり直し機能と元に戻す機能を備えた描画アプリを構築しようとしています。私の考えは、「touchMoved」のレイヤーに線を引き、そのレイヤーを「touchEnded」に保存することです。
正しいレイヤーに描画しているとは確信していませんが、描画している画像をクリアして配列内のレイヤーを再描画しようとするまで、すべて正常に動作します。
レイヤーを再描画しようとしている方法は次のとおりです。CGContextDrawLayerAtPoint()
iphone - 画像が描画された CGlayer を作成するにはどうすればよいですか?
CGLayer
画像が描かれたを作成するには、ホットを知る必要があります。ドキュメントを完全に理解していません。ありがとう
iphone - CGLayers でカスタム アニメーションを作成しますか?
基本的には、縮小する円をアニメーション化したいと考えています。私はすでにCGLayerの上に徐々に小さな円を描き、次に使用することでこれを行っています
if(index < 30){
[self performSelector:@selector(showNextLayer) withObject:nil afterDelay:(NSTimeInterval)0.02]; インデックス++;
}
私の showNextLayer メソッドで。これは私の単純な目標では機能しますが、一般的に、これはカスタムアニメーションを描画するための多かれ少なかれ賢明な方法ですか?
Apple にはアニメーションに関する多くのドキュメントがあります - 私を混乱させるのに十分ですが、私が最終的に理解している限り:
- UIView が提供するアニメーション サービスは、いくつかの基本的なビュー プロパティ、ビューの遷移などをアニメーション化するのに適しています。
- CAAnimation から継承するクラスによって提供されるものは、色の変化、3D 変換などのアニメーション プロパティに適しています。
- UIViewImage は、カスタム ビットマップ イメージをアニメーション化するのに適しています (代わりに CGLayer に円を描画できる場合にビットマップ イメージを作成するのは得策ではありません)。
CGLayer のシーケンスのコンテンツの表示もサポートされているように思えますが、何か不足していますか?
明確にしていただきありがとうございます..