1

我正在使用 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 像素,因此图像一为 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];

如果有不同的方式来实现这一点,我很乐意看到它。谢谢。

4

0 回答 0