diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..dfe0770
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/.vs/BrailleArtist/v16/.suo b/.vs/BrailleArtist/v16/.suo
new file mode 100644
index 0000000..6fa0819
Binary files /dev/null and b/.vs/BrailleArtist/v16/.suo differ
diff --git a/BrailleArtist.sln b/BrailleArtist.sln
new file mode 100644
index 0000000..f79524d
--- /dev/null
+++ b/BrailleArtist.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31515.178
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BrailleArtist", "BrailleArtist\BrailleArtist.csproj", "{ED959311-ED20-4BC1-BA11-0077A691AE59}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {ED959311-ED20-4BC1-BA11-0077A691AE59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ED959311-ED20-4BC1-BA11-0077A691AE59}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ED959311-ED20-4BC1-BA11-0077A691AE59}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ED959311-ED20-4BC1-BA11-0077A691AE59}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {C2D464E3-0B02-40B0-82BE-481C82F3FD8B}
+ EndGlobalSection
+EndGlobal
diff --git a/BrailleArtist/.gitattributes b/BrailleArtist/.gitattributes
new file mode 100644
index 0000000..dfe0770
--- /dev/null
+++ b/BrailleArtist/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/BrailleArtist/App.config b/BrailleArtist/App.config
new file mode 100644
index 0000000..8e15646
--- /dev/null
+++ b/BrailleArtist/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BrailleArtist/App.xaml b/BrailleArtist/App.xaml
new file mode 100644
index 0000000..f3b97f7
--- /dev/null
+++ b/BrailleArtist/App.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/BrailleArtist/App.xaml.cs b/BrailleArtist/App.xaml.cs
new file mode 100644
index 0000000..a79c8c1
--- /dev/null
+++ b/BrailleArtist/App.xaml.cs
@@ -0,0 +1,11 @@
+using System.Windows;
+
+namespace BrailleArtist
+{
+ ///
+ /// App.xaml 的交互逻辑
+ ///
+ public partial class App : Application
+ {
+ }
+}
diff --git a/BrailleArtist/Assets/Fonts/iconfont.ttf b/BrailleArtist/Assets/Fonts/iconfont.ttf
new file mode 100644
index 0000000..2ff6cde
Binary files /dev/null and b/BrailleArtist/Assets/Fonts/iconfont.ttf differ
diff --git a/BrailleArtist/Assets/Langs/en-US.xaml b/BrailleArtist/Assets/Langs/en-US.xaml
new file mode 100644
index 0000000..edb2d6c
--- /dev/null
+++ b/BrailleArtist/Assets/Langs/en-US.xaml
@@ -0,0 +1,38 @@
+
+ Braille Artist
+ Setting
+ Language
+ About
+ Minimize
+ Maximize/Restore
+ Close
+ Drag in or click to import image
+ This file is not supported or be occupied!
+ Import Failed
+ OK
+ Import Image
+ Image File
+ Processing...
+ Invert Color
+ Rotate Clockwise
+ Rotate AntiClockwise
+ Flip Horizontally
+ Flip Vertically
+ Size:
+ Lock Aspect Ratio
+ Braille Art's Width =This / 2
+ Braille Art's Height =This / 4
+ Level:
+ Reset
+ Reset All Operations
+ Draw
+ Repaint The Braille Art
+ Copy
+ Copy The Entire Braille Art To The Clipboard
+ FontSize
+ Source
+ Software: Braille Artist Programming Language: C# .Net WPF Open Source Protocol: GPL Copyright 2021 © Shadlc
Introduction
This is a braille ASCII art generator. The traditional ASCII art generator is inefficient in space utilization. This software can use one braille as 8 pixels to generate ASCII art and display high-quality pictures in the text-only environment.
Help
Click or drag the file into the box which is in the upper left corner to import the image, then adjust the settings in the lower left corner. The level slider allows users to customize the brightness of the braille art for different effects. After that, click the draw button to generate the braille art. The slider in the upper right side can adjust the fontsize of the braille art for the best display size. You can also press Ctrl and scroll the mouse wheel on the braille art to zoom the size. Finally click the copy button to copy the entire braille art to clipboard.
+
\ No newline at end of file
diff --git a/BrailleArtist/Assets/Langs/zh-CN.xaml b/BrailleArtist/Assets/Langs/zh-CN.xaml
new file mode 100644
index 0000000..bad552f
--- /dev/null
+++ b/BrailleArtist/Assets/Langs/zh-CN.xaml
@@ -0,0 +1,38 @@
+
+ 盲文字符画
+ 设置
+ 语言
+ 关于
+ 最小化
+ 最大化/还原
+ 关闭
+ 拖入或点击此处导入图片
+ 不支持该文件或文件被占用!
+ 导入失败
+ 好的
+ 导入图片
+ 图片文件
+ 处理中...
+ 反色
+ 顺时针旋转
+ 逆时针旋转
+ 左右翻转
+ 上下翻转
+ 大小:
+ 锁定长宽比
+ 字符画宽 = 此框数值 / 2
+ 字符画高 = 此框数值 / 4
+ 着色度:
+ 重置
+ 重置所有操作
+ 绘制
+ 重新绘制像素画
+ 复制
+ 将整个字符画复制到剪贴板
+ 字号
+ 源代码
+ 软件名:盲文字符画生成器 编程语言:C# .Net WPF 开源协议:GPL Copyright 2021 © 似然于此
软件介绍
这是一款图形界面的盲文字符画生成器,传统的字符画生成器空间利用低效,此软件能够利用一个盲文字符作为八个像素点生成字符画,在纯文本环境下展示高质量图片。
使用帮助
点击或将文件拖入软件左上角的大框进行图片的导入,调整左下角的设置与参数。着色度滑条让用户能够自定义字符画颜色的深浅实现不同的效果,点击绘制按钮生成字符画。右侧上方的滑条能够调整展示字符画的字号,以供最佳的展示大小,也可以在字符画上按住Ctrl然后滚动鼠标滚轮进行缩放,最后点击复制按钮将整个字符画复制到剪贴板。
+
\ No newline at end of file
diff --git a/BrailleArtist/Assets/Styles/DefaultStyle.xaml b/BrailleArtist/Assets/Styles/DefaultStyle.xaml
new file mode 100644
index 0000000..95b8e60
--- /dev/null
+++ b/BrailleArtist/Assets/Styles/DefaultStyle.xaml
@@ -0,0 +1,873 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ F1 M 10.0,1.2 L 4.7,9.1 L 4.5,9.1 L 0,5.2 L 1.3,3.5 L 4.3,6.1L 8.3,0 L 10.0,1.2 Z
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ M 0,4 L 3.5,0 L 7,4 Z
+
+
+ M 0,0 L 3.5,4 L 7,0 Z
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ M 0,0 L 4,3.5 L 0,7 Z
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BrailleArtist/BrailleArtist.csproj b/BrailleArtist/BrailleArtist.csproj
new file mode 100644
index 0000000..2443419
--- /dev/null
+++ b/BrailleArtist/BrailleArtist.csproj
@@ -0,0 +1,134 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {ED959311-ED20-4BC1-BA11-0077A691AE59}
+ WinExe
+ BrailleArtist
+ Braille Artist
+ v4.5
+ 512
+ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 4
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ true
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ true
+ false
+
+
+ icon.ico
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ MSBuild:Compile
+ Designer
+
+
+ MSBuild:Compile
+ Designer
+
+
+ App.xaml
+ Code
+
+
+
+
+
+
+
+ IMessageBox.xaml
+
+
+ MainView.xaml
+ Code
+
+
+
+
+ Code
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BrailleArtist/BrailleArtist.csproj.user b/BrailleArtist/BrailleArtist.csproj.user
new file mode 100644
index 0000000..c10e84b
--- /dev/null
+++ b/BrailleArtist/BrailleArtist.csproj.user
@@ -0,0 +1,6 @@
+
+
+
+ ProjectFiles
+
+
\ No newline at end of file
diff --git a/BrailleArtist/Common/CommandBase.cs b/BrailleArtist/Common/CommandBase.cs
new file mode 100644
index 0000000..c071d24
--- /dev/null
+++ b/BrailleArtist/Common/CommandBase.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Windows.Input;
+
+namespace BrailleArtist.Common
+{
+ public class CommandBase : ICommand
+ {
+ public event EventHandler CanExecuteChanged
+ {
+ add { CommandManager.RequerySuggested += value; }
+ remove { CommandManager.RequerySuggested -= value; }
+ }
+
+ public bool CanExecute(object parameter)
+ {
+ return DoCanExecute?.Invoke(parameter) == true;
+ }
+
+ public void Execute(object parameter)
+ {
+ DoExecute?.Invoke(parameter);
+ }
+
+ public Action