- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 SVG 路径,我们可以绘制 99.99% 的圆并显示出来,但是当它是 99.99999999% 的圆时,圆将不会显示。如何修复?
下面的SVG路径可以画出99.99%的圆:
var paper = Raphael(0, 0, 300, 800);
// Note that there are supposed to be 4 arcs drawn, but you may see only 1, 2, or 3 arcs depending on which browser you use
paper.path("M 100 100 a 50 50 0 1 0 35 85").attr({stroke: "#080", opacity: 1, "stroke-width" : 6}) // this is about 62.5% of a circle, and it shows on most any browsers
paper.path("M 100 210 a 50 50 0 1 0 0.0001 0").attr({stroke: "#080", opacity: 1, "stroke-width" : 6}) // this one won't show anything if it is IE 8's VML, but will show if it is Chrome or Firefox's SVG. On IE 8, it needs to be 0.01 to show
paper.path("M 100 320 a 50 50 0 1 0 0.0000001 0").attr({stroke: "#080", opacity: 1, "stroke-width" : 6}) // this one won't draw anything at all, unless you change the 0.0000001 to 0.0001 on Chrome or Firefox... Safari will show it though...
paper.path("M 100 430 a 50 50 0 1 0 0 0").attr({stroke: "#080", opacity: 1, "stroke-width" : 6}) // this is 100% of a circle... even Safari won't show it
<script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
M 100 100 a 50 50 0 1 0 0.00001 0
但是当它是一个圆的99.99999999%时,就什么都显示不出来了?
M 100 100 a 50 50 0 1 0 0.00000001 0
圆的100%也是一样的(还是圆弧,不是吗,只是很完整的圆弧)
M 100 100 a 50 50 0 1 0 0 0
如何解决?原因是我使用一个函数来绘制圆弧的百分比,如果我需要“特殊情况”99.9999% 或 100% 的圆弧来使用圆函数,那就有点傻了。
同样,上面是一个测试用例(如果是 IE 8 上的 VML,连第二个圆圈都不会显示...你必须把它改成 0.01)
更新:
这是因为我在我们的系统中为一个分数渲染一个圆弧,所以 3.3 分得到一个圆的 1/3。 0.5分得到半个圆,9.9分得到99%的圆。但是如果我们的系统中有 9.99 的分数怎么办?我是否必须检查它是否接近圆的 99.999%,并相应地使用 arc
函数或 circle
函数?那么9.9987的分数呢?使用哪一个?可笑的是需要知道什么样的分数会映射到“太完整的圆”而切换到圆函数,而当它是“某个99.9%”的圆或9.9987分数时,再使用圆弧函数.
最佳答案
我根据@loominade 的反馈进行了调整,使圆的绘制从“东、南、西、北”开始,制作了stroke-dashoffset
和startOffset
与原生 circle
元素的行为更加一致。
我遇到了类似的困境,我找到了这个解决方案:
<path
d="
M cx cy
m r, 0
a r,r 0 1,0 -(r * 2),0
a r,r 0 1,0 (r * 2),0
"
/>
换句话说,这:
<circle cx="100" cy="100" r="75" />
可以通过以下方式实现:
<path
d="
M 100, 100
m 75, 0
a 75,75 0 1,0 -150,0
a 75,75 0 1,0 150,0
"
/>
诀窍是有两条弧线,第二条弧线从第一条弧线停止的地方开始,并使用负直径返回到原始弧线起点。
它不能作为一个圆弧中的完整圆来完成的原因(我只是推测)是因为你会告诉它从它自己(假设 150,150)到它自己(150,150)画一个圆弧,它呈现为“哦,我已经在那里了,不需要弧!”。
我提供的解决方案的好处是:
如果他们只允许文本路径接受形状,那么这一切都无关紧要。但我认为他们正在避免该解决方案,因为像圆这样的形状元素在技术上没有“起点”。
片段演示:
circle, path {
fill: none;
stroke-width: 5;
stroke-opacity: .5;
}
circle {
stroke: red;
}
path {
stroke: yellow;
}
<?xml version="1.0" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
width="220px" height="220px">
<circle cx="100" cy="100" r="75" />
<path
d="
M 100, 100
m 75, 0
a 75,75 0 1,0 -150,0
a 75,75 0 1,0 150,0
"
/>
</svg>
如果您正在使用 textPath
引用的路径,并且您希望文本呈现在圆弧的外边缘,您可以使用完全相同的方法,但将扫描标志从0 到 1 以便它将路径的外部视为表面而不是内部(将 1,0
视为坐在中心并围绕自己画圆的人,而 1 ,1
作为某人以半径距离围绕中心走动并在他们旁边拖着他们的粉笔,如果这有任何帮助的话)。这是上面的代码,但有变化:
<path
d="
M cx cy
m r, 0
a r,r 0 1,1 -(r * 2),0
a r,r 0 1,1 (r * 2),0
"
/>
关于svg - 使用 SVG 圆弧路径绘制圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46602244/
我正在尝试让角色以弧形向目标扔东西。 我知道顶点(x,y)和目标(x,y),我想得到一条从原点(x,y)到目标的最大高度为 vertex.y 的弧 我所拥有的是基于 y = a(x-h)^2 + k
我正在使用 html5 canvas 创建财富之轮。它与填充样式颜色配合得很好。我想要随机切片填充样式图案中的两(2)个不同图像。我如何实现这一目标。 这是我的 JS function rand(mi
我不明白为什么我需要在某些 block 中有一个弱的 self ,而其他的似乎工作正常。 如果我在 Notification block 中没有对 self 的弱引用,dealloc 将不会被释放。不
我正在尝试弄清楚如何在极坐标图中的两点之间创建弧线,但我绘制的线是连接它们的直线,即使该图是极坐标。 我需要使用其他绘图函数来代替 ax.plot 吗? 我注意到 matplotlib 中有一些补丁,
我正在尝试在 d3 中创建一个半圆。使用 cardinal interpolation产生一条接近我想要的路径,但不够“圆形”。如何编写自己的插值器来更好地绕过这条路径,或者有更好的方法吗? 这是我目
我正在开发一个启用 ARC 的项目。我正在从 View Controller 中推送 MyClass, - (void)pushMyClass { MyClass *myClass = [[
我有四点。它是可拖动的。在任何时候我点击“绘制”按钮我想显示 Angular 。我尝试过,但它会在外面画出陡峭 Angular 弧线。但我想在形状内的任意点绘制圆弧。 $(document).read
我正在尝试为 Android 设备修改操纵杆组件。目前该组件能够跟踪您手指的 x 和 y 位置并在那里绘制一个小圆圈。现在我要做的是从中心到手指的 x 和 y 位置绘制一个矩形或圆弧。 据我所知,矩形
有没有人有在 svgwrite (python) 中完成的弧形切片(奶酪切片或吃 bean 人)的工作示例,我已经尝试过这个,试图获得一个从 (100,100) 开始的西北象限,但得到一个奇怪的形状:
我正在开发一个 iPad(仅限)应用程序,我偶然发现了一个奇怪的问题。该应用程序在 iPad 1 上出现内存警告后终止,但在 iPad 2 上运行正常。我正在使用 ARC 并以 iOS 5 为目标。我
dealloc(下)会释放静态变量exampleString指向的NSString吗? // ExampleClass.h @interface ExampleClass : NSObject @
我正在尝试使用 WPF 在 Canvas 上绘制导入的 DXF 文件。我一直在使用 DXFLib(可用 here)来读取和解析各种文件,它似乎工作得很好。 我现在正在绘制 DXF 中的所有实体,但我受
我正在使用 NSManagedObjects,我想返回任务的预算或任务类别的预算。 但是,该方法给出了错误: Implicit conversion of int to Budget * is dis
我正在使用 JQuery.path沿贝塞尔曲线移动对象。单击该项目时,我可以确定起点和终点。如何计算 Angular 和长度,使元素在与起点和终点相交的 1/4 圆弧上从 A 点移动到 B 点? 我基
当转换到 ARC 时,我收到以下编译器错误:“删除未使用的自动释放消息是不安全的”。 如果我简单地删除自动释放消息,obj 将在 getAutoreleasedObj 结束时立即被释放,这将导致 pr
我是 Instruments 的新手,但我之前已经成功地找到了漏洞。这一次,不是这样——每次我调用这段代码时都会有 34MB 的泄漏!我试图在下面发布所有相关代码,同时删除 DDLogging 等内容
我正在从手动内存管理过渡到 ARC,但遇到了问题。大多数时候,我通过在我的模型类中调用 performSelectorInBackground 来异步执行数据加载。问题是当模型收到 nil(发布)时,
我正在尝试将项目转换为使用 ARC。 我有一个这样的声明属性: @property (nonatomic, retain, setter=setSomeProperty:) SomeClass * s
在关于为特定类禁用 ARC 编译器机制的 stackoverflow 主题之后,我将 -fno-objc-arc 参数添加到 Compile Sources 部分(TARGETS 项目中的 Buil
考虑这个 ARC 代码: - (void)main { NSString *s = [[NSString alloc] initWithString:@"s"]; [NSApp beg
我是一名优秀的程序员,十分优秀!