2014-01-12 2 views
0

Я хочу нарисовать фон изображения в NSView и поместить некоторые элементы, которые также имеют прозрачный фон поверх него.Нарисовать фон изображения в NSView под прозрачными элементами

Я перекрытая раздаточный прямоугольник из NSView:

- (void)drawRect:(NSRect)rect 
{ 
[NSGraphicsContext saveGraphicsState]; 

NSImage *image = [NSImage imageNamed:@"header_background.gif"]; 

[image drawInRect:CGRectMake(0, rect.size.height - 75, rect.size.width, 75) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; 

[NSGraphicsContext restoreGraphicsState]; 
} 

NSWindow INIT:

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag 
{ 
self = [super initWithContentRect:contentRect styleMask:aStyle backing:bufferingType defer:flag]; 
if (self) { 
    [self setOpaque:NO]; 
    [self setHasShadow:YES]; 
    [self setBackgroundColor:[NSColor clearColor]]; 
} 

return self; 
} 

После этого a've получил такой странный эффект. Фоны слайдеров и кнопок также мигают иногда enter image description here

Что я делаю неправильно?

ответ

1

Ну, во-первых, ваш «цвет» игнорируется при рисовании изображений, так что это ничего не делает. Во-вторых, код, который я вижу здесь, вероятно, не вызывает проблемы, можете ли вы опубликовать остальную часть файла?

Прямо сейчас я подозреваю, что, возможно, вы отметили это представление как непрозрачное, когда это не так, или что у вас есть что-то еще странное в вашей иерархии взглядов.

+0

Благодарим за отзыв. Я обновил первый пост до текущего состояния. Проблема все еще здесь. Кстати, когда я изменяю размер окна, фон элементов становится нормальным (не прозрачным). Но когда они обновляются, проблема появляется снова. –

+0

Итак, похоже, что элементы игнорируют мой фон, нарисованный в NSView. –

+0

Почему вы вызываете setOpaque: НЕТ в окне? Вы пытаетесь сделать окно совершенно ясным? Как насчет заголовка? –

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