即时创建模式?

Jay*_*Jay 3 cocoa core-graphics

有没有办法在Cocoa中动态创建彩色填充图案?

特别是代替使用来自图像文件的固定模式

NSColor *fillPattern = [NSColor colorWithPatternImage:patternImage];
Run Code Online (Sandbox Code Playgroud)

我想通过在运行时动态选择适当的颜色来创建模式.背景是通过在其上面呈现"相反"颜色的条纹或正方形来突出显示彩色对象 - 在这种情况下可能意味着相反的情况,但这是一个不同的故事.

应用于绘图应用程序中潜在的数百个对象,它需要是一个相当快速的方法,所以我想只是在patternImage中交换颜色将不够好.

(它确实在QuickDraw中工作得很好..!)

Rob*_*ger 5

为什么不直接绘制到内存中的图像并将其用于您的模式?

NSImage* patternImage = [[NSImage alloc] initWithSize:someSize];
[patternImage lockFocus];
//draw your pattern
[patternImage unlockFocus];
NSColor* patternColor = [NSColor colorWithPatternImage:patternImage];
//do something with the pattern color
//remember to release patternImage if you're not using ARC
Run Code Online (Sandbox Code Playgroud)

在性能方面,你通常应该注意优化绘图,注意传入的矩形,drawRect:并确保你只画出必要的东西.如果你这样做,那么我看不出图案绘制性能是一个主要问题.