Java 2D渐变/填充

4
我从贝塞尔曲线创建了一个“blob”(如下图所示),现在希望以伪3D的方式对其进行着色,所有“左”边缘都有较深的阴影,所有“右”边缘都有较浅的阴影,并且表面本身上可能有纯白色的“光斑”。例如:我想知道如何实现此视频中使用的着色效果。
  • 有人能推荐一个好的方法来实现这一点吗? 我猜标准的Graphics2D.fill和setPaint方法可能不够复杂。
  • 此外,有人能推荐一些好的资源(最好是免费/在线)来了解更多信息吗?

编辑

一些额外的信息:为了实现下面的平面填充效果,我正在创建一个Area对象,并使用add(new Area(ellipse))将单个的Ellipse2D Shape添加到其中,最后添加中心多边形区域以避免在中间留下白色空间。

alt text http://www.freeimagehosting.net/uploads/bc8081cbf2.png

2个回答

1

iPhone应用程序可以访问OpenGL-ES,这允许在着色和渲染方面具有相当大的自由度,基本上是使用发射光照的彩色等值面。除非你愿意为其编写整个软件3D库,否则Java2d绝对不够复杂。

同时混合2D和3D也是可能的


谢谢建议。我对图形还比较新,所以暂时可能会避开3D图形/OpenGL。也许我可以通过定义一个笔画来给blob的边缘应用阴影。不确定是否可以根据当前描绘路径的方向改变阴影颜色。 - Adamski

1

谢谢。看起来Java 6的RadialGradientPaint只能以圆形方式进行着色,但也许我可以使用这段代码作为起点来实现自己的方法。 - Adamski
我认为您可以用alpha来“羽化”边缘,为每个椭圆的最大内切圆着色。 - trashgod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接