如何使用 HTML5 Canvas 使文本沿着圆形路径旋转?

发布于 2024-11-08 16:45:25 字数 482 浏览 0 评论 0原文

有许多 JavaScript 片段可以使文本或图形沿着圆形路径移动,并且字母或单词始终保持直立。

示例: http://www.dseffects.com/f_scripts.html

我想要文本 (或图形)沿着月球绕地球运行的方式绕一个点运行,一个面始终朝向中心。下面的示例展示了这一点,但非常粗略,并且没有使用网络字体。

示例: http://javaboutique.internet.com/text/Manipulation/TextRotor/

我确信有一种方法可以像第一个示例一样修改轨道代码(仅不在光标周围),以便每个字母/图像的一侧朝向中心(轴)。

There are a number of JavaScript snippets that will make text or graphics travel along a circular path with the letters or words always upright.

Example: http://www.dseffects.com/f_scripts.html

I want to have text (or graphics) orbit a point the way the moon orbits the Earth, with one face always toward the center. The following example shows this, but very crudely and not using web fonts.

Example: http://javaboutique.internet.com/text/Manipulation/TextRotor/

I am sure there is a way to modify orbiting code like the first example (only not around the cursor) so that each letter/image keeps one side toward the center (axis).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

会发光的星星闪亮亮i 2024-11-15 16:45:25

SVG 确实是处理此类事情的最佳选择。我只是很快就完成了这个,但至少它可以作为一个例子。 HTML 部分可能会有很大差异,但这只是一种方式。

将其放入 html 页面中:

<iframe src="orbitingText.svg" width="100%" height="100%"></iframe>

然后,创建 OrbitingText.svg 文件(它只是一个扩展名为 .svg 的文本文件):

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 300 300">
<defs>
    <path id="textPath" d="M 150 75 a 75 75 0 1 0 0.00001 0"/>
</defs>
<circle cx="150" cy="150" r="40" stroke="blue" stroke-width="1"></circle>
<text fill="red">
    <textPath xlink:href="#textPath" startOffset="0">
        <animate attributeName="startOffset" dur="7s" from="0" to="500" repeatCount="indefinite" />
        Orbiting Text
    </textPath>
</text>

哦,如果您担心跨浏览器兼容性,请查看此网站:
http://code.google.com/p/svgweb/

SVG really is the way to go for this kind of thing. I just whipped this up really quick but at least it works as an example. The HTML part can vary a lot but this is one way.

Put this into an html page:

<iframe src="orbitingText.svg" width="100%" height="100%"></iframe>

Then, create the orbitingText.svg file (it's just a text file with a .svg extension):

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 300 300">
<defs>
    <path id="textPath" d="M 150 75 a 75 75 0 1 0 0.00001 0"/>
</defs>
<circle cx="150" cy="150" r="40" stroke="blue" stroke-width="1"></circle>
<text fill="red">
    <textPath xlink:href="#textPath" startOffset="0">
        <animate attributeName="startOffset" dur="7s" from="0" to="500" repeatCount="indefinite" />
        Orbiting Text
    </textPath>
</text>

Oh, and if you are worried about cross-browser compatibility, check out this site:
http://code.google.com/p/svgweb/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文