我怎样才能转换NSBezierPath
为CGPath
.
谢谢.
我正在创建一个NSView
具有圆角的子类.此视图是一个容器,其他子视图将添加到其中.我试图获得圆角NSView
以夹住所有子视图的角落,但我无法得到它.
- (void)drawRect:(NSRect)dirtyRect {
NSRect rect = [self bounds];
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:self.radius yRadius:self.radius];
[path addClip];
[[NSColor redColor] set];
NSRectFill(dirtyRect);
[super drawRect:dirtyRect];
}
Run Code Online (Sandbox Code Playgroud)
红色就是例如.如果我在矩形中添加子视图,则角落不会被剪裁:
我怎样才能做到这一点?
我试图将矢量绘图程序中的路径导入到ios环境中.我想让他们进入CGpaths或UIbezierpaths.我最感兴趣的是从adobe illustrator导入路径.最好的方法似乎保存为svg然后导入.
我找到了一些资源来解析导出的描述路径的SVG文件.但是,我发现的一切只涉及绝对路径而不是相对路径.下面的路径有大写字母C和小写字母C. 我知道如何解析大写C(绝对路径),但我不知道如何解析小写c(相对路径)
我正在寻找帮助编写一个解析器,用于将svg文件导入ios/cocoa.我认为通过在互联网上搜索数周来判断这一点非常重要.
这是我想要导入我的iPhone应用程序的路径示例.我不想导入图像,我想要路径本身.所以,我可以操纵它.任何帮助将非常感激.
x="0px" y="0px" width="320px" height="436px" viewBox="-1.4 -0.5 320 436"
d="M294.1,116C290.6,1.4,170.9,0.4,159.6,0.5
C148.3,0.4,28.7,1.4,25.2,116c-3.7,120.3-49.6,141.4-5.9,233.9c41.3,87.4,130.7,87,140.4,86.7c9.7,0.3,99.1,0.8,140.4-86.7
C343.7,257.4,297.8,236.3,294.1,116z
Run Code Online (Sandbox Code Playgroud)
如果这是绝对的路径,我现在就能解决这个问题.它是相对的(即低位(c)路径)真的令我困惑.
我正在开发一个自定义控件.其中一个要求是绘制线条.虽然这有效,但我注意到我的1像素宽线看起来并不像1像素宽线 - 我知道,它们不是像素,但你知道我的意思.它们看起来更像是两个或三个像素宽.当我绘制一条带有1像素短划线和2像素间隙的虚线时,这变得非常明显.1像素破折号实际上看起来像小线而不是点.
我已经阅读了Cocoa Drawing文档,虽然Apple提到了setLineWidth方法,但将线宽更改为小于1.0的值只会使线看起来更模糊而不是更薄.
所以,我怀疑还有其他因素会影响我的线条外观.
有任何想法吗?
我想动画一条弯曲成bezier曲线的直线(从"_"到"n"),是否有一个可以帮助我完成它的库?
我知道如何使用UIBezierPath绘制Bezier曲线,我可以快速重绘并逐步进行转换,但是如果已经做了某些事情就会很酷:-)
我正在尝试使用圆角和投影创建自定义NSView.我创建了一个NSView子类并具有以下drawRect:方法
- (void)drawRect:(NSRect)dirtyRect
{
NSRect rect = NSMakeRect([self bounds].origin.x + 3, [self bounds].origin.y + 3, [self bounds].size.width - 6, [self bounds].size.height - 6);
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:5.0 yRadius:5.0];
[path addClip];
NSShadow *shadow = [[[NSShadow alloc] init] autorelease];
[shadow setShadowColor:[NSColor redColor]];
[shadow setShadowBlurRadius:2.0f];
[shadow setShadowOffset:NSMakeSize(0.f, -1.f)];
[shadow set];
[[NSColor controlColor] set];
NSRectFill(rect);
[super drawRect:dirtyRect];
}
Run Code Online (Sandbox Code Playgroud)
结果是使用圆角绘制的NSView,但没有阴影(但我确实在抗锯齿中看到角落周围的红色色调).如果我注释掉NSBezierPath,那么我将得到一个带阴影的方形NSView.我没有在文档中看到任何暗示NSShadow和NSBezierPath是互斥的,所以我显然遗漏了一些东西.
任何想法都非常感谢!
我想在NSImage上做一个圆角矩形轮廓,我想使用NSBezierPath是最好的方法.然而,我遇到了一个问题:我得到了这个:而不是绘制一条漂亮的曲线:
由于我无法理解的原因,NSBezierPath正在绘制比其余部分颜色更深的圆角部分.
这是我正在使用的代码(在drawRect中:在自定义视图上调用):
NSBezierPath* bp = [NSBezierPath bezierPathWithRoundedRect: self.bounds xRadius: 5 yRadius: 5];
[[[NSColor blackColor] colorWithAlphaComponent: 0.5] setStroke];
[bp stroke];
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
如果我将路径插入0.5,一切都很好.但是,当我将路径偏移10个像素(例如)时,为什么会得到这个?
如果我理解正确的话,它也应该画一条细线......
我有NSBezierPath
一个圆角矩形,但它的角落看起来波涛汹涌,并且在全尺寸观看时显得比其余的笔划更亮.我的代码是:
NSBezierPath *path = [NSBezierPath bezierPath];
[path appendBezierPathWithRoundedRect:NSMakeRect(0, 0, [self bounds].size.width, [self bounds].size.height) xRadius:5 yRadius:5];
NSGradient *fill = [[NSGradient alloc] initWithColorsAndLocations:[NSColor colorWithCalibratedRed:0.247 green:0.251 blue:0.267 alpha:0.6],0.0,[NSColor colorWithCalibratedRed:0.227 green:0.227 blue:0.239 alpha:0.6],0.5,[NSColor colorWithCalibratedRed:0.180 green:0.188 blue:0.196 alpha:0.6],0.5,[NSColor colorWithCalibratedRed:0.137 green:0.137 blue:0.157 alpha:0.6],1.0, nil];
[fill drawInBezierPath:path angle:-90.0];
[[NSColor lightGrayColor] set];
[path stroke];
Run Code Online (Sandbox Code Playgroud)
下面是2个角落的图片(在小图片中不那么明显):
任何人都知道是什么导致了这个?我只是错过了一些东西吗?
谢谢你的帮助
我可以UIBezierPath
使用任何选定的字体和大小生成字符.现在我想在bezier路径之间做一条蚀刻线.我可以获得bezier路径的中心点吗?或者我可以制作中心虚线并沿着那条路走的任何其他方式?
这是我如何做的代码
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 568, 568) cornerRadius:0];
UIBezierPath *circlePath = [self createArcPath];
[path appendPath:circlePath];
[path setUsesEvenOddFillRule:YES];
shapeView = [CAShapeLayer layer];
shapeView.geometryFlipped = false;
shapeView.path = path.CGPath;
shapeView.fillRule = kCAFillRuleEvenOdd;
shapeView.fillColor = [UIColor grayColor].CGColor;
shapeView.opacity = 1.0;
shapeView.lineDashPattern = @[@2, @3];
[self.view.layer addSublayer:shapeView];
CGFloat dashes[] = {2, 3};
[path setLineDash:dashes count:2 phase:0];
- (UIBezierPath *)createArcPath
{
// Create path from text
// See: http://www.codeproject.com/KB/iPhone/Glyph.aspx
// License: The Code Project Open License (CPOL) 1.02 …
Run Code Online (Sandbox Code Playgroud) 是否有可能删除NSBezierPath
由NSRect
路径中的某个区域定义的块?
nsbezierpath ×10
cocoa ×7
objective-c ×4
cgpath ×2
drawing ×2
ios ×2
nsview ×2
uibezierpath ×2
bezier ×1
clipping ×1
iphone ×1
nsshadow ×1
stroke ×1
svg ×1