Рисование прозрачных изображений - PullRequest
1 голос
/ 08 июня 2011

Я создал пользовательский вид для кнопки, так как мне нужно реализовать подсветку при наведении курсора мыши. Класс очень прост, и я уже реализовал mouseEntered: и mouseExited:. Представление было зарегистрировано для отслеживания в методе init (не уверен, что это лучшее место).

Проблема в рисовании. Я держу ivar mouseOver, для мыши вводим YES, а для мыши NO. Другой ивар для изображения называется image. Разница между наведением мыши или нет, когда дело доходит до рисования, заключается в прозрачности. Вот мой drawRect::

- (void)drawRect:(NSRect)dirtyRect
{
    [image drawAtPoint:NSMakePoint(0.0,0.0)
              fromRect:dirtyRect
             operation:NSCompositeCopy
              fraction:((mouseOver) ? 1.0 : 0.0)];
}

Работает красиво, но, видимо, только когда мышь впервые вошла. Я предполагаю, что проблема в том, что вид не очищается до рисования другого изображения. Я попытался добавить:

[[NSColor clearColor] set];
NSRectFillUsingOperation(dirtyRect, NSCompositeClear);

Но безуспешно. Как я могу это исправить?

1 Ответ

0 голосов
/ 08 июня 2011

[NSColor clearColor] - чисто прозрачный цвет. Возможно, вы захотите заполнить, используя цвет с некоторой непрозрачностью, например, скажем, [NSColor whiteColor].

...