2013-10-08 2 views
17

OSXでは、ユーザー補助機能のシステム設定を使用してマウスカーソルをズームすることができます。 Lion(私は思う)から、OSXはカーソルをPDFとして保存し、円滑にサイズを変更することができます。私のアプリケーションで同じ機能が欲しいが、NSImageとして使用されているNSCursorは、1.0より大きいカーソルズームレベルが設定されているときにレンダリングされたビットマップを拡大/縮小するだけでPDFを使用したい。私のカーソルのNSCursor:カーソルズーム(または網膜)で高解像度カーソルを使用する

  • 利用ベクトルアートワークと、それらは、カーソルが行うシステムのように正常に拡張している:

    はどのようにしていますか?

  • 現在のカーソルのズームレベルを検出します。
  • カーソルのズームレベルが変更されたときに通知を受け取りますか?

また、画面にHiDPIモードを使用してカーソルのズーム設定を元に戻すと、PDFカーソルもぼやけてしまいます。

+0

これらの質問は何か見つかりましたか? –

+1

これは私が回答のための賞金を授与しようとしたが、まだ答えが無かったのは2回目です...私はオプションがありません。 –

+0

OK ...あまりにも悪い:( –

答えて

3

私はちょうど解決策を@kongtomorrowによって私に言いました。

NSImage * theImage = [NSImage imageNamed: @"CURS_128.pdf"]; 

NSImage *resultImage = [[NSImage alloc] initWithSize:[theImage size]]; 

for (int scale = 1; scale <= 4; scale++) { 
    NSAffineTransform *xform = [[NSAffineTransform alloc] init]; 
    [xform scaleBy:scale]; 
    id hints = @{ NSImageHintCTM: xform }; 
    CGImageRef rasterCGImage = [theImage CGImageForProposedRect:NULL context:nil hints:hints]; 
    NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initWithCGImage:rasterCGImage]; 
    [rep setSize:[theImage size]]; 
    [resultImage addRepresentation:rep]; 
} 

NSCursor* theCursor = [[NSCursor alloc] initWithImage: resultImage hotSpot: NSMakePoint(12,8)]; 
[self.scrollView setDocumentCursor: theCursor]; 

だから、基本的にこれが何をするか、元のPDFに基づいて、画像内の適切なスケールファクタで、いくつかの画像表現を生成している:ここで彼は私を送っ抜粋です。これは私のために働く、私のカーソルは素敵で滑らかです。

関連する問題