|
|
|
@ -16,17 +16,23 @@ import java.awt.image.ImageObserver;
|
|
|
|
|
* @version 11.0 |
|
|
|
|
* Created by hades on 2022/5/6 |
|
|
|
|
*/ |
|
|
|
|
public class SvgPaintUtils { |
|
|
|
|
public class SvgDrawUtils { |
|
|
|
|
|
|
|
|
|
private static final boolean HI_DPI_ENABLED = SystemScaleUtils.isJreHiDPIEnabled(); |
|
|
|
|
|
|
|
|
|
public static void beforePaint(Graphics2D g2) { |
|
|
|
|
/** |
|
|
|
|
* 绘制svg前若环境支持高清化则对缩放比例进行适配 |
|
|
|
|
* */ |
|
|
|
|
public static void beforeDraw(Graphics2D g2) { |
|
|
|
|
if (HI_DPI_ENABLED) { |
|
|
|
|
g2.scale(1 / SVGLoader.SYSTEM_SCALE, 1 / SVGLoader.SYSTEM_SCALE); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static void afterPaint(Graphics2D g2) { |
|
|
|
|
/** |
|
|
|
|
* 绘制svg后还原缩放矩阵 |
|
|
|
|
* */ |
|
|
|
|
public static void afterDraw(Graphics2D g2) { |
|
|
|
|
if (HI_DPI_ENABLED) { |
|
|
|
|
g2.scale(SVGLoader.SYSTEM_SCALE, SVGLoader.SYSTEM_SCALE); |
|
|
|
|
} |
|
|
|
@ -44,12 +50,12 @@ public class SvgPaintUtils {
|
|
|
|
|
/** |
|
|
|
|
* 绘制svg图像的完整逻辑 |
|
|
|
|
* @param graphics 绘图 |
|
|
|
|
* @param svgPainter 具体绘制逻辑 |
|
|
|
|
* @param svgDraw 具体绘制逻辑 |
|
|
|
|
* */ |
|
|
|
|
public static void doDrawSVG(@NotNull Graphics graphics, @NotNull final SvgPainter<Graphics> svgPainter) { |
|
|
|
|
SvgPaintUtils.beforePaint((Graphics2D) graphics); |
|
|
|
|
svgPainter.drawSVG(); |
|
|
|
|
SvgPaintUtils.afterPaint((Graphics2D) graphics); |
|
|
|
|
public static void doDrawSVG(@NotNull Graphics graphics, @NotNull final SvgDraw<Graphics> svgDraw) { |
|
|
|
|
SvgDrawUtils.beforeDraw((Graphics2D) graphics); |
|
|
|
|
svgDraw.drawSVG(); |
|
|
|
|
SvgDrawUtils.afterDraw((Graphics2D) graphics); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -62,6 +68,6 @@ public class SvgPaintUtils {
|
|
|
|
|
* */ |
|
|
|
|
public static void drawImage(Graphics graphics, Image image, int x, int y, ImageObserver imageObserver) { |
|
|
|
|
//如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整
|
|
|
|
|
graphics.drawImage(image, SvgPaintUtils.calculatePosition(x), SvgPaintUtils.calculatePosition(y), imageObserver); |
|
|
|
|
graphics.drawImage(image, SvgDrawUtils.calculatePosition(x), SvgDrawUtils.calculatePosition(y), imageObserver); |
|
|
|
|
} |
|
|
|
|
} |