Mam podklas NSImageView i chcę narysować obramowanie z zaokrąglonymi narożnikami. Działa, ale muszę również spiąć narożniki obrazu.NSImageView zaokrąglone rogi + skok
Proszę zobaczyć mój zrzut ekranu:
stworzyłem ten kod wyciągnąć granicy/narożniki.
- (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];
}
Co należy zrobić, aby klip wideo?
EDIT:
Dobrze Naprawiłem to, ale czuję Jego brzydki sposób to zrobić. Coś mądrzejszego?
NOWY KOD:
- (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' nie posiada' własność clipsToBounds' - To nie NS ImageView UI. – SteveF
Dlaczego co druga osoba na stackoverflow zakłada obiektywny kod c == iOS? – strange
, jeśli przeczytałeś uważnie odpowiedź, którą zobaczysz, mówi o warstwie widoku obrazu, która ma właściwość clipToBounds nawet w AppKit. EDYCJA: nie zapomnij włączyć warstwy przy użyciu '- [NSView setWantsLayer: YES]' – dvkch