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();
}