Я переношу приложение из Windows в Mac OS X. Здесь у меня есть одна путаница между использованием разных терминов.
В Windows мы используем SetBkColor
для установки цвета фона контекста устройства.
В Mac OS X есть setFill
чтобы установить цвет заливки.
Есть ли разница между этим фоновым цветом Windows и цветом заливки Mac OS X?
Для удаления штрихов (с помощью setStroke
), я думаю, что в Windows такой же эффект достигается CreatePen
для строк и SetTextColor
для текстов. Эта концепция в порядке?
Как для собственной разработки Windows, так и для Core Graphics на iOS/Mac OS используется так называемая "малярная модель" рисования. Как и в реальной картине, вы выбираете цвет для своего пера или кисти, а также все, что вы рисуете, заполняете, что имеете с этого момента, пока вы не измените его, он будет использовать этот цвет. На Mac, более конкретно, вы устанавливаете штрих для таких вещей, как текст и границы, и заполняет для заполняемых методов. Вы должны устанавливать каждый отдельно, поскольку каждый выполняет что-то другое.
SetBkColor будет отличаться, потому что он заполняется в фоновом режиме, на Mac или iOS, вместо этого вы должны установить цвет заливки, а затем использовать метод рисования для заполнения прямоугольника - и обычно это все будет сделано путем переопределения метода drawRect вида. Например, здесь один из способов сделать это:
- (void)drawRect:(NSRect)rect
{
CGContextRef myContext = [[NSGraphicsContext currentContext] graphicsPort];
// ********** Your drawing code here **********
CGContextSetRGBFillColor (myContext, 1, 0, 0, 1); // set my 'brush color'
CGContextFillRect (myContext, CGRectMake (0, 0, 200, 100 )); // fill it
CGContextSetRGBFillColor (myContext, 0, 0, 1, .5); // set my brush color
CGContextFillRect (myContext, CGRectMake (0, 0, 100, 200)); //fill it
}
Рисование выполняется до начала, поэтому, если вы хотите установить фон в определенный цвет, вы просто сделаете это первой операцией и заполните полный прямоугольник окна/вида любым другим цветом.
Взгляните на двумерный чертежный инструмент Quartz 2D для получения дополнительных примеров. Если вы приходите из Windows, вы найдете, что Quartz/Core Graphics имеет очень сопоставимые и, на мой взгляд, богаче набор возможностей рисования. (Приведенный выше пример из этого руководства)