我正试图在那里制作一个透明的NSWindow。
我正在尝试使用透明窗口绘制圆角视图。
这就是现在的样子:(见角落里的小点)
这是边框半径设置为10px的另一个示例(在NSView drawRect中设置):
我正在使用此Apple示例中的代码:https://developer.apple.com/library/mac/#samplecode/RoundTransparentWindow/Introduction/Intro.html
具体在我的NSWindow子类中的这个方法:
- (id)initWithContentRect:(NSRect)contentRect
styleMask:(NSUInteger)aStyle
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)flag {
// Using NSBorderlessWindowMask results in a window without a title bar.
self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
if (self != nil) {
// Start with no transparency for all drawing into the window
[self setAlphaValue:1.0];
// Turn off opacity so that the parts of the window that are not drawn into are transparent.
[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]];
}
return self;
}
这在我的NSView子类中:
- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor redColor] set];
NSBezierPath* thePath = [NSBezierPath bezierPath];
[thePath appendBezierPathWithRoundedRect:dirtyRect xRadius:3 yRadius:3];
[thePath fill];
}
谁能告诉我这里缺少什么?
感谢。
答案 0 :(得分:3)
不确定这是否是您正在寻找的东西,但Matt Gemmell有一个名为MAAttachedWindow的优秀课程,可以在这里找到:http://mattgemmell.com/2007/10/03/maattachedwindow-nswindow-subclass/
虽然我需要做一个“浮动”弹出窗口并配置透明度,边框半径,如果需要,甚至可以为上下文添加一个小箭头,但它仍然适合我。我一直都在使用它。
答案 1 :(得分:3)
您是否正在寻找以下内容,其中有红色轮廓(笔划),但中心区域是透明的?
如果是这样,为了达到这个目的,我使用了以下代码:
- (void)drawRect:(NSRect)frame {
frame = NSInsetRect(self.frame, 3.0, 3.0);
[NSBezierPath setDefaultLineWidth:6.0];
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:frame
xRadius:6.0 yRadius:6.0];
[[NSColor redColor] set];
[path stroke];
}
如果您正在寻找,那么您可以将其作为起点。你需要确保将frame
矩形插入笔划线宽的一半,以避免像你看到的那样剪裁角落的问题。