В каркасе Carbon есть HIThemeBeginFocus()
и HIThemeEndFocus()
, которые позволяют автоматически создавать «сфокусированный» вид любой серии рисунков (например, прямоугольника или фигуры). Требуется Mac OS X 10.5 или более поздняя версия.
При этом используется Core Graphics напрямую. Чтобы найти контекст CG из метода drawRect:
в Какао, вы должны сделать что-то вроде:
NSGraphicsContext* contextMgr = [NSGraphicsContext currentContext];
CGContextRef drawingContext = (CGContextRef)[contextMgr graphicsPort];
Чтобы избежать отсечения, одним из вариантов является использование родительского представления (например, NSBox
без рамки) для дополнительного заполнения. Выполните пользовательский рисунок в месте вставки в родительском представлении, которое не будет обрезано; другими словами, создайте иллюзию, что представление немного меньше, чем фактический прямоугольник.