NSImage-drawAtPoint:绘图太小
我用这个来组合2幅NSIMAGE:NSImage-drawAtPoint:绘图太小,image,macos,cocoa,merge,Image,Macos,Cocoa,Merge,我用这个来组合2幅NSIMAGE: newImage = [[NSImage alloc] initWithSize:NSMakeSize(size1.width, size1.height + size2.height)]; [newImage lockFocus]; [firimage drawAtPoint:NSMakePoint(0, 0) fromRect:
newImage = [[NSImage alloc] initWithSize:NSMakeSize(size1.width,
size1.height + size2.height)];
[newImage lockFocus];
[firimage drawAtPoint:NSMakePoint(0, 0)
fromRect:NSMakeRect(0, 0, size1.width, size1.height)
operation:NSCompositeSourceOver
fraction:1.0];
[secimage drawAtPoint:NSMakePoint(0, size1.height)
fromRect:NSMakeRect(0, 0, size2.width, size2.height)
operation:NSCompositeSourceOver
fraction:1.0];
[newImage unlockFocus];
它会生成大小合适的图像(2个100x63图像会生成一个100x126图像),但两个单独的图像绘制得太小,因此生成的图像大部分为空白:
以下是原始图像:
正如我在评论中所说,使用
-drawInRect:fromRect:operation:fraction
解决了这个问题 我看你已经解决了。在使用您的代码时,我得到了类似的奇怪结果。所以我开始认为我并不真正理解这些方法
我通常总是使用-drawInRect:fromRect:operation:fraction
,虽然我不是100%了解这两个矩形对结果的影响,但我总能得到我需要的结果
无论如何,我离开了,制作了一个小玩具应用程序来展示交互修改矩形的效果(根据您的问题使用两个图像)
,您可能想看看。您的目标系统是什么?您知道,
compositeToPoint:
在OSX10.6+中已被弃用?您可以显示使用NSBitmapImageRep的代码吗?它没有弃用,但您是对的,我不应该使用它。检查-您应该使用DrawAtPoint:fromRect:operation:fraction:或DrawInRect:fromRect:operation:fraction:“如果您正在编写新代码或更新旧代码,则应避免使用此方法。相反,您应该使用drawAtPoint:fromRect:operation:fraction:或drawInRect:fromRect:operation:fraction:方法来绘制图像。尽管该方法本身没有遭到反对,但不建议将其提供的行为用于一般用途。”注意,要绘制整个图像,可以使用NSZeroRect
的fromRect
而不是NSMakeRect(0,0,size1.width,size1.height)
。