From 85a6a6076d964ba1787956fd778a7e60d910f7c7 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 22 Dec 2016 15:24:05 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-1096=20=E5=AE=9E=E7=8E=B0=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E7=95=8C=E9=9D=A2=EF=BC=88=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=E9=80=89=E6=8B=A9=E6=A1=86=EF=BC=89=E9=87=8C?= =?UTF-8?q?=E7=9A=84=E5=8F=96=E8=89=B2=E5=99=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/colorSelectPane/colorPicker.png | Bin 0 -> 332 bytes .../gui/colorSelectPane/colorPickerCustom.png | Bin 0 -> 432 bytes .../fr/design/style/color/ColorPicker.java | 205 ++++++++++++++++++ .../style/color/NewColorSelectPane.java | 34 ++- 4 files changed, 236 insertions(+), 3 deletions(-) create mode 100644 designer_base/src/com/fr/design/images/gui/colorSelectPane/colorPicker.png create mode 100644 designer_base/src/com/fr/design/images/gui/colorSelectPane/colorPickerCustom.png create mode 100644 designer_base/src/com/fr/design/style/color/ColorPicker.java diff --git a/designer_base/src/com/fr/design/images/gui/colorSelectPane/colorPicker.png b/designer_base/src/com/fr/design/images/gui/colorSelectPane/colorPicker.png new file mode 100644 index 0000000000000000000000000000000000000000..fc88b3bfc192f00dd580cdbe63e11a32a45bfae2 GIT binary patch literal 332 zcmV-S0ki&zP)Px$21!IgR45f=WFP{lsHpJ$`}Z%3k&*HJ-Me>JGUC$%RLsuG$|~{m=g<8>b&5dz zpNEHsmj#z5B_*Zu|NsAo12uerYG44`bnVimOJA{S($mx9{`~oK8c?wk5dVW3{2oZh zgV;<^0Tk-VlP5wzr+pO_75xiU^Bic49ne2#Q53>BLPA2ao}QlP{{H>@|JAEk|FyKV zegK{NA81G=ObrT+tO4ks|M~g(H)LdFynveOfn3Z$!=^!8T-+SRR5XrId3pH`km(=* zvVo8W1_cF$`M{tBYcMe}c}-9Q&_+gJDBZhq<;s75fB!QQ5)x);uE5UaPx$YDq*vR5%f(lrgJuu4MY%}9<;bL1o1vba}bSf2?;@KA0cRS za1Ek0Y?2q$lweWMb0O&#J=1qVyhr{2{GW65NI?*MNs=_ZTrMhVEXLT+?RNWS1aVzg z)pflF2H5R(>SD2&%H*Ujgx*YAV#rl(tk-M!zE4gBDHEbML6&7u6a}-{4E=r|*XtE= z9AhvT6pB*N@pwe1(}87K$Q#2Uq&7{nfY7EC6h#p>n+-qi%Dg#fx7+uSpG#{*kZ!kI zh+3@{#^W*aZWq^R^QWWHXoP073CD4uX&SG|a=FBQzlW-dpWR!~BP2-@gkgx`a0tUN zULbEBJwtlE9ww6s8jXgK&SUW6h&n^5P)g+F69@r?Vjm6%oK7bWNz?RW2!RAgtJMnI z?UvVLKA)GSLxB4dK(=l3j-1bDP@SqQ0YpO2^Q!2JXJwiv&p%*s_k#^-iNR> 16; + int G = (rgb & 0xff00) >> 8; + int B = (rgb & 0xff); + return new Color(R, G, B); + } + + public void setColorPickerSize(int colorPickerSize) + { + this.colorPickerSize = colorPickerSize; + } + + public void paintComponent(Graphics g) + { + Graphics2D g2d = (Graphics2D) g; + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); + double pixelCount = (double)colorPickerSize / scaleFactor; // 取色器一条边上的放大后的像素点个数(可以是小数) + // 关键处理代码 + g2d.drawImage( + screenImage, // 要画的图片 + 0, // 目标矩形的第一个角的x坐标 + 0, // 目标矩形的第一个角的y坐标 + colorPickerSize, // 目标矩形的第二个角的x坐标 + colorPickerSize, // 目标矩形的第二个角的y坐标 + locationX + (int)((colorPickerSize - pixelCount) * 0.5) + 1, // 源矩形的第一个角的x坐标 + locationY + (int)((colorPickerSize - pixelCount) * 0.5) + 1, // 源矩形的第一个角的y坐标 + locationX + (int)((colorPickerSize + pixelCount) * 0.5) + 1, // 源矩形的第二个角的x坐标 + locationY + (int)((colorPickerSize + pixelCount) * 0.5) + 1, // 源矩形的第二个角的y坐标 + this + ); + + g2d.setColor(Color.black); + g2d.drawOval(0, 0, 190, 190); + g2d.setColor(Color.white); + g2d.drawOval(1, 1, 188, 188); + g2d.drawOval(2, 2, 186, 186); + g2d.setColor(Color.black); + g2d.drawOval(3, 3, 184, 184); + + g2d.setColor(Color.white); + g2d.drawRect(86, 86, 18, 18); + g2d.setColor(Color.black); + g2d.drawRect(87, 87, 16, 16); + } + + +} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java b/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java index bbecf01d3..2b71357a8 100644 --- a/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java +++ b/designer_base/src/com/fr/design/style/color/NewColorSelectPane.java @@ -17,6 +17,7 @@ import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import com.fr.base.BaseUtils; import com.fr.design.constants.UIConstants; import com.fr.design.border.UIRoundedBorder; import com.fr.design.gui.ibutton.UIButton; @@ -78,10 +79,29 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable { // center JPanel centerPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); this.add(centerPane, BorderLayout.CENTER); - + + // 第一行,1个取色按钮 + 7个最近使用的颜色 + JPanel row1Pane = new JPanel(FRGUIPaneFactory.createBorderLayout()); + row1Pane.setBorder(BorderFactory.createEmptyBorder(8, 8, 0, 0)); + row1Pane.setPreferredSize(new Dimension(135, 16)); // 宽度为 16 * 8 + 7 + centerPane.add(row1Pane); + + // 取色按钮 + UIButton pickColorButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/gui/colorSelectPane/colorPicker.png")); + pickColorButton.setPreferredSize(new Dimension(16, 16)); + pickColorButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); + pickColorButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + doPickColor(); + } + }); + row1Pane.add(pickColorButton, BorderLayout.WEST); + // 最近使用 - usedColorPane = new UsedColorPane(1, 8, ColorSelectConfigManager.getInstance().getColors(),this); - centerPane.add(usedColorPane.getPane()); + usedColorPane = new UsedColorPane(1, 7, ColorSelectConfigManager.getInstance().getColors(),this); + usedColorPane.getPane().setBorder(BorderFactory.createEmptyBorder(0, 1, 0, 8)); + row1Pane.add(usedColorPane.getPane()); JPanel menuColorPane1 = new JPanel(); centerPane.add(menuColorPane1); @@ -204,4 +224,12 @@ public class NewColorSelectPane extends BasicPane implements ColorSelectable { usedColorPane.updateUsedColor(); } + /** + * 打开取色框,开始取色 + */ + public void doPickColor() { + ColorPicker colorPicker = new ColorPicker(this); + colorPicker.start(); + } + } \ No newline at end of file