4

まずNSBezierPath、アプリで単純なボタン アートワークを描画するために使用したいので、 を作成しNSBitmapImageRep、 を取得し、そこから をCGImage作成してNSImageから、ボタンで setImage: を呼び出す必要があると考えます。私が間違っている場合は修正してください。

そこで、 を作成する方法を見に行ったNSBitmapImageところ、次のことがわかりました。 **initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:**

うわあ。

私が探していたのは のラインに沿ったものであったことを念頭initWithSize:に置いて、それらの値に何を入力すればよいでしょうか?

4

3 に答える 3

3

データ プレーンにスペースを割り当てる必要はありません。NSBitmapImageRep以下は、アルファ コンポーネントを使用して空の 32 ビットを作成する呼び出しです。

NSBitmapImageRep *newRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
                                                                   pixelsWide:pixelsWide
                                                                   pixelsHigh:pixelsHigh
                                                                bitsPerSample:8
                                                              samplesPerPixel:4
                                                                     hasAlpha:YES
                                                                     isPlanar:NO
                                                               colorSpaceName:NSDeviceRGBColorSpace
                                                                   bytesPerRow:4 * pixelsWide
                                                                  bitsPerPixel:32];
于 2014-08-05T06:13:54.520 に答える
1

NSImage描画コードを次のようなフォーカス ロックで囲むことによって、単純に新しいものを作成してそこに描画するわけではない特定の理由

NSImage* anImage = [[NSImage alloc] initWithSize:NSMakeSize(100.0,  100.0)];
[anImage lockFocus];

// Do your drawing here...

[anImage unlockFocus];

( Cocoa Drawing Guideはあなたの友達です)

于 2014-08-05T05:57:09.823 に答える