Browse Source

REPORT-55211【组件背景分离】组件复用-图表块取消勾选标题可见,设置的主体背景(颜色/渐变色/图片),在设计界面里会遮盖住图表,可见图。web效果正常

子功能: 设计器组件样式主体背景预览
【问题原因】
图表重写了paint方法,导致super.paint中的背景绘制在了图表图片上方
【改动思路】
将XBorderStyleWidgetCreator中的paint方法分成若干部分:
clipByRoundedBorder: 圆角裁剪
paintBackground: 绘制背景
paintForeground: 绘制前景内容(在背景上方的组件内容)

图表可通过重写paintForeground方法实现之前的逻辑,同时保证内容不被背景遮盖
【review建议】
zheng-1641779399395
Starryi 4 years ago
parent
commit
c1e56841e1
  1. 8
      designer-form/src/main/java/com/fr/design/designer/creator/XAutoChartCreator.java
  2. 13
      designer-form/src/main/java/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java
  3. 11
      designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java

8
designer-form/src/main/java/com/fr/design/designer/creator/XAutoChartCreator.java

@ -18,8 +18,7 @@ import com.fr.stable.bridge.StableFactory;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.Dimension; import java.awt.*;
import java.awt.Graphics;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
@ -102,7 +101,8 @@ public class XAutoChartCreator extends XChartEditor {
} }
public void paint(Graphics g) { @Override
public void paintForeground(Graphics2D g) {
BufferedImage bufferedImage = IOUtils.readImage("com/fr/design/form/images/auto_chart_preview.png"); BufferedImage bufferedImage = IOUtils.readImage("com/fr/design/form/images/auto_chart_preview.png");
GraphHelper.paintImage( GraphHelper.paintImage(
g, this.getWidth(), this.getHeight(), bufferedImage, g, this.getWidth(), this.getHeight(), bufferedImage,
@ -110,7 +110,7 @@ public class XAutoChartCreator extends XChartEditor {
0, 0,
0, -1, -1 0, -1, -1
); );
super.paint(g); super.paintForeground(g);
} }
private void initChart(BaseChartCollection chartCollection) { private void initChart(BaseChartCollection chartCollection) {

13
designer-form/src/main/java/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java

@ -222,24 +222,23 @@ public class XBorderStyleWidgetCreator extends XWidgetCreator{
} }
// 设计器预览界面中绘制组件背景效果 // 设计器预览界面中绘制组件背景效果
private void paintBackground(Graphics2D g2d) { public void paintBackground(Graphics2D g2d) {
Background background4Painting = getBackground4Painting(); Background background4Painting = getBackground4Painting();
if (background4Painting != null) { if (background4Painting != null) {
background4Painting.paint(g2d, new Rectangle2D.Double(0, 0, getWidth(), getHeight())); background4Painting.paint(g2d, new Rectangle2D.Double(0, 0, getWidth(), getHeight()));
} }
} }
@Override public void paintForeground(Graphics2D g2d) {
protected void paintComponent(Graphics g) { super.paint(g2d);
this.paintBackground((Graphics2D) g); super.paintBorder(g2d);
super.paintComponent(g);
} }
@Override @Override
public void paint(Graphics g) { public void paint(Graphics g) {
this.clipByRoundedBorder((Graphics2D) g); this.clipByRoundedBorder((Graphics2D) g);
super.paint(g); this.paintBackground((Graphics2D) g);
paintBorder(g); this.paintForeground((Graphics2D) g);
} }
@Override @Override

11
designer-form/src/main/java/com/fr/design/designer/creator/XChartEditor.java

@ -29,12 +29,8 @@ import javax.swing.BorderFactory;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import java.awt.*;
import java.beans.IntrospectionException; import java.beans.IntrospectionException;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
/** /**
@ -228,7 +224,8 @@ public class XChartEditor extends XBorderStyleWidgetCreator {
/** /**
* 渲染Painter * 渲染Painter
*/ */
public void paint(Graphics g) { @Override
public void paintForeground(Graphics2D g) {
Dimension size = getSize(); Dimension size = getSize();
PaddingMargin margin = toData().getMargin(); PaddingMargin margin = toData().getMargin();
designerEditor.paintEditor(g, size, margin); designerEditor.paintEditor(g, size, margin);
@ -237,7 +234,7 @@ public class XChartEditor extends XBorderStyleWidgetCreator {
int verticalMargin = margin != null ? margin.getTop() + margin.getBottom() : 0; int verticalMargin = margin != null ? margin.getTop() + margin.getBottom() : 0;
coverPanel.setSize(size.width - horizonMargin, size.height - verticalMargin); coverPanel.setSize(size.width - horizonMargin, size.height - verticalMargin);
} }
super.paint(g); super.paintForeground(g);
if (isEditing) { if (isEditing) {
g.setColor(INNER_BORDER_COLOR); g.setColor(INNER_BORDER_COLOR);
GraphHelper.draw(g, new Rectangle(0, 0, getWidth(), getHeight()), Constants.LINE_MEDIUM); GraphHelper.draw(g, new Rectangle(0, 0, getWidth(), getHeight()), Constants.LINE_MEDIUM);

Loading…
Cancel
Save