我正在使用NSView子视图的drawRect将纹理图集加载到我的应用程序中:
NSImage *imageFromBundle = [NSImage imageNamed:@"sheet1.png"];
[self setNeedsDisplay:YES];
NSSize isize = [imageFromBundle size];
[imageFromBundle drawInRect:[self bounds] fromRect:NSMakeRect(0.0, 0.0, isize.width, isize.height) operation: NSCompositeCopy fraction:1.0];
这很好但显示整个纹理图集。如何分区图像的特定部分?图像是1800x1200像素,每个图像是180x250像素,因此图像1将是x = 0,y = 0,w = 180,h = 250,两个将是x = 180,y = 0,w = 180,h = 250等等。
我尝试在上面更改x,y,w,h,但我的输出只是一个黑色图像。任何帮助将不胜感激。
编辑:解决了它,虽然我不确定这是否正确:
我将文件更改为1100x1100(这对解决方案没有影响,但会反映在答案中,所以我想注意它。然后我只是针对图像的错误区域(x,y)并传递目标大小错误。新代码如下:
[imageFromBundle drawInRect:[self bounds] fromRect:NSMakeRect(0.0, 950.0, 175.0, 250.0) operation: NSCompositeCopy fraction:1.0];
如果有不同的方式来实现这一点,那就很乐意看到它。感谢。