我試圖顯示一個32位的α通道的圖像,4個在我的窗口引導圖像。圖像中的第四個通道是一個alpha通道。作爲一個實驗,我創建了一個完全紅色的圖像,其中每個像素的RGB值爲:255,0,0。對於每一個像素我還加204顯示與在OSX
alpha值我期望看到什麼是有一些透明度完全紅色的形象,但我所看到的卻是與改變的價值觀完全不透明的圖像。
代碼我使用:
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類型
你的窗口的alpha值是100%(1.0),所以嘗試設置爲80%'[m_NSWindow setAlphaValue:0.8];'... –
哦,不,但會爲所有的像素。雖然,現在我使用的是恆定的alpha值,但我最終希望使用每像素的alpha值。 – TheBlueNotebook
你的例子顯示了它的整個窗口,所以如果你想在圖像本身,然後在那裏設置阿爾法。 –