From f03204599e7ba210b888a0b5c833cc1e91c5fa17 Mon Sep 17 00:00:00 2001 From: ShiJh Date: Fri, 5 Mar 2021 19:33:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD=EF=BC=9A=E7=94=BB?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/ShotApp/v16/.suo | Bin 86528 -> 121344 bytes Properties/Resources.Designer.cs | 20 ++++ Properties/Resources.resx | 6 ++ Resources/eraserIcon.png | Bin 0 -> 1124 bytes Resources/penIcon.png | Bin 0 -> 694 bytes Screenshot.csproj | 22 +++-- View/ImgBox.cs | 160 +++++++++++++++++++++++++++++++ View/ImgBox.xaml | 44 ++++++++- View/ImgBox.xaml.cs | 30 +++++- View/MainWindow.xaml | 2 +- 10 files changed, 272 insertions(+), 12 deletions(-) create mode 100644 Resources/eraserIcon.png create mode 100644 Resources/penIcon.png create mode 100644 View/ImgBox.cs diff --git a/.vs/ShotApp/v16/.suo b/.vs/ShotApp/v16/.suo index 5cc040ca69c2aee5699f4812d92b43d46c1266b6..3a6085fb1ee89b1b6cf64ca56ec77045dea940f7 100644 GIT binary patch literal 121344 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 H*8lzgM6+)j delta 13582 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 OpFV_t + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap eraserIcon { + get { + object obj = ResourceManager.GetObject("eraserIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。 /// @@ -69,5 +79,15 @@ public class Resources { return ((System.Drawing.Icon)(obj)); } } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap penIcon { + get { + object obj = ResourceManager.GetObject("penIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/Properties/Resources.resx b/Properties/Resources.resx index fc6111e..36e1f06 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -118,7 +118,13 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\eraserIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\logo.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\penIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Resources/eraserIcon.png b/Resources/eraserIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..df259d91f0679617f2376ca88bffd9e545ce0573 GIT binary patch literal 1124 zcmV-q1e^PbP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1NlirK~!i%?b%sK zR8bhf@pJCIj!T(Q*}f2M7E!4|R76EkJycjKK?`Bw^wdkx@>UT+6wz~I5rOrfMo^Iz zgatthE=2`)J==0FZW|O>Joh(^AmUMLX zlJC7g^6-l;q)WBl2^{?;e*vbh^q zAaw*J{b#K>*fx#CNE82wdALM2ZkWtplWw!0vZ9?x34Luhm6g^aYV7~SoCgWc|UC1Vb-jkfYa~p-1`z30!o5ZRJR-@ zOgqC@4P3Ga{zM6Rw{<<+lNXpAky(I)eC{pHex|2zeoGGs^i)mDzUjiYl^U)2y<@(iaylY9D2 zh$CjiE55Ck}sI8oy+&#BIm;y+i8zGL^;;kzP literal 0 HcmV?d00001 diff --git a/Resources/penIcon.png b/Resources/penIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b2561c43cac45ace62e38dd64d6021060cdc54 GIT binary patch literal 694 zcmV;n0!jUeP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!v9mK~!i%?bp9+ z6hRcg@i(*Hk3vDk3-~`+3KoJv(in|Oz!Y|3pF$&e(PFhwqZmZ;2iRYdI}rSVg;us! zv9Y;UQixdTp3ZaL-n*a}Z)ay`Z#FQWX6Ma8$d}!@Y#<1NAPDxlxp&`=oO!7lJX#Ta z^&*Z@ewKv;w>ablv{6;D|&fixRd&-nzdD%7%w3U9gI{f zxe5x7^VXlNVkBQDO0|B>{wIPQl-~zS^Y7IZ&qln2$X4SG3h{}@-J~&>UaP}AXPR6{ zjCHuB=4rWpOeE1%Z7nNC)sxe_&NP`2ib$}dk7O6x>N;(i#O#aeeO_iNKV%dk#Km-$ zVilIv5-rEYD8Lt;Y59T2Oy!19!~oZKB1VLG47b${TJ9Euh_8Ax&F4HCDevod6anG_ z@B9n#COnXjXt}V3^pXX3ch)Ki_Y{Px|kX95!cPQP?$$iN1Ol;`K z=REIZ6R-^T#0pPV+@2Ae2!dGXg^{?sBeoHMcl4ummj`PRUyE7Puiz1E`idaM?+8U4 zfDQel=6J`Dy9iP&q#_Z-K7=Cnr;pP)-ZA7pg4l&rEP~_@sbB=j7cz|K>WH(vW2oE+ zVjeO)*!mr)dJ)9z@5oafF{o|?$-W~L@fmvhahl~FLz9aj<3nO>>emiB6P1o2<6jzo z;?cbjK^*^w=qG|W4DlC19EJFeAPz$ON05Rc)rcVDzkb_z2n1f^>2C;qSdq_o3W6XA cg1|q3-{58JJ!57dEdT%j07*qoM6N<$g6JDKF8}}l literal 0 HcmV?d00001 diff --git a/Screenshot.csproj b/Screenshot.csproj index 064e791..db84fbc 100644 --- a/Screenshot.csproj +++ b/Screenshot.csproj @@ -111,6 +111,11 @@ MSBuild:Compile Designer + + True + True + Resources.resx + Designer MSBuild:Compile @@ -123,6 +128,7 @@ App.xaml Code + ImgBox.xaml @@ -135,11 +141,6 @@ Code - - True - True - Resources.resx - True Settings.settings @@ -180,7 +181,16 @@ false - + + + PreserveNewest + + + + + PreserveNewest + + diff --git a/View/ImgBox.cs b/View/ImgBox.cs new file mode 100644 index 0000000..bdac1bd --- /dev/null +++ b/View/ImgBox.cs @@ -0,0 +1,160 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Shapes; + +namespace WpfApp.View +{ + public partial class ImgBox : Window + { + private void Pen_Click(object sender, RoutedEventArgs e) + { + if (!mode.Equals(Mode.Pen)) + { + ShutdownEraserMode(); + OpenPenMode(); + } + else + { + ShutdownPenMode(); + } + + } + + private void Eraser_Click(object sender, RoutedEventArgs e) + { + if (!mode.Equals(Mode.Eraser)) + { + ShutdownPenMode(); + OpenEraserMode(); + } + else + { + ShutdownEraserMode(); + } + } + + private void OpenEraserMode() + { + mode = Mode.Eraser; + this.MouseLeftButtonDown += RemoveLine; + } + + private void ShutdownEraserMode() + { + mode = Mode.Drag; + this.MouseLeftButtonDown -= RemoveLine; + } + + private void RemoveLine(object sender, MouseButtonEventArgs e) + { + Point p = e.GetPosition(this); + IEnumerator ie = this.Panel.Children.GetEnumerator(); + Line cur = null; + double min = 10; + while (ie.MoveNext()) + { + var elem = ie.Current as Line; + double dis = GetDistance(p, elem); + if (dis < min) + { + cur = elem; + min = dis; + } + } + if(cur != null) + { + this.Panel.Children.Remove(cur); + } + } + + private double GetDistance(Point p, Line l) + { + double k = (l.Y2 - l.Y1) / (l.X2 - l.X1); + double a = k; + double b = -1; + double c = l.Y1 - k * l.X1; + double fz = Math.Abs(a * p.X + b * p.Y + c); + double fm = Math.Sqrt(a * a + b * b); + return fz / fm; + } + + private void OpenPenMode() + { + mode = Mode.Pen; + this.Cursor = Cursors.Pen; + this.MouseLeftButtonUp += StopDrawLine; + this.MouseLeftButtonDown += StartDrawLine; + this.MouseMove += DrawLine; + } + + private void ShutdownPenMode() + { + mode = Mode.Drag; + this.Cursor = Cursors.Arrow; + this.MouseLeftButtonUp -= StopDrawLine; + this.MouseLeftButtonDown -= StartDrawLine; + this.MouseMove -= DrawLine; + } + + private Line line; + + private void StartDrawLine(object sender, MouseEventArgs e) + { + var p = e.GetPosition(this); + line = new Line(); + line.Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0)); + line.StrokeThickness = 3; + line.X1 = p.X; + line.Y1 = p.Y; + this.Panel.Children.Add(line); + } + + private void DrawLine(object sender, MouseEventArgs e) + { + if(e.LeftButton == MouseButtonState.Pressed) + { + Point p = e.GetPosition(this); + if (line != null) + { + line.X2 = p.X; + line.Y2 = p.Y; + } + } + } + + private void StopDrawLine(object sender, MouseEventArgs e) + { + line = null; + } + + private void Bar_MouseEnter(object sender, MouseEventArgs e) + { + this.Bar.Width = rw; + } + + private void Bar_MouseLeave(object sender, MouseEventArgs e) + { + this.Bar.Width = 15; + } + + private void Bar_KeyDown(object sender, KeyEventArgs e) + { + Console.WriteLine(e.Key); + if(e.Key.Equals(Key.Escape)) + { + if (!mode.Equals(Mode.Drag)) + { + ShutdownEraserMode(); + ShutdownPenMode(); + } + } + } + } +} diff --git a/View/ImgBox.xaml b/View/ImgBox.xaml index cc29e78..1f22fc8 100644 --- a/View/ImgBox.xaml +++ b/View/ImgBox.xaml @@ -5,13 +5,53 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp.View" mc:Ignorable="d" - Title="ImgBox" MouseMove="WindowDrag" Topmost="True" SizeChanged="img_SizeChanged" WindowStyle="None" Background="White" + KeyDown="Bar_KeyDown" + Title="ImgBox" MouseMove="Mouse_Move" Topmost="True" SizeChanged="img_SizeChanged" WindowStyle="None" Background="{x:Null}" ResizeMode="NoResize" BorderThickness="0.5" Height="424" Width="663"> + + + - + + + + + + + + + diff --git a/View/ImgBox.xaml.cs b/View/ImgBox.xaml.cs index 05e51f0..cdd9687 100644 --- a/View/ImgBox.xaml.cs +++ b/View/ImgBox.xaml.cs @@ -10,12 +10,22 @@ namespace WpfApp.View { + + enum Mode + { + Drag, + Pen, + Eraser, + } + /// /// ImgBox.xaml 的交互逻辑 /// public partial class ImgBox : Window { private double scale; + private Mode mode = Mode.Drag; + private double rw; public ImgBox(ImageSource image, double width, double height) { @@ -29,12 +39,21 @@ public ImgBox(ImageSource image, double width, double height) scale = width / height; img.Source = image; + + rw = this.Bar.Width; + this.Bar.Width = 15; } - private void WindowDrag(object sender, MouseEventArgs e) + private void Mouse_Move(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) - this.DragMove(); + { + if (mode.Equals(Mode.Drag)) + { + this.DragMove(); + } + } + } private void ExitItem_Click(object sender, RoutedEventArgs e) @@ -50,7 +69,7 @@ private void CopyItem_Click(object sender, RoutedEventArgs e) private void SaveItem_Click(object sender, RoutedEventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); - sfd.Filter = "Image Files (*.bmp, *.png, *.jpg)|*.bmp;*.png;*.jpg | All Files | *.*"; + sfd.Filter = "Image Files (*.png, *.bmp, *.jpg)|*.png;*.bmp;*.jpg | All Files | *.*"; sfd.RestoreDirectory = true;//保存对话框是否记忆上次打开的目录 if (sfd.ShowDialog().GetValueOrDefault()) { @@ -86,5 +105,10 @@ private void Grid_MouseWheel(object sender, MouseWheelEventArgs e) this.Height = this.Width / scale; } } + + private void ClearItem_Click(object sender, RoutedEventArgs e) + { + this.Panel.Children.Clear(); + } } } diff --git a/View/MainWindow.xaml b/View/MainWindow.xaml index fa3c1b9..6d24307 100644 --- a/View/MainWindow.xaml +++ b/View/MainWindow.xaml @@ -13,6 +13,6 @@ - + \ No newline at end of file