gpt4 book ai didi

objective-c - NSImageView圆角+描边

转载 作者:太空狗 更新时间:2023-10-30 03:44:39 29 4
gpt4 key购买 nike

我有子类 NSImageView,我想用圆角画一个边框。它可以工作,但我还需要剪掉图像的角。

请看我的截图:

enter image description here

我创建了这段代码来绘制边框/角。

- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];

NSColor *strokeColor;
if(self.isSelected)
strokeColor = [NSColor colorFromHexRGB:@"f9eca2"];
else
strokeColor = [NSColor colorFromHexRGB:@"000000"];

[strokeColor set];
[[NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 1, 1) xRadius:5 yRadius:5] stroke];
}

我应该怎么做才能制作图像剪辑?

编辑:

好吧,我修复了它,但我觉得这样做很丑陋。有什么更聪明的吗?

新代码:

- (void)drawRect:(NSRect)dirtyRect
{
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 2, 2) xRadius:5 yRadius:5];

[path setLineWidth:4.0];
[path addClip];

[self.image drawAtPoint: NSZeroPoint
fromRect:dirtyRect
operation:NSCompositeSourceOver
fraction: 1.0];

[super drawRect:dirtyRect];

NSColor *strokeColor;
if(self.isSelected)
{
strokeColor = [NSColor colorFromHexRGB:@"f9eca2"];
}
else
strokeColor = [NSColor colorFromHexRGB:@"000000"];

[strokeColor set];
[NSBezierPath setDefaultLineWidth:4.0];
[[NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 2, 2) xRadius:5 yRadius:5] stroke];
}

最佳答案

NSImageView 层的角半径也设置为 5 px,并将其 maskToBounds 属性设置为 YES

关于objective-c - NSImageView圆角+描边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9554298/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com