1

好的,这就是我想要做的:

  • 获取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]包含照片[self drop2]的 ImageWell 和包含边框的 ImageWell在哪里。

问题是它正在工作。然而,生成的图像 - 很明显 - 显示出有点“拉伸”的边界。

带边框的图像

我该如何解决?鉴于原始照片应该是任何尺寸,我怎样才能使它使用边框(某些固定尺寸)并且仍然避免拉伸?

4

2 回答 2

1

直接用 做边界怎么样CALayer,例如:

#import <QuartzCore/QuartzCore.h>

CALayer *layer = imageView.layer;
layer.borderColor = [[NSColor blackColor] CGColor];
layer.borderWidth = 10;
于 2012-11-02T14:18:24.010 回答
1

我会以不同的方式做到这一点。只需根据需要调整图像大小,然后添加边框。您可以通过具有黑色背景的简单视图或合适的图像(假设您想要具有可自定义的图像边框,如框架)来做到这一点,其大小始终保持结果边框不变。然后,如果需要,您可以从该视图生成新图像。

于 2012-11-02T14:18:59.340 回答