标签: nsbezierpath

如何将NSBezierPath转换为CGPath

我怎样才能转换NSBezierPathCGPath.

谢谢.

cocoa cgpath nsbezierpath

31
推荐指数
6
解决办法
2万
查看次数

NSView上的圆角矩形剪辑所有包含子视图

我正在创建一个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)

红色就是例如.如果我在矩形中添加子视图,则角落不会被剪裁: 在此输入图像描述

我怎样才能做到这一点?

cocoa clipping rounded-corners nsview nsbezierpath

15
推荐指数
3
解决办法
1万
查看次数

如何将SVG导入/解析为UIBezierpaths,NSBezierpaths,CGPaths?

我试图将矢量绘图程序中的路径导入到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)路径)真的令我困惑.

iphone svg cgpath nsbezierpath

14
推荐指数
1
解决办法
2万
查看次数

如何使用NSBezierPath获得1像素线?

我正在开发一个自定义控件.其中一个要求是绘制线条.虽然这有效,但我注意到我的1像素宽线看起来并不像1像素宽线 - 我知道,它们不是像素,但你知道我的意思.它们看起来更像是两个或三个像素宽.当我绘制一条带有1像素短划线和2像素间隙的虚线时,这变得非常明显.1像素破折号实际上看起来像小线而不是点.

我已经阅读了Cocoa Drawing文档,虽然Apple提到了setLineWidth方法,但将线宽更改为小于1.0的值只会使线看起来更模糊而不是更薄.

所以,我怀疑还有其他因素会影响我的线条外观.

有任何想法吗?

cocoa nsbezierpath

14
推荐指数
4
解决办法
5165
查看次数

IOS:从线到Bezier曲线的动画转换

我想动画一条弯曲成bezier曲线的直线(从"_"到"n"),是否有一个可以帮助我完成它的库?

我知道如何使用UIBezierPath绘制Bezier曲线,我可以快速重绘并逐步进行转换,但是如果已经做了某些事情就会很酷:-)

bezier core-graphics ios nsbezierpath uibezierpath

13
推荐指数
1
解决办法
8503
查看次数

自定义NSView具有圆角和阴影

我正在尝试使用圆角和投影创建自定义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是互斥的,所以我显然遗漏了一些东西.

任何想法都非常感谢!

cocoa objective-c nsview nsbezierpath nsshadow

11
推荐指数
1
解决办法
9987
查看次数

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个像素(例如)时,为什么会得到这个?

在此输入图像描述

如果我理解正确的话,它也应该画一条细线......

cocoa drawing objective-c nsbezierpath

11
推荐指数
1
解决办法
3552
查看次数

NSBezierPath圆角矩形有坏角

我有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个角落的图片(在小图片中不那么明显):

角落

任何人都知道是什么导致了这个?我只是错过了一些东西吗?

谢谢你的帮助

cocoa stroke nsbezierpath

9
推荐指数
1
解决办法
4570
查看次数

获取UIBezier路径的中心点

我可以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)

objective-c ios nsbezierpath uibezierpath

9
推荐指数
1
解决办法
2335
查看次数

从NSBezierPath中剪切出一个矩形

是否有可能删除NSBezierPathNSRect路径中的某个区域定义的块?

cocoa drawing objective-c nsbezierpath

7
推荐指数
2
解决办法
2715
查看次数