From 621a46bf406a39ce4b02b7e308a0b49f62d48e6e Mon Sep 17 00:00:00 2001 From: Tiffanylyt <3543922075@qq.com> Date: Mon, 16 Dec 2024 09:17:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BC=A9=E6=94=BE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BB=A5=E5=8F=8A=E5=9B=BE=E6=A0=87=E4=B8=AA?= =?UTF-8?q?=E5=88=AB=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/libraries/lib.xml | 10 +++ PaintingBoard.iml | 1 + src/Codes/start/MyFrame.java | 19 +++++- src/Codes/tools/DrawPanel.java | 37 ++++++++--- src/Codes/tools/MyMenu.java | 113 ++++++++++----------------------- src/Codes/tools/MyZoom.java | 95 +++++++++++++++++++++++++++ src/image/pencil2.png | Bin 4664 -> 14178 bytes src/image/themeicon.png | Bin 2176 -> 8629 bytes 8 files changed, 185 insertions(+), 90 deletions(-) create mode 100644 .idea/libraries/lib.xml create mode 100644 src/Codes/tools/MyZoom.java diff --git a/.idea/libraries/lib.xml b/.idea/libraries/lib.xml new file mode 100644 index 0000000..bf85dad --- /dev/null +++ b/.idea/libraries/lib.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/PaintingBoard.iml b/PaintingBoard.iml index c90834f..615e3ef 100644 --- a/PaintingBoard.iml +++ b/PaintingBoard.iml @@ -7,5 +7,6 @@ + \ No newline at end of file diff --git a/src/Codes/start/MyFrame.java b/src/Codes/start/MyFrame.java index e14d2cd..2a03375 100644 --- a/src/Codes/start/MyFrame.java +++ b/src/Codes/start/MyFrame.java @@ -4,12 +4,13 @@ import Codes.tools.*; import javax.swing.*; +import javax.swing.event.ChangeEvent; import java.awt.*; import java.awt.event.*; +import java.awt.geom.AffineTransform; import java.io.Serial; import java.util.Objects; - public class MyFrame extends JFrame { @Serial @@ -18,6 +19,9 @@ public class MyFrame extends JFrame { * 保存文件的标志 */ public static int saved = 0; + static int height; + static int width; + static double offSetX, offSetY, zoomlvl; /** @@ -78,6 +82,7 @@ public class MyFrame extends JFrame { 粗细调节滑动条 */ public static MySlide slider; + public static MyZoom zoom; MyFrame() { init(); @@ -104,7 +109,7 @@ private void init() { // slider.add(Box.createVerticalGlue()); // 添加弹性空间 slider = new MySlide(); add(slider, BorderLayout.EAST); - + //add(zoom, BorderLayout.SOUTH); // 添加菜单 menu = new MyMenu(this); @@ -127,8 +132,16 @@ private void init() { // 创建各种基本图形的按钮 drawingArea = new DrawPanel(); this.add(drawingArea, BorderLayout.CENTER); + zoom=new MyZoom(drawingArea); statusBar = new JLabel(); - this.add(statusBar, BorderLayout.SOUTH); + JPanel southPanel = new JPanel(); + southPanel.setLayout(new BoxLayout(southPanel, BoxLayout.X_AXIS)); + + southPanel.add(statusBar); + southPanel.add(Box.createHorizontalStrut(30)); // 添加间距 + southPanel.add(zoom); + + add(southPanel, BorderLayout.SOUTH); statusBar.setText("坐标"); /* diff --git a/src/Codes/tools/DrawPanel.java b/src/Codes/tools/DrawPanel.java index ed413f8..87c5265 100644 --- a/src/Codes/tools/DrawPanel.java +++ b/src/Codes/tools/DrawPanel.java @@ -8,6 +8,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; +import java.awt.geom.AffineTransform; import java.io.Serial; import java.util.Objects; @@ -21,7 +22,8 @@ public class DrawPanel extends JPanel @Serial private static final long serialVersionUID = 1L; - + private double zoomLevel = 1.0; + private double offsetX = 0, offsetY = 0; public DrawPanel() { // 设置光标类型,为十字形 this.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); @@ -31,19 +33,34 @@ public DrawPanel() { this.addMouseListener(new MouseAction()); this.addMouseMotionListener(new MouseMotion()); } - + public void setZoomAndOffset(double zoom, double offsetX, double offsetY) { + this.zoomLevel = zoom; + this.offsetX = offsetX; + this.offsetY = offsetY; + repaint(); + } //重写paintComponent方法,使得画板每次刷新时可将之前的所有图形重新画出来。 @Override public void paintComponent(Graphics g) { super.paintComponent(g); - Graphics2D g2d = (Graphics2D) g; // 定义画板 - int j = 0; + Graphics2D g2d = (Graphics2D) g; - while (j <= index) { - draw(g2d, itemList[j]); - j++; + // 保存当前变换 + AffineTransform originalTransform = g2d.getTransform(); + // 应用缩放和平移 + g2d.translate(offsetX, offsetY); + g2d.scale(zoomLevel, zoomLevel); + + // 绘制所有图形 + for (int j = 0; j <= index; j++) { + if (itemList[j] != null) { + draw(g2d, itemList[j]); + } } + + // 恢复原始变换 + g2d.setTransform(originalTransform); } void draw(Graphics2D g2d, AbstractShape abstractShape) { @@ -69,6 +86,7 @@ void draw(Graphics2D g2d, AbstractShape abstractShape) { // // System.out.println(index); // } + public void undo() { if (index > 0) { // 确保有图形可以撤销 System.out.println(index); @@ -241,5 +259,8 @@ public void mouseMoved(MouseEvent e) { statusBar.setText("坐标:[" + e.getX() + "," + e.getY() + "]像素"); } } - + public void setZoomLevel(double zoomLevel) { + this.zoomLevel = zoomLevel; + repaint(); // 重新绘制面板 + } } diff --git a/src/Codes/tools/MyMenu.java b/src/Codes/tools/MyMenu.java index 0af44e5..8ba6e75 100644 --- a/src/Codes/tools/MyMenu.java +++ b/src/Codes/tools/MyMenu.java @@ -2,13 +2,11 @@ import Codes.start.MyFrame; import Codes.start.Start; -import javafx.geometry.Pos; -import javafx.scene.control.Label; -import javafx.scene.control.Slider; -import javafx.scene.layout.HBox; import javax.imageio.ImageIO; import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.filechooser.FileFilter; import java.awt.*; import java.awt.event.InputEvent; @@ -23,10 +21,6 @@ * 菜单初始化部分 */ public class MyMenu { - static int height; - static int width; - static double offSetX, offSetY, zoomlvl; - private final String[] strokes = {"/image/stroke1.png", "/image/stroke2.png", "/image/stroke3.png", "/image/stroke4.png"}; @@ -37,8 +31,8 @@ public MyMenu(MyFrame frame) { void addMenu(MyFrame frame) { /* - ** 顶部菜单条 - */ + ** 顶部菜单条 + */ JMenuBar jMenuBar = new JMenuBar(); JMenuItem[] strokeItems = new JMenuItem[strokes.length]; @@ -212,76 +206,39 @@ void openFile() { if (fileName.getName().isEmpty()) { JOptionPane.showMessageDialog(fileChooser, "无效的文件名", "无效的文件名", JOptionPane.ERROR_MESSAGE); } - /* - BufferedImage image; -try { - image = ImageIO.read(fileName); - if (image == null) { - JOptionPane.showMessageDialog(MyFrame.this, "无法读取图片!"); - return; - } - - // 获取图片原始尺寸 - int imgWidth = image.getWidth(); - int imgHeight = image.getHeight(); - - // 设置画布大小为图片大小 - drawingArea.setPreferredSize(new Dimension(imgWidth, imgHeight)); - drawingArea.revalidate(); - drawingArea.repaint(); - - // 如果需要缩放图片适应画布(可选) - int canvasWidth = drawingArea.getWidth(); - int canvasHeight = drawingArea.getHeight(); - if (canvasWidth > 0 && canvasHeight > 0) { - // 按比例缩放图片 - Image scaledImage = image.getScaledInstance(canvasWidth, canvasHeight, Image.SCALE_SMOOTH); - BufferedImage resizedImage = new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_INT_ARGB); - Graphics2D g2d = resizedImage.createGraphics(); - g2d.drawImage(scaledImage, 0, 0, null); - g2d.dispose(); - image = resizedImage; - } - - // 更新画布显示图片 - index = 0; - currentChoice = 0; - drawingArea.createNewGraphics(); - itemList[index].image = image; - itemList[index].board = drawingArea; - drawingArea.repaint(); - index++; - currentChoice = 3; - drawingArea.createNewGraphics(); - ColorChanger colorChanger=new ColorChanger(drawingArea); - colorChanger.processImage(image); -} catch (IOException e) { - e.printStackTrace(); -} - * */ - BufferedImage image; - - //添加窗口缩放 - - HBox zoom = new HBox(10); - zoom.setAlignment(Pos.CENTER); - Slider zoomLvl = new Slider(); - zoomLvl.setMax(4); - zoomLvl.setMin(1); - zoomLvl.setMaxWidth(200); - zoomLvl.setMinWidth(200); - javafx.scene.control.Label hint = new javafx.scene.control.Label("缩放程度"); - javafx.scene.control.Label value = new Label("1.0"); - zoom.getChildren().addAll(hint, zoomLvl, value); - - offSetX = width / 2; - offSetY = height / 2; - try { index = 0; currentChoice = 0; - image = ImageIO.read(fileName); + BufferedImage image = ImageIO.read(fileName); + if (image == null) { + JOptionPane.showMessageDialog(Start.wds, "无法读取图片!"); + return; + } + + // 获取图片原始尺寸 + int imgWidth = image.getWidth(); + int imgHeight = image.getHeight(); + + // 设置画布大小为图片大小 + drawingArea.setPreferredSize(new Dimension(imgWidth, imgHeight)); + drawingArea.revalidate(); + drawingArea.repaint(); + + // 如果需要缩放图片适应画布(可选) + int canvasWidth = drawingArea.getWidth(); + int canvasHeight = drawingArea.getHeight(); + if (canvasWidth > 0 && canvasHeight > 0) { + // 按比例缩放图片 + Image scaledImage = image.getScaledInstance(canvasWidth, canvasHeight, Image.SCALE_SMOOTH); + BufferedImage resizedImage = new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_INT_ARGB); + Graphics2D g2d = resizedImage.createGraphics(); + g2d.drawImage(scaledImage, 0, 0, null); + g2d.dispose(); + image = resizedImage; + } + + // 更新画布显示图片 drawingArea.createNewGraphics(); itemList[index].image = image; itemList[index].board = drawingArea; @@ -292,9 +249,7 @@ void openFile() { } catch (IOException e) { e.printStackTrace(); } - } - private JFileChooser getjFileChooser() { // 文件选择器 JFileChooser fileChooser = new JFileChooser(); @@ -413,4 +368,4 @@ public String getDescription() { } -} +} \ No newline at end of file diff --git a/src/Codes/tools/MyZoom.java b/src/Codes/tools/MyZoom.java new file mode 100644 index 0000000..56ba3de --- /dev/null +++ b/src/Codes/tools/MyZoom.java @@ -0,0 +1,95 @@ +package Codes.tools; + +import Codes.tools.DrawPanel; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; +import java.util.Hashtable; + +public class MyZoom extends JPanel { + + private double zoomLevel = 1.0; // 当前缩放比例 + private DrawPanel drawingArea; // 绘图区域 + private JSlider zoomSlider; // 缩放滑动条 + private JLabel zoomValueLabel; // 显示缩放值的标签 + + public MyZoom(DrawPanel drawingArea) { + this.drawingArea = drawingArea; + initComponents(); + } + + private void initComponents() { + // 设置布局 + setLayout(new FlowLayout(FlowLayout.CENTER, 10, 5)); + + // 创建缩放滑动条 + zoomSlider = new JSlider(JSlider.HORIZONTAL, 10, 40, 10); // 最小值 10,最大值 40,初始值 10 + zoomSlider.setMajorTickSpacing(10); // 大刻度间隔 + zoomSlider.setMinorTickSpacing(1); // 小刻度间隔 + zoomSlider.setPaintTicks(false); // 显示刻度 + zoomSlider.setPaintLabels(false); // 显示刻度标签 + zoomSlider.setPreferredSize(new Dimension(200, 50)); // 设置滑动条大小 + + // 自定义刻度标签 + Hashtable labelTable = new Hashtable<>(); + for (int i = 10; i <= 40; i += 1) { + labelTable.put(i, new JLabel(String.format("%.1f", i / 10.0))); + } + zoomSlider.setLabelTable(labelTable); + + // 创建缩放值标签 + zoomValueLabel = new JLabel("1.0"); + zoomValueLabel.setFont(new Font("宋体", Font.PLAIN, 14)); + + // 添加滑动条和标签到面板 + add(new JLabel("缩放程度:")); + add(zoomSlider); + add(zoomValueLabel); + + // 添加滑动条值变化监听器 + zoomSlider.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + // 获取滑动条的值 + int sliderValue = zoomSlider.getValue(); + zoomLevel = sliderValue / 10.0; // 将整数值转换为小数值 + + // 更新缩放值标签 + zoomValueLabel.setText(String.format("%.1f", zoomLevel)); + + // 更新绘图区域的缩放比例 + updateZoom(); + } + }); + } + + private void updateZoom() { + // 获取绘图区域的大小 + int width = drawingArea.getWidth(); + int height = drawingArea.getHeight(); + + // 计算缩放后的偏移量 + double offSetX = width / 2; + double offSetY = height / 2; + + // 调整偏移量以保持缩放中心 + if (offSetX < (width / zoomLevel) / 2) { + offSetX = (width / zoomLevel) / 2; + } + if (offSetX > width - ((width / zoomLevel) / 2)) { + offSetX = width - ((width / zoomLevel) / 2); + } + if (offSetY < (height / zoomLevel) / 2) { + offSetY = (height / zoomLevel) / 2; + } + if (offSetY > height - ((height / zoomLevel) / 2)) { + offSetY = height - ((height / zoomLevel) / 2); + } + + // 更新绘图区域的缩放比例 + drawingArea.setZoomLevel(zoomLevel); + drawingArea.repaint(); // 重新绘制绘图区域 + } +} \ No newline at end of file diff --git a/src/image/pencil2.png b/src/image/pencil2.png index 8fe40f3a7e202baf7b9c1471da648fce2a8f0e43..0f57a74cbfff95945ef6d0456830c012323e64b0 100644 GIT binary patch literal 14178 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 diff --git a/src/image/themeicon.png b/src/image/themeicon.png index 1b32b741cc92e26e76b421706563d600bcd6af61..ba3231a79abd1a8c51b99644884b25a3e49b83be 100644 GIT binary patch literal 8629 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 M6rU)R$eH{9A7~8?egFUf literal 2176 zcmZ9Nc{tSj9>;$vOruWDNzEY3l!!131~VkPvBddNX_Ui^!7z(vhOs1)!eexlNDSek zWJ{K^j5VRUa?@Bk<>X{3#bn7Axj)_eJhywE@ALhBp6~nfdcQy4|Gr6X$Lx2)mEZsX z>?AqZfKWwlZkP;ozU7-QLuFflrHds1RQ)cu<|_@|)u|4k3jjoF0zhm$0IWh%?0WzR z#Q?yR4*(D{0RRyqZ1~j-YRFKW>}`OJ&6Ov*odzkgJd%s8>>tv5)=2ZG)U;)#zR)ntRagDvx{u+ba8zOqLL{%? zkrlMFT%i(f+cbN^%b6j%183$lU#b?Ald|zjF73_%ng&se&pw$)Z6t)w?boK49+y8i zN}a80?%ewElH}4x^`oz6*5-zCgoMzf=&$(wMOM;VbYMU0v>ur4^-ZyyG<8>d(^h}O z`)%^ltz}7U*Npkm4DwxZDp}8e^a;7jP4Ku7ZdU}KvXa?i6(m`|FJ3wQ@yXij;%ruL z24bRQ(I~L@pL0d;v^Ms9e!ujS{5C0xnX%wxW{!lVqYy`IKeSo{FJM~c55eA13ftpS zEytR6-!y7SUu>AX#+n=?-HyiTXCS`KzB;_al`+=0tI|rL72O;qdsbsM7TbJnd}fAY zdhQ{pr>fsYxo^Q32(nd9m$ArOwbS$iVdB#Bgo?q{uQDGyjAeX3n@ZM3Y6hdZf$Nt) z6pGrD++(EG0hrWz6gJ8?-%dnU@yMdwzT}4lcXZE9@)xpcGI9t<9ppsQ-q_on3%GYGmR|k)JR$hQs}8XbWk4r zB_8$C{?r+vby->J%OiKl5qjBVS*U{?6=XCvZN8jJCRQ{!y-xi)fgZExh{t(eu4>N~D1wF862 z2jiEWkun$QC+{yTWnK&J%SnE}f?t0Zr~5!i4*HxR-ePwq&0(nTRAa#UqrPues3tAA z_?Sc`g4NBPFT~DRs=E`77qPgZKW7#}IZ8~C>Rqu|FabIm4$(e!TzLqzMswNuuxquC#g;11@3W`M+9Kzn~ z!PV__G_uVi=4L97HYv;IdpcOvHMacRATS&BE72rz=Uxlz2BNJUSEkz3gkx_-4}k>zvK+UKJ8JXO*F|{DE|N69&&Kw-CSH!-ui(tW+PYQ(r zat0m?xZpRBY6m0ba%#u;hl6`W=-lk+u>;xmS+ZAVCf0@(o7Y-*OMcoX4MP=vX&%i# z;+fP{$5wjCTt7OUVOMM7ofwA;ze!K42&*3WD~J1qSlsU^?iU~i z@k7pknUi!sUf?FO@7&hc5Tf`4;zDQAco88q;QOo5A*=w4`zMb5Eyu+Jq5!M`#>m*f zzzBo!h{8=k$nGC<-06`Jfx(-YV6BdSYS)I^K0maNgCxM8&Y%&{XmlW(NkjAbd=8t< zL$hdnE}i%Nu21vjM$oBjmOhKdLsR`&dUR&M|3oSa&E-(hMmR(4_XCgDhhE!l_pe}R O7C^E+W>aD16ZdaD0?l&( From a28364cd7ec9bea380c7540a8c3e15d47138be0d Mon Sep 17 00:00:00 2001 From: Tiffanylyt <3543922075@qq.com> Date: Mon, 16 Dec 2024 16:26:00 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BC=A9=E6=94=BE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BB=A5=E5=8F=8A=E5=9B=BE=E6=A0=87=E4=B8=AA?= =?UTF-8?q?=E5=88=AB=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Codes/start/Start.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/Codes/start/Start.java b/src/Codes/start/Start.java index b979c85..8e7e335 100644 --- a/src/Codes/start/Start.java +++ b/src/Codes/start/Start.java @@ -6,13 +6,6 @@ public class Start { */ public static MyFrame wds; public static void main(String[] args) { - -// try { -// //调用Windows的文件系统 -// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); -// } catch (Exception e) { -// e.printStackTrace(); -// } wds = new MyFrame(); }