填充颜​​色和背景颜色之间的差异

时间:2013-10-30 12:17:18

标签: c++ objective-c macos cocoa winapi

我正在将应用程序从Windows移植到Mac OS X.在这里,我对使用不同术语感到困惑。

在Windows上,我们使用SetBkColor设置设备上下文的背景颜色。

在Mac OS X上,setFill设置填充颜色。

Windows的这种背景颜色与Mac OS X的填充颜色有什么区别吗?

对于笔画清除(按setStroke),我认为在Windows上,行CreatePen和文本SetTextColor的效果相同。这个概念还可以吗?

1 个答案:

答案 0 :(得分:1)

iOS / Mac OS上的本机Windows开发和Core Graphics都使用绘图的所谓“画家模型”。就像真正的绘画一样,你为你的钢笔或画笔选择一种颜色,你绘制的所有内容,填充,你从那一点开始直到你改变它将使用那种颜色。在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具有非常可比性,并且在我看来更丰富的绘图功能。 (以上示例来自本指南)

https://developer.apple.com/library/mac/documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_context/dq_context.html