3

デフォルトのIビームカーソル画像を変更しようとしています。私はを使用して[[[NSCursor IBeamCursor] image] representations]おり、それぞれをCIFilterに通して、新しい画像に追加しています。ただし、結果のカーソルは、低解像度の画像をレンダリングしているように見えます。

高解像度ガイドラインによると:

カスタムカーソルの場合、複数表現のTIFFをNSCursorクラスメソッドに渡すことができますinitWithImage:hotSpot:

だから私はこれがうまくいくと期待しています。さらに、-TIFFRepresentation元の画像と変更した画像を取得してディスクに書き込むと、どちらも同じサイズの画像を含む複数ページのTIFFファイルのように見えます。何が間違っているのでしょうか?

4

3 に答える 3

1

私は少し前に同様の問題を抱えていました.PDFにカーソルがあり、1:1サイズのピクセル画像が拡大されたかのように常に描画されました。NSCursorにはそれに対する解決策があります: Using high resolution cursors with cursor zoom (or retina)

たぶん誰かがそのテクニックを使ってこの問題を解決できるでしょうか? 私の推測では、同じサイズの画像を作成していますが、異なる CTM は同じサイズですが Retina としてマークしています。@jtbrandes が行っていることは、おそらくそれを別のサイズで非 Retina としてマークします。そのため、スケール ファクターの情報が事実上失われています。ヒントに CTM を使用して画像を作成すると、フィルター処理された画像をその画像に描画でき、正しく検出される可能性があります。

于 2015-01-30T23:21:30.647 に答える
1

あなたは正しいです。私はこれを一日中デバッグしてきましたが、うまくいったと確信しています。私はあなたとまったく同じことをしているわけではありません (私の画像はファイルから読み込まれます) が、最終結果はまったく同じです。

秘訣は、複数表現画像の最初の表現を非網膜サイズに設定することです。イメージ ファイルからカーソルをロードしている場合は、表現のサイズを一致するように調整するために、この追加の手順を実行する必要があります。あなたが期待するように、それは「すぐに使える」ものではありません。

2 台のモニターを搭載したマシンでこれをテストしました。ウィンドウを Retina ディスプレイから非 Retina ディスプレイにドラッグすると、カーソルの高/低解像度画像が表示されます。

于 2013-10-22T20:41:01.927 に答える
1

多少一時的な解決策が-setSize:あります。ピクセルの高さと幅を画面の倍率で割って、各画像表現を手動で呼び出します。ただし、この手法は、複数の画面で理想的に機能するようには見えません。

于 2012-08-18T20:32:19.380 に答える