0

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

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

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

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

对于 stroke clear (by setStroke),我认为在 Windows 上,通过CreatePenfor lines 和SetTextColorfor texts 可以达到相同的效果。这个概念好吗?

4

1 回答 1

1

原生 Windows 开发和 iOS/Mac OS 上的 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

于 2013-10-30T14:03:14.930 回答