添加图像边框

时间:2012-11-02 14:06:31

标签: objective-c macos cocoa drawing nsimage

好的,这就是我要做的事情:

  • 获取NSImage包含,让我们说一张照片(1000 + x 1000+尺寸)。
  • 让另一个NSImage只包含一个透明背景和一个简单的黑色边框(500x500)。
  • “合并”2张图像,以便生成的图像是带边框的照片。

这是我到目前为止所取得的成就:

NSImage* resultImage = [[[self drop] image] copy];
[resultImage lockFocus];

NSRect newRect = NSMakeRect(0, 0, [[[self drop] image] size].width, [[[self drop] image] size].height);

[[[self drop2] image] drawInRect:newRect  
                        fromRect:NSZeroRect 
                       operation:NSCompositeSourceOver 
                        fraction:1.0];

[resultImage unlockFocus];

[[self drop] setImage:resultImage];

其中[self drop]是包含照片的ImageWell,[self drop2]是包含边框的ImageWell。

事情就是它正在发挥作用。然而,结果图像显然是一个“拉伸”的边界。

Image with Border

我怎么解决这个问题?鉴于原始照片应该具有任何尺寸,我怎样才能使用边框(某些固定尺寸)并仍然避免拉伸?

2 个答案:

答案 0 :(得分:1)

如何直接使用CALayer进行边框处理,例如:

#import <QuartzCore/QuartzCore.h>

CALayer *layer = imageView.layer;
layer.borderColor = [[NSColor blackColor] CGColor];
layer.borderWidth = 10;

答案 1 :(得分:1)

我会这样做。只需根据需要调整图像大小,然后添加边框。您可以通过使用黑色背景的简单视图或合适的图像(假设您希望具有可自定义的图像边框,如框架)来执行此操作,其大小始终保持生成的边框不变。然后,如果需要,您可以从该视图生成新图像。