2016-06-06 21 views
1

Ich schreibe ein Fenster und zwei Ansichten, Set Hintergrundfarbe des Fensters zu blau, und ein Bild in view1 ziehen, und fülle view2 mit einer Farbe mit alpha, wie folgt aus:Verwenden Sie Farbe mit Alpha Fill 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]; 

// Ansicht1

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

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

// view2 - (void) drawRect: (NSRect) dirtyRect { [super drawRect: d yryRect];

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

Aber wenn die App laufen, ich fand ich die Hintergrundfarbe des Fensters und das Image von Ansicht1 nicht zeigen, nur die view2 Show, und es ist transparent, durch den Desktop zu sehen.

Wenn ich Subview View2 nicht hinzugefügt habe, wird die App korrekt ausgeführt, die blaue Hintergrundfarbe und das Bild.

Weiß jemand warum, wirklich danke für die Hilfe, ich werde online warten.

Antwort

2

ich ändern, um die NSRectFill zu

NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver); 

Dann dreht es richtig.

Verwandte Themen