2016-06-06 3 views
1

я пишу окно и два вида, набор цвет фона окна в синий, и нарисовать изображение в view1, и заполнить view2 цветом с альфа-, как это:Использовать цвет с альфа-заполнением NSView?

// AppDelegate

[self.window setLevel:(NSStatusWindowLevel + 2)]; 
TestView *view1 = [[TestView alloc] initWithFrame:NSMakeRect(0, 0, self.window.frame.size.width, self.window.frame.size.height)]; 

TestView2 *view2 = [[TestView2 alloc] initWithFrame:NSMakeRect(0, 0, self.window.frame.size.width, self.window.frame.size.height)]; 


[self.window setContentView:view1]; 
[self.window.contentView addSubview:view2]; 

// View1

- (void)drawRect:(NSRect)dirtyRect { 
[super drawRect:dirtyRect]; 

// Drawing code here. 
NSImage *image = [NSImage imageNamed:@"testImage"]; 
[image drawInRect:dirtyRect]; 
} 

// view2 - (недействительными) DrawRect: (NSRect) dirtyRect { [супер DrawRect: д irtyRect];

// Drawing code here. 
[[[NSColor redColor] colorWithAlphaComponent:0.5] set]; 
NSRectFill(dirtyRect); 
} 

Но когда приложение запуска, я обнаружил, что в BackgroundColor окна и изображения View1 не показывают, только VIEW2 шоу, и он прозрачен, через него можно видеть на рабочем столе.

Если я не добавил subview view2, приложение работает правильно, синий цвет фона и изображение.

Кто-нибудь знает, почему, действительно спасибо за помощь, я буду ждать в режиме онлайн.

ответ

2

изменить NSRectFill к

NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver); 

Затем поворачивает вправо.

Смежные вопросы