- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在画几个CGPaths
在iPad 上的drawRect 方法中的Cocoa View 中。我开始将它们直接绘制到 UIGraphicsGetCurrentContext()
上下文,但是当我的路径变得很长时,性能就会下降。基于several其他问题,我开始研究使用 CGLayer
s。
所以我现在要做的是在 CGContextRef
内部渲染一条路径我通过调用CGLayerGetContext
得到。这是我正在做的事情的基本概述:
// rect comes from the drawRect: method
layer = CGLayerCreateWithContext(context, rect.size, NULL);
layerContext = CGLayerGetContext(layer);
CGContextSetLineCap(layerContext, kCGLineCapRound);
// Set the line styles
CGContextSetLineJoin(layerContext, kCGLineJoinRound);
CGContextSetLineWidth(layerContext, 1.0);
CGContextSetStrokeColorWithColor(layerContext, [UIColor blackColor].CGColor);
// Create a mutable path
path = CGPathCreateMutable();
// Move to start point
//...
for (int i = 0; i < points.count; i++) {
// compute controlPoint and anchorPoint
//...
CGPathAddQuadCurveToPoint(path,
nil,
controlPoint.x,
controlPoint.y,
anchorPoint.x,
anchorPoint.y);
}
// Stroke the path
CGContextAddPath(layerContext, path);
CGContextStrokePath(layerContext);
// Add the layer to the main context
CGContextDrawLayerAtPoint(context, CGPointZero, layer);
现在,我获得了良好的性能绘图,但我的线条非常锯齿,并且似乎没有抗锯齿。我尝试过添加
CGContextSetShouldAntialias(layerContext, YES);
CGContextSetAllowsAntialiasing(layerContext, YES);
CGContextSetInterpolationQuality(layerContext, kCGInterpolationHigh);
上面的代码没有效果。我什至在主 context
上设置了抗锯齿属性,没有变化。我拍摄了相同代码结果的屏幕截图,但第二张图像是根据 CGLayer
中的绘图创建的图像。 。正如你所看到的,它确实是锯齿状的,尽管是相同的代码,只是绘制成 layerContext
。我怎样才能得到 CGLayer
中的行要顺利吗?
最佳答案
我发现第二张图像没有抗锯齿的原因是因为没有任何东西可以抗锯齿。背景是空的,因此抗锯齿不起作用。如果您在完全透明的 View 边界上创建一个大矩形,则该线将使用抗锯齿功能绘制。然而,性能被扼杀了。最好不要走这条路。
关于iphone - CGLayer 和抗锯齿 CGPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6963857/
尝试使用 tkinter 为一系列 PIL 图像制作动画。我的帧持续时间 (ms) 的图表如下所示: 有人知道是什么导致了这种尖尖的锯齿图案吗? 这是一个重现的脚本: from PIL import
我正在尝试使用 Canvas 创建“星爆”效果,但线段出现令人难以置信的像素化。我做错了什么吗? var rays = 40; var canvas = $("header canvas")[0];
爪牙 我在 JAGS 中有一个仅拦截逻辑模型,定义如下: model{ for(i in 1:Ny){ y[i] ~ dbern(mu[s[i]]) } for(j in 1:Ns){
我是一名优秀的程序员,十分优秀!