2016-05-15 11 views
1

私のウィンドウに32ビット、4チャンネルの画像を表示しようとしています。画像の4番目のチャンネルはアルファチャンネルです。実験として、完全に赤のイメージを作成します。各イメージのピクセルはRGB値255,0,0です。各ピクセルについて、私は204のアルファ値も追加します。OSXでアルファチャンネル付きの画像を表示

私が期待していたのは完全な赤のイメージでしたが、代わりに値が変更された完全に不透明なイメージです。 enter image description here

電流出力: enter image description here

私が使用していますコード:

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タイプである

+0

ウィンドウのアルファ値が100%(1.0)なので、80%に設定してみてください。[m_NSWindow setAlphaValue:0.8]; ... –

+0

ああ、ピクセル。今は一定のアルファ値を使用していますが、最終的にはピクセル単位のアルファ値を使用したいと考えています。 – TheBlueNotebook

+0

あなたの例ではウィンドウ全体で表示されているので、イメージ自体に表示したい場合はそこにアルファを設定します。 –

答えて

1

ウィンドウのコンテンツビューは、ウィンドウのコンテンツの全体ではありません。境界線のないウィンドウであっても、コンテンツビューを囲み、含むテーマビューがあります。

特に、ウィンドウの背景色は明るい灰色です。これはあなたのコンテンツビューの背後に描画され、不透明です。ただし、ウィンドウのbackgroundColorプロパティをたとえば[NSColor clearColor]に設定することで変更できます。それがあなたが望む効果を達成するためにすべきことです。

+0

Windowsの背景から来て、私はテーマビューの存在を考えていませんでした。それをclearColorに設定することは、本当に欠けていた部分でした。 – TheBlueNotebook

関連する問題