画线:Graphics.lineStyle()中是否存在厚度限制?

时间:2012-10-18 11:24:18

标签: actionscript-3 flash graphics

我正在为基于闪存的应用开发一个简单的图形编辑器。在我的编辑器中,存在缩放的可能性,缩放范围很大(最大比例为16.0,最小比例为0.001,默认比例为0.2)。因此,用户很可能可以绘制厚度为0.1300.0的线条,并且看起来线条可能的厚度(在Graphics.lineStyle()中)具有上边框。正如我从livedocs发现的最大值是255。因此,如果厚度大于255.0,则会绘制一条厚度为255.0的线。是否提到上边界存在,有多大。这是我的问题:

  1. 现在我正在使用drawPath()lineTo()方法绘制线条。如果厚度大于255.0,则自然walkarround是绘制矩形而不是段和段末端的两个圆(而不是lineTo())。甚至可以绘制两个薄片和两个半圆并填充内部。也许有更优雅/快速的解决方案?
  2. 另一个问题是,如果线条的粗细大但是小于255.0(例如100.0),那么用lineTo()绘制线条或绘制两个细线段和两个半线的速度更快 - 圈和填充内部?
  3. 最后,也许有人知道一篇好文章/书籍,我可以在其中阅读flash.display.Graphics课程的所有方法内部的内容(甚至不是关于图形的flash特定文章/书籍)?
  4. 任何想法都表示赞赏。提前谢谢!

1 个答案:

答案 0 :(得分:4)

我同意f-a将线放在容器中可能比绘制矩形和额外的圆更好更有效。

我认为数学不太难以解决。为了提高效率,如果线条样式超过255,则应该只执行此操作。

要设置显示对象来保持你的线,我会从你的线的宽度减半开始(长度可以保持不变)。然后创建一个新的精灵并在精灵中以半角绘制线条(例如,如果你想要300,只需在150处绘制它)。从(0,0)开始并直接绘制线段以便将所有变换应用于新精灵将是最简单的。

从这里你可以加倍精灵的scaleY以获得所需的线宽。它应保持相同的长度,并且末端也应正确舍入。

希望这有所帮助!

使用图形类的一个很酷的资源是Flash和Math。这个网站有几个很酷的效果和工作示例和源代码。

http://www.flashandmath.com/