栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SVG am示例?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SVG am示例?

该存储库包含示例代码。如果要使用最新版本,则涉及一些步骤:

  1. 安装Apache Maven。

  2. 将存储库克隆到某个位置:

    mkdir -p $HOME/dev/java/

    cd $HOME/dev/java
    git clone https://github.com/blackears/svgSalamander

  3. 更新

    pom.xml

    cd svgSalamander/svg-core

    vi pom.xml

  4. 更改

    source
    target
    和JDK版本号:

    <maven.compiler.source>1.7</maven.compiler.source>

    1.7

    1.7

  5. 保存

    pom.xml

  6. 使用Maven生成JAR文件:

    mvn package

  7. 复制

    target/svgSalamander-1.1.2.jar
    (确保必须更改版本号)到程序的库目录(例如
    libs
    )。

如果您的程序使用Gradle进行构建,请更新依赖项以使用本地JAR文件:

dependencies {  // SVG  implementation fileTree(include: ['**public class SvgRasterizer {  public final static Map<Object, Object> RENDERING_HINTS = Map.of(      KEY_ANTIALIASING,      VALUE_ANTIALIAS_ON,      KEY_ALPHA_INTERPOLATION,      VALUE_ALPHA_INTERPOLATION_QUALITY,      KEY_COLOR_RENDERING,      VALUE_COLOR_RENDER_QUALITY,      KEY_DITHERING,      VALUE_DITHER_DISABLE,      KEY_FRACTIONALMETRICS,      VALUE_FRACTIONALMETRICS_ON,      KEY_INTERPOLATION,      VALUE_INTERPOLATION_BICUBIC,      KEY_RENDERING,      VALUE_RENDER_QUALITY,      KEY_STROKE_CONTROL,      VALUE_STROKE_PURE,      KEY_TEXT_ANTIALIASING,      VALUE_TEXT_ANTIALIAS_ON  );  private final static SVGUniverse sRenderer = new SVGUniverse();    public Image rasterize( final String path, final Dimension dstDim )      throws SVGException {    final var diagram = loadDiagram( path );    final var wDiagram = diagram.getWidth();    final var hDiagram = diagram.getHeight();    final var srcDim = new Dimension( (int) wDiagram, (int) hDiagram );    final var scaled = fit( srcDim, dstDim );    final var wScaled = (int) scaled.getWidth();    final var hScaled = (int) scaled.getHeight();    final var image = new BufferedImage( wScaled, hScaled, TYPE_INT_ARGB );    final var g = image.createGraphics();    g.setRenderingHints( RENDERING_HINTS );    final var transform = g.getTransform();    transform.setToScale( wScaled / wDiagram, hScaled / hDiagram );    g.setTransform( transform );    diagram.render( g );    g.dispose();    return image;  }    private URL getResourceUrl( final String path ) {    return SvgRasterizer.class.getResource( path );  }    private SVGDiagram loadDiagram( final String path ) {    final var url = getResourceUrl( path );    final var uri = sRenderer.loadSVG( url );    final var diagram = sRenderer.getDiagram( uri );    return applySettings( diagram );  }    private SVGDiagram applySettings( final SVGDiagram diagram ) {    diagram.setIgnoringClipHeuristic( true );    return diagram;  }    private Dimension fit( final Dimension src, final Dimension dst ) {    final var srcWidth = src.getWidth();    final var srcHeight = src.getHeight();    // Determine the ratio that will have the best fit.    final var ratio = Math.min(        dst.getWidth() / srcWidth, dst.getHeight() / srcHeight    );    // Scale both dimensions with respect to the best fit ratio.    return new Dimension( (int) (srcWidth * ratio), (int) (srcHeight * ratio) );  }}

使用

SvgRasterizer
如下:

final var rasterizer = new SvgRasterizer();final var image = rasterizer.rasterize( "/images/icon.svg", new Dimension( 200, 200 ) );

该图像可以轻松添加到Swing组件中。例如,以下

JComponent
是可以与其他任何人一样对待的:

import javax.swing.*;import java.awt.*;public class ImageComponent extends JComponent {    private Image mImage;  ImageComponent( final Image image ) {    mImage = image;  }  @Override  public Dimension getPreferredSize() {    // Race-condition guard.    final var image = mImage;    return new Dimension(        image.getWidth( null ), image.getHeight( null )    );  }  @Override  protected void paintComponent( final Graphics graphics ) {    super.paintComponent( graphics );    final var g = (Graphics2D) graphics.create();    g.drawImage( mImage, 0, 0, this );  }    public void redraw( final Image image ) {    mImage = image;    repaint();  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/610053.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号