- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在按照从用户收集的一组点绘制一条路径到 CGContext。似乎有一些随机输入抖动导致一些线边缘看起来参差不齐。我认为轻微的羽毛可以解决这个问题。如果我使用的是 OpenGL ES,我会简单地将羽毛应用到我正在抚摸路径的 Sprite 上;然而,这个项目要求我留在 Quartz/CoreGraphics 中,我似乎找不到类似的解决方案。
我试着画了 5 条线,每条线都稍微大一点,更透明,以近似于一根羽毛。这会产生不好的结果并显着降低性能。
这是画线代码:
CGContextMoveToPoint(UIGraphicsGetCurrentContext(),((int)lastPostionDrawing1.x), (((int)lastPostionDrawing1.y)));
CGContextAddCurveToPoint(UIGraphicsGetCurrentContext(), ctrl1_x, ctrl1_y, ctrl2_x, ctrl2_y, lastPostionDrawing2.x, lastPostionDrawing2.y;
[currentPath addCurveToPoint:CGPointMake(lastPostionDrawing2.x-((int)furthestLeft.x)+((int)penSize), lastPostionDrawing2.y controlPoint1:CGPointMake(ctrl1_x, ctrl1_y) controlPoint2:CGPointMake(ctrl2_x, ctrl2_y)];
最佳答案
我继续假设你的 CGContext 仍然打开了抗锯齿功能,但如果没有,那么这显然是第一个尝试的想法,正如@Davyd 的评论所建议的:CGContextSetShouldAntialias
是感兴趣的函数。
假设这不是问题所在,并且线条已根据上下文消除锯齿,但您仍然想要“更柔和”的东西。我可以想到几种方法来做到这一点,希望比抚摸 5 次更快。
首先,您可以尝试使用 CGContextReplacePathWithStrokedPath
获取描边路径(即描述当前路径描边轮廓的路径),然后您可以用渐变(或其他任何其他方式)填充此路径填充技术给出了预期的结果。)这对于直线很有效,但对于曲线路径就不是那么简单了(因为渐变正在填充描边路径的区域,并且将是线性的或径向的。)
另一个可能不太明显的选择可能是为此目的滥用 CG 的阴影绘图。您要查找的函数是:CGContextSetShadowWithColor
方法如下:
CGContextSaveGState
CGPathCreateCopyByTransformingPath
将其从自身偏移 2.0 * bbox.width(注意:仅使用 X 方向,这样您就不必担心上下文中的翻转)CGContextClipToRect
将上下文剪切到原始 bbox CGContextSetShadowWithColor
在上下文中设置阴影:
CGContextRestoreGState
这应该让您“只”看到阴影,希望您可以对其进行调整以获得您想要的结果。
总而言之,CG 的阴影绘制性能,IME,不完全出色,也不完全确定。我希望它比用 5 次不同的笔划在路径上划 5 次更快,但不是绝对如此。
这将归结为达到这种效果对您来说值多少钱。
关于objective-c - iOS Quartz/CoreGraphics 绘制羽化描边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7233257/
目标 我正在尝试创建一个 SVG 图标以添加到图标字体文件中。 进展 我已经创建了一个 SVG 图标,它以内嵌的形式完美呈现并作为 img 问题 当我上传它以添加到我的图标字体时,同时使用 Icomo
我有一个带边框的动态宽度/高度 div。里面是一个绝对定位的按钮,位于底部的中心,与父 div 的边框重叠。我想让它看起来像边框在重叠按钮之前停止几个像素。一项要求是保持一切动态,例如,如果按钮的宽度
Unity UGUI的Outline(描边)组件的介绍及使用 1. 什么是Outline(描边)组件? Outline(描边)组件是Unity UGUI中的一种特效组件,用于给UI元素添
我需要动态创建这样的大纲: 不是针对一个 CCSprite,而是针对一个 CCNode 中的多个动画 CCSprite。我在想: 将 CCNode 的内容复制到纹理(如 AS3 中的 canvasBi
我正在寻找一种使用 HTML Canvas 对笔划进行动画绘制的方法。 是否有任何预定义的内容可以让您执行此操作? 最佳答案 我不知道任何预定义的解决方案。也许在图书馆里。像raphael 但是如果您
我正在尝试添加一些动画来更改 Canvas 弧的 endAngle,如下所示,但它不起作用。我怎样才能做到这一点? var steps =30; var canvas = document.getEl
我有一个具有以下背景的按钮: 我需要在代码中
我有子类 NSImageView,我想用圆角画一个边框。它可以工作,但我还需要剪掉图像的角。 请看我的截图: 我创建了这段代码来绘制边框/角。 - (void)drawRect:(NSRect)dir
查看positionly.com使用的图表:https://www.dropbox.com/s/kz9ksagctf7zpaa/Screenshot%202015-12-18%2010.31.03.p
我刚刚开始使用 Apache PDFBox,对于应用于文本和线条时描边、非描边和填充的含义,我完全感到困惑。 请有人向我指出一个引用/指南,其中解释了这些术语的含义(对于初学者)以及它们之间的区别。
我正在使用 svg/d3 创建一个由“矩形”元素组成的图表。 为每个矩形(仅在矩形顶部)添加部分边框/描边的最佳方法是什么? 谢谢 最佳答案 我认为 SVG 不支持仅对矩形或路径的部分进行描边 - 描
我正在学习 Canvas ,我的目标是徒手绘画。每个在线示例都说我应该在我的 onmousemove 中调用 stroke()。如果我的颜色 strokeStyle 具有 100% 的不透明度,这将按
我想在用户键入时向可编辑的 UITextView 文本添加轮廓或描边。完全像模因:http://t.qkme.me/3oi5rs.jpg 我必须使用 UITextView 因为我需要多行支持。我已经尝
如何在 material-ui 图标周围添加颜色轮廓? 有这个 看起来更像这样? 我尝试过中风和 webkit-stroke,但没有任何运气。它在整个隐形盒子周围放置了一个边框。 最佳答案 在 Rea
我在 drawRect 中绘制了一个形状,它存储在 CGMutablePathRef (shapeMutablePath) 中。每次调用 drawRect 时,形状都会被拉伸(stretch)以适应屏
我已经使用以下代码向我的 map 添加了一个叠加层: func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!)
我有一个 CAShapeLayer,它有一个不透明的描边和一个透明的填充。然后我想调用 myContext.drawRadialGradient,但是将这个径向渐变剪辑到我的形状层的笔划。目前,我正在
我已将我的 SVG 图像设置为 div 的背景。现在我想每隔 x 秒用 jQuery 更改特定路径的笔画。我看过一个示例 ( click me ),其中基本上完成了此操作。 到目前为止,这是我的 jQ
我正在努力寻找一种快速绘制(和填充)贝塞尔曲线路径的方法。这是我认为行得通但行不通的方法。 var myBezier = UIBezierPath() myBezier.moveToPoint(CGP
我尝试了很多很多方法在图像周围画一个黑色轮廓。 这是我想要的结果示例: 有人可以告诉我我应该怎么做吗?或者给我举个例子? 编辑:我卡在这里:有人可以帮我完成它吗?我所做的是在带有阴影的白色下制作另一个
我是一名优秀的程序员,十分优秀!