嗨, 我有一个大的图像,然后即时通过提取所述图像的一部分的:NSImage中坐标
[mBaseImage lockFocus];
NSBitmapImageRep* bitmapImageRep = [[NSBitmapImageRep alloc] initWithFocusedViewRect: NSMakeRect(startX,startY,width,height)];
[mBaseImage unlockFocus];
后跟:
extractedImage = [[NSImage alloc] initWithSize:[bitmapImageRep size]];
[extractedImage addRepresentation:bitmapImageRep];
其中extractedImage NSImage中是*。
后来而我试图绘制使用NSDrawNinePartImage的extractedImage,我意识到,虽然我在http://www.karlkraft.com/index.php/2007/11/14/nsdrawninepartimage/ 指定以下的例子中的9份我意识到,当我指定0,0它显示的左上handcorner图像,这意味着0,0是左上角而不是左下角,如链接中的示例所示。我尝试设置setFlipped,但它似乎只是翻转图像。有没有人有任何想法如何我可以将坐标回到0,0在左下角?
哦,我忘了提及我使用图像作为按钮,所以它作为NSButton呈现。
问候, 汉
你是什么意思“它是作为一个NSButton呈现”?无法将NSImage放入视图层次结构中,那么您对图像执行的操作是什么,以及“NSDrawNinePartImage”调用的对象是什么? – 2010-10-11 08:23:31
哦对不起。这是一个自定义NSButton的一部分。自定义的NSButton可以有一个NSImage。 drawRect被覆盖以包含[image drawInRect:....];以便在显示按钮时绘制图像。在drawInRect函数中,检查是否设置了标志useTile,如果是,则drawInRect将调用函数drawWithTiles并在将9张图像传递给NSDrawNinePartImage之前对用户定义的图像进行适当分割。 – han 2010-10-11 08:52:44
您正在遵循的示例将在分辨率无关的非整数比例因子下失败。 : - 请处理您在网上发现的怀疑代码。它应该使用NSBitmapImageRep作为目标切片而不是NSImage,因为该代码特别与像素绑定。 – Ken 2010-10-11 19:40:03