問題タブ [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.
iphone - CGContext の最適化
実行速度に小さな問題があります。ロード時に、少なくとも 1000 ポイントを含む CGMutablePath を生成します。画面上でこのパスをスクロールしたいので、次のようなコードを使用します。
問題は、少し遅いことですが、それほど多くはありませんが、グラフィックコードをさらに追加する必要があるため...デバイスがパス全体を描画しているかどうか疑問に思っていました(スケールが適用されると、パスは幅約 10.000 ピクセル)、または画面に表示されている部分だけですか? これを最適化するにはどうすればよいですか?
iphone - Quartz キャッシング CGLayer
CGLayer doc から引用するには:
Quartz は、CGLayer オブジェクトを含め、再利用されるすべてのオブジェクトをキャッシュします。
大きなページのメモリに問題があり、画面のオン/オフに基づいてビューが解放および再作成される単純なメカニズムを実装しようとしています。
簡単にするために、ネットワーク リクエストの結果として作成された一連の UIImage が配列のどこかに保存されているとします。次のように UIImageView を作成します。
が画面外にimgView
出ると、それはremovedFromSuperview
解放されます。結構ですよね?いいえ、Quartz に存在する CGLayer はanImage
まだ存在するため、削除されません。
どうすればこれを回避できますか? このシナリオでの唯一の方法は、Quartz の背後にまったく同じイメージを別のポインター アドレスで作成し、古いイメージを削除することです。これを行う唯一の方法は、イメージを「ディープ コピー」するか (UIImage は NSCoding を実装していません)、ネットワーク経由で再度要求することです (遅い)。
私が考えているのは、画像をデータベースにsqlliteし、ビューが画面に表示されるたびにそれらを再取得する必要があるということですが、これについて人々の考えを聞きたいです.
iphone - CALayerデリゲートメソッドdrawLayerが呼び出されない
NSObjectのサブクラスである私のオブジェクトにはCALayerインスタンス変数があります。デリゲートをオブジェクトに設定して、コンテンツの描画とキャッシュに使用します。
しかし、何らかの理由でdrawLayer:inContext:
メソッドが呼び出されることはありません。デリゲートメソッドは呼び出されますが、デリゲートがオブジェクトのinitメソッドでactionForLayer:forKey:
適切に設定されていることを意味します。layer.delegate = self
レイヤー描画メソッドdrawLayer:inContext:
が呼び出されない原因について何か提案はありますか?
私は[layer setNeedDisplay]
よく呼ばれます。ですから、それはいくつかの根本的な誤りだと思います。
cocoa - Cocoaで非常に大きなスクロールビューを実装する方法
約15000ピクセルのサイズのビューをCocoaで作成するのが賢明ですか?(もちろん、このビューのごく一部のみが一度に表示されますNSScrollView
)
InterfaceBuilderのサイズには10000ピクセルの制限があります。これは人為的な制限ですか、それともその背後にある正当な理由がありますか?
巨大なビューを作成してNSScrollView
/Quartzに効率的にレンダリングすることを心配させる必要がありますか(私のビューはで要求された領域内にプログラムで描画されますdrawRect
)、または過度のメモリ使用量やその他の問題のリスクがありますか?(たとえば、OS Xはいつでもビュー全体のビットマップをビデオメモリにキャッシュしようとすることができますか?)
objective-c - NSStringはどのくらいの高さと幅を書き込みますか?
NSStringを描画する領域がどれだけの大きさを占めるかを計算するには、次の方法を使用します。
理想的には、文字列が適切に描画される「領域」の間隔を空けることができるように、描画する前にこれを解決する必要があります。
cocoa - メソッドから戻らずにコアプロットを更新するにはどうすればよいですか?
コアプロットを使用するココアインターフェイスがあります。インターフェイスのボタンを押すと、プロットが描画されます。プロットメソッドを複数回呼び出し、その間にsleep()を呼び出して、一連のグラフを作成したかったのです。しかし、データをリロードするための呼び出しが行われたとしても、関数が終了するまで何も起こらないようです(最後のグラフのみが表示されます)。CPAnimationが存在することはわかっていますが、使用を開始する前に、関数が終了するとグラフが更新されるのはどういうことかと思っていました。スリープを使用する代わりに、リフレッシュを処理するスレッドに譲る必要がありますか?
objective-c - Mac OS X で表示 ID を使用して表示名を取得する方法
Mac OS X (10.5) でディスプレイ ID番号を使用して、モニターのディスプレイ名をプログラム的に取得する方法を教えていただけないでしょうか? 要件は、関数に表示 ID を与える場合、代わりに表示名を提供することです (またはその逆)。
表示名は、「カラー LCD」、「SAMSUNG」のようなものです。
ディスプレイ ID は、「69671872」、「893830283」のようになります。
Cocoa のNSScreen (Obj-C)、またはQuartz のCGGetActiveDisplayList (C) を使用すると、モニターのディスプレイ ID 番号を取得できます。どちらも表示名を取得する方法を持っていないようです。大野!NSScreen が表示 ID を取得するためのコードは次のとおりです。
System Profiler、およびSystem Preferencesの Display では、表示 ID ではなく表示名で表示を参照します。
AppleScript を実行したいのですが、表示 ID ではなく表示名が必要です。どんな助けでも大歓迎です!:)
iphone - Simple iPhone drawing app with Quartz 2D
I am making a simple iPhone drawing program as a personal side-project.
I capture touches event in a subclassed UIView and render the actual stuff to a seperate CGLayer. After each render, I call [self setNeedsLayout] and in the drawRect: method I draw the CGLayer to the screen context.
This all works great and performs decently for drawing rectangles. However, I just want a simple "freehand" mode like a lot of other iPhone applications have.
The way I thought to do this was to create a CGMutablePath, and simply:
However, after drawing for more than 1 second, performance degrades miserably.
I would just draw each line into the off-screen CGLayer, if it were not for variable opacity! The less-than-100% opacity causes dots to be left on the screen connecting the lines. I have looked at CGContextSetBlendingMode() but alas I cannot find an answer.
Can anyone point me in the right direction? Other iPhone apps are able to do this with very good efficiency.
iphone - iPhone Quartz CAAnimation の背景
石英アニメーションを使用しているときはいつでも、アニメーションの背景は白です。これを別の色に変更するにはどうすればよいですか。これは、アニメーションを作成するために使用しているコードです
iphone - CGImage のリリース (CGImageRef)
CGImageRef を使用して適切なメモリ管理を行っているかどうかに興味があります。これはいくつかのメソッドを通過しています (これは CG オブジェクトなので、自動解放をサポートしていないと思います)。非 NSObject を使用したメモリ管理と、他の NSObject との相互作用は、私にとってまだ少し新しいものです。
ここで私がやっていること:
CGBitmapContextCreateImage (カウント 1 を保持) を使用してイメージ キャッシュ マネージャー内に CGImageRef を作成し、それを NSMutableDictionary (カウント 2 を保持) に追加しています。
CALayers が画像を使用する場合、レイヤーを削除する前に、layer.contents (retain count +1) で割り当て、layer.contents = nil (retain count -1) でコンテンツをクリアします。
最後に、テクスチャをクリアするときに、CGImageRefRelease と [NSMutableDictionary removeObject] を呼び出して保持カウントを 0 にします。
これは適切な方法ですか?