首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Apache Batik SVG1.8将形状呈现属性设置为crispEdges

如何使用Apache Batik SVG1.8将形状呈现属性设置为crispEdges
EN

Stack Overflow用户
提问于 2021-10-29 00:54:24
回答 1查看 55关注 0票数 1

我正在尝试将Apache Batik 1.8输出

代码语言:javascript
运行
复制
shape-rendering="crispEdges"

而不是缺省的

代码语言:javascript
运行
复制
shape-rendering="auto"

在根<svg />节点中。

我发现了SVGConstants.SVG_SHAPE_RENDERING_ATTRIBUTESVGConstants#SVG_CRISP_EDGES_VALUE,但我不确定如何将这些属性设置为SVGGraphics2D实例。

我尝试过类似于起诉SVGGraphics2D(名为SVGGraphics2D)的方法:

代码语言:javascript
运行
复制
//svgGraphics.setRenderingHint(SVGRenderingHints.SVG_SHAPE_RENDERING_ATTRIBUTE,
//                             SVGRenderingHints.SVG_CRISP_EDGES_VALUE);

然而,这是java.awt.RenderingHints SVGGraphics2D.setRenderingHints所期望的。

我也尝试过:

代码语言:javascript
运行
复制
svgGraphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    svgGraphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    svgGraphics.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
    svgGraphics.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);

但是,上述操作都不会将输出SVG文件中的render-style属性更改为“crispEdges”。

(我目前正在研究Document,希望我可以通过XML/string手动更改属性。我也发现了a few related classes in the source code,但我似乎找不到一个好的示例/测试)

render-style更改为crispEdges最优雅的方式是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-29 01:13:23

我现在找到的解决方法是:

代码语言:javascript
运行
复制
Element tlg =  svgGraphics.getTopLevelGroup();
tlg.setAttribute("shape-rendering","crispEdges");
svgGraphics.setTopLevelGroup(tlg);

尽管如代码所示,该属性作为样式应用于顶级<g/>元素,但图形现在呈现得很清晰。

我期待着看到更干净的实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69762464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档