如何在NSImage周围绘制有颜色的边框?

6

我做了一些研究,但所有的答案都是关于iOS的。在OSX应用程序中,如何绘制NSImage周围的彩色边框?我尝试使用NSImage的imageView属性来设置它的边框宽度和颜色,但似乎不起作用...

非常感谢任何形式的帮助!

4个回答

13

即使不创建子类,也可以像这样尝试。您还可以相应地设置宽度和半径:

尝试像这样进行操作,无需创建子类,同样也是可行的。此外,您可以根据需要设置宽度和半径:

[imgView setWantsLayer:YES];
imgView.layer.borderWidth = 1.0;
imgView.layer.cornerRadius = 8.0;
imgView.layer.masksToBounds = YES;
CGColorRef color = CGColorRetain([NSColor colorWithCalibratedRed:0 green:100 blue:0 alpha:0.5f].CGColor);
[imgView.layer setBorderColor:color];

如何为NSImageView设置背景图片,Hussain先生。我尝试在上面的代码中使用[NSColor colorWithPatternImage:...]替换colorWithCalibrated,但似乎不起作用,请帮帮我,谢谢 :) - Eshwar Chaitanya
你为什么要使用colorWithPatternImage? - Hussain Shabbir
@HussainShabbir 我想为NSImageView设置背景图像,我的意思是我有一张字母图片,它应该被包含在一个框(图像)中。我可以在iOS中实现它,但在Mac OS中却很困难,这里是我的实现代码。请帮帮我,谢谢 :) - Eshwar Chaitanya
@HussainShabbir 我解决了我的问题,感谢关心。在返回图像后解锁焦点解决了这个问题 :) - Eshwar Chaitanya

6
您可以创建一个NSView的子类,并按照以下方式进行操作:
- (void)drawRect:(NSRect)dirtyRect
{
    [[NSColor orangeColor] set];

    NSBezierPath *path = [NSBezierPath bezierPath];
    [path appendBezierPathWithRoundedRect:outerFrame xRadius:5 yRadius:5];
    [path setLineWidth:4.0];
    [path stroke];
}

当然,根据您是否需要圆角,更改半径值。


1
Swift 3中:
imagePreview.layer!.borderWidth = 10.0
imagePreview.layer!.cornerRadius = 8.0
imagePreview.layer!.masksToBounds = true
let color: CGColor = NSColor.blue.cgColor
imagePreview.layer!.borderColor = color

0
在 Swift 中:
override func draw(_ dirtyRect: NSRect) {
    // Draw Border
    borderColor.set()
    let borderPath = NSBezierPath(rect: dirtyRect)
    borderPath.lineWidth = 2.0
    borderPath.stroke()
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接