私のウィンドウに32ビット、4チャンネルの画像を表示しようとしています。画像の4番目のチャンネルはアルファチャンネルです。実験として、完全に赤のイメージを作成します。各イメージのピクセルはRGB値255,0,0です。各ピクセルについて、私は204のアルファ値も追加します。OSXでアルファチャンネル付きの画像を表示
私が期待していたのは完全な赤のイメージでしたが、代わりに値が変更された完全に不透明なイメージです。
私が使用していますコード:
NSRect windowRect = {0,0,200,200};
m_NSWindow = [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
[m_NSWindow setTitle:@"overlayWindow"];
[m_NSWindow makeKeyAndOrderFront:nil];
g_imageView = [[NSImageView alloc] initWithFrame:NSMakeRect(0,0,200,200)];
[m_NSWindow.contentView addSubview:g_imageView];
[m_NSWindow setOpaque:NO];
[m_NSWindow setAlphaValue:1.0];
NSBitmapImageRep* imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:nil
pixelsWide:200
pixelsHigh:200
bitsPerSample:8
samplesPerPixel:4
hasAlpha:YES
isPlanar:NO
colorSpaceName:NSDeviceRGBColorSpace
bitmapFormat:NSAlphaNonpremultipliedBitmapFormat
bytesPerRow:(200*4)
bitsPerPixel:32];
memcpy(imageRep.bitmapData,m_paintBuffer.data,160000);
NSSize imageSize = NSMakeSize(200,200);
NSImage* myImage = [[NSImage alloc] initWithSize: imageSize];
[myImage addRepresentation:imageRep];
[g_imageView setImage:myImage];
m_paintBuffer.data
ポイントの画像のための生のピクセルデータへの出力期待
。 質問に関連しているかどうかわからないが、m_paintBufferはOpenCVのMatタイプである
ウィンドウのアルファ値が100%(1.0)なので、80%に設定してみてください。[m_NSWindow setAlphaValue:0.8]; ... –
ああ、ピクセル。今は一定のアルファ値を使用していますが、最終的にはピクセル単位のアルファ値を使用したいと考えています。 – TheBlueNotebook
あなたの例ではウィンドウ全体で表示されているので、イメージ自体に表示したい場合はそこにアルファを設定します。 –