Browse Source

Pull request #5088: REPORT-55743 【组件背景分离】组件复用-在新jar下新建的报表块,放到旧版本jar下设计器显示黑色缩略图

Merge in DESIGN/design from ~STARRYI/design:bug-final/10.0 to final/10.0

* commit 'b24f4e92623a526f2862f26f532326a8705fcf0d':
  REPORT-55743 【组件背景分离】组件复用-在新jar下新建的报表块,放到旧版本jar下设计器显示黑色缩略图
final/10.0
Kara 3 years ago
parent
commit
80a59f71cc
  1. 16
      designer-realize/src/main/java/com/fr/design/mainframe/form/FormElementCaseDesigner.java

16
designer-realize/src/main/java/com/fr/design/mainframe/form/FormElementCaseDesigner.java

@ -39,14 +39,17 @@ import com.fr.report.elementcase.TemplateElementCase;
import com.fr.report.worksheet.FormElementCase;
import com.fr.report.worksheet.WorkSheet;
import javax.imageio.ImageIO;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.io.File;
/**
* 表单中的ElementCase编辑面板
@ -132,13 +135,22 @@ public class FormElementCaseDesigner
int width = size.width;
int height = size.height;
image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
// 使用TYPE_INT_RGB和new Color(255, 255, 255, 1)设置有透明背景buffer image,
// 使得创建出来的透明像素是(255, 255, 255, 1),而不是(0, 0, 0, 0)
// 这样不支持透明通道缩略图的旧设计器打开新设计器创建的模版时,就不会创建出拥有黑色背景的缩略图
image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
// 创建一个支持透明背景的buffer image
image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
g2d.dispose();
g2d = image.createGraphics();
// 使用TYPE_INT_RGB和new Color(255, 255, 255, 1)设置有透明背景buffer image,
// 使得创建出来的透明像素是(255, 255, 255, 1),而不是(0, 0, 0, 0)
// 这样不支持透明通道缩略图的旧设计器打开新设计器创建的模版时,就不会创建出拥有黑色背景的缩略图
g2d.setColor(new Color(255, 255, 255, 1));
g2d.fillRect(0, 0, (int) size.getWidth(), (int) size.getHeight());
Grid grid = this.elementCasePane != null ? this.elementCasePane.getGrid() : null;
if (grid != null) {
boolean oldTranslucent = grid.isTranslucent();
@ -148,6 +160,8 @@ public class FormElementCaseDesigner
grid.setTranslucent(oldTranslucent);
}
ImageIO.write(image, "png", new File("/Users/Starryi/test.png"));
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}

Loading…
Cancel
Save