Browse Source

项目初始化

Yumin 6 years ago
commit
cb24f44baa

+ 22 - 0
FaceChange.sln

@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.24720.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FaceChange", "FaceChange\FaceChange.csproj", "{A675CA63-51C8-495B-9572-5B325BB39075}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{A675CA63-51C8-495B-9572-5B325BB39075}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A675CA63-51C8-495B-9572-5B325BB39075}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A675CA63-51C8-495B-9572-5B325BB39075}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A675CA63-51C8-495B-9572-5B325BB39075}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

+ 186 - 0
FaceChange/AboutBox.Designer.cs

@@ -0,0 +1,186 @@
+namespace FaceChange
+{
+    partial class AboutBox
+    {
+        /// <summary>
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows 窗体设计器生成的代码
+
+        /// <summary>
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox));
+            this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
+            this.logoPictureBox = new System.Windows.Forms.PictureBox();
+            this.labelProductName = new System.Windows.Forms.Label();
+            this.labelVersion = new System.Windows.Forms.Label();
+            this.labelCopyright = new System.Windows.Forms.Label();
+            this.labelCompanyName = new System.Windows.Forms.Label();
+            this.textBoxDescription = new System.Windows.Forms.TextBox();
+            this.okButton = new System.Windows.Forms.Button();
+            this.tableLayoutPanel.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // tableLayoutPanel
+            // 
+            this.tableLayoutPanel.ColumnCount = 2;
+            this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F));
+            this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F));
+            this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
+            this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
+            this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
+            this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
+            this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3);
+            this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
+            this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
+            this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tableLayoutPanel.Location = new System.Drawing.Point(9, 8);
+            this.tableLayoutPanel.Name = "tableLayoutPanel";
+            this.tableLayoutPanel.RowCount = 6;
+            this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
+            this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
+            this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
+            this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
+            this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+            this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
+            this.tableLayoutPanel.Size = new System.Drawing.Size(417, 245);
+            this.tableLayoutPanel.TabIndex = 0;
+            // 
+            // logoPictureBox
+            // 
+            this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image")));
+            this.logoPictureBox.Location = new System.Drawing.Point(3, 3);
+            this.logoPictureBox.Name = "logoPictureBox";
+            this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
+            this.logoPictureBox.Size = new System.Drawing.Size(131, 239);
+            this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.logoPictureBox.TabIndex = 12;
+            this.logoPictureBox.TabStop = false;
+            // 
+            // labelProductName
+            // 
+            this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.labelProductName.Location = new System.Drawing.Point(143, 0);
+            this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+            this.labelProductName.MaximumSize = new System.Drawing.Size(0, 16);
+            this.labelProductName.Name = "labelProductName";
+            this.labelProductName.Size = new System.Drawing.Size(271, 16);
+            this.labelProductName.TabIndex = 19;
+            this.labelProductName.Text = "产品名称";
+            this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // labelVersion
+            // 
+            this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.labelVersion.Location = new System.Drawing.Point(143, 24);
+            this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+            this.labelVersion.MaximumSize = new System.Drawing.Size(0, 16);
+            this.labelVersion.Name = "labelVersion";
+            this.labelVersion.Size = new System.Drawing.Size(271, 16);
+            this.labelVersion.TabIndex = 0;
+            this.labelVersion.Text = "版本";
+            this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // labelCopyright
+            // 
+            this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.labelCopyright.Location = new System.Drawing.Point(143, 48);
+            this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+            this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 16);
+            this.labelCopyright.Name = "labelCopyright";
+            this.labelCopyright.Size = new System.Drawing.Size(271, 16);
+            this.labelCopyright.TabIndex = 21;
+            this.labelCopyright.Text = "版权";
+            this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // labelCompanyName
+            // 
+            this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.labelCompanyName.Location = new System.Drawing.Point(143, 72);
+            this.labelCompanyName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+            this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 16);
+            this.labelCompanyName.Name = "labelCompanyName";
+            this.labelCompanyName.Size = new System.Drawing.Size(271, 16);
+            this.labelCompanyName.TabIndex = 22;
+            this.labelCompanyName.Text = "公司名称";
+            this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // textBoxDescription
+            // 
+            this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.textBoxDescription.Location = new System.Drawing.Point(143, 99);
+            this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
+            this.textBoxDescription.Multiline = true;
+            this.textBoxDescription.Name = "textBoxDescription";
+            this.textBoxDescription.ReadOnly = true;
+            this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+            this.textBoxDescription.Size = new System.Drawing.Size(271, 116);
+            this.textBoxDescription.TabIndex = 23;
+            this.textBoxDescription.TabStop = false;
+            this.textBoxDescription.Text = "说明";
+            // 
+            // okButton
+            // 
+            this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+            this.okButton.Location = new System.Drawing.Point(339, 221);
+            this.okButton.Name = "okButton";
+            this.okButton.Size = new System.Drawing.Size(75, 21);
+            this.okButton.TabIndex = 24;
+            this.okButton.Text = "确定(&O)";
+            // 
+            // AboutBox
+            // 
+            this.AcceptButton = this.okButton;
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(435, 261);
+            this.Controls.Add(this.tableLayoutPanel);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "AboutBox";
+            this.Padding = new System.Windows.Forms.Padding(9, 8, 9, 8);
+            this.ShowIcon = false;
+            this.ShowInTaskbar = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "AboutBox";
+            this.tableLayoutPanel.ResumeLayout(false);
+            this.tableLayoutPanel.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
+        private System.Windows.Forms.PictureBox logoPictureBox;
+        private System.Windows.Forms.Label labelProductName;
+        private System.Windows.Forms.Label labelVersion;
+        private System.Windows.Forms.Label labelCopyright;
+        private System.Windows.Forms.Label labelCompanyName;
+        private System.Windows.Forms.TextBox textBoxDescription;
+        private System.Windows.Forms.Button okButton;
+    }
+}

+ 105 - 0
FaceChange/AboutBox.cs

@@ -0,0 +1,105 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Linq;
+using System.Reflection;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace FaceChange
+{
+    partial class AboutBox : Form
+    {
+        public AboutBox()
+        {
+            InitializeComponent();
+            this.Text = String.Format("关于 {0}", AssemblyTitle);
+            this.labelProductName.Text = AssemblyProduct;
+            this.labelVersion.Text = String.Format("版本 {0}", AssemblyVersion);
+            this.labelCopyright.Text = AssemblyCopyright;
+            this.labelCompanyName.Text = AssemblyCompany;
+            this.textBoxDescription.Text = AssemblyDescription;
+        }
+
+        #region 程序集特性访问器
+
+        public string AssemblyTitle
+        {
+            get
+            {
+                object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
+                if (attributes.Length > 0)
+                {
+                    AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
+                    if (titleAttribute.Title != "")
+                    {
+                        return titleAttribute.Title;
+                    }
+                }
+                return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
+            }
+        }
+
+        public string AssemblyVersion
+        {
+            get
+            {
+                return Assembly.GetExecutingAssembly().GetName().Version.ToString();
+            }
+        }
+
+        public string AssemblyDescription
+        {
+            get
+            {
+                object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
+                if (attributes.Length == 0)
+                {
+                    return "";
+                }
+                return ((AssemblyDescriptionAttribute)attributes[0]).Description;
+            }
+        }
+
+        public string AssemblyProduct
+        {
+            get
+            {
+                object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
+                if (attributes.Length == 0)
+                {
+                    return "";
+                }
+                return ((AssemblyProductAttribute)attributes[0]).Product;
+            }
+        }
+
+        public string AssemblyCopyright
+        {
+            get
+            {
+                object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
+                if (attributes.Length == 0)
+                {
+                    return "";
+                }
+                return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
+            }
+        }
+
+        public string AssemblyCompany
+        {
+            get
+            {
+                object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
+                if (attributes.Length == 0)
+                {
+                    return "";
+                }
+                return ((AssemblyCompanyAttribute)attributes[0]).Company;
+            }
+        }
+        #endregion
+    }
+}

+ 616 - 0
FaceChange/AboutBox.resx

@@ -0,0 +1,616 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="logoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
+</root>

+ 6 - 0
FaceChange/App.config

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
+    </startup>
+</configuration>

+ 13 - 0
FaceChange/App.xaml

@@ -0,0 +1,13 @@
+<Application x:Class="FaceChange.App"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:local="clr-namespace:FaceChange"
+             StartupUri="MainWindow.xaml">
+    <Application.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="FontAwesome.xaml"/>
+            </ResourceDictionary.MergedDictionaries>
+        </ResourceDictionary>
+    </Application.Resources>
+</Application>

+ 17 - 0
FaceChange/App.xaml.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace FaceChange
+{
+    /// <summary>
+    /// App.xaml 的交互逻辑
+    /// </summary>
+    public partial class App : Application
+    {
+    }
+}

+ 130 - 0
FaceChange/FaceChange.csproj

@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{A675CA63-51C8-495B-9572-5B325BB39075}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>FaceChange</RootNamespace>
+    <AssemblyName>FaceChange</AssemblyName>
+    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <WarningLevel>4</WarningLevel>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xaml">
+      <RequiredTargetFramework>4.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="WindowsBase" />
+    <Reference Include="PresentationCore" />
+    <Reference Include="PresentationFramework" />
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </ApplicationDefinition>
+    <Compile Include="SettingsWindow.xaml.cs">
+      <DependentUpon>SettingsWindow.xaml</DependentUpon>
+    </Compile>
+    <Page Include="FontAwesome.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="MainWindow.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Compile Include="AboutBox.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="AboutBox.Designer.cs">
+      <DependentUpon>AboutBox.cs</DependentUpon>
+    </Compile>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="MainWindow.xaml.cs">
+      <DependentUpon>MainWindow.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Page Include="SettingsWindow.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+    <EmbeddedResource Include="AboutBox.resx">
+      <DependentUpon>AboutBox.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <AppDesigner Include="Properties\" />
+    <Resource Include="Resources\fa-solid-900.ttf" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

+ 8 - 0
FaceChange/FontAwesome.xaml

@@ -0,0 +1,8 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+                    xmlns:local="clr-namespace:FaceChange">
+    <Style x:Key="FontAwesome">
+        <Setter Property="TextElement.FontFamily" Value="/FaceChange;component/Resources/#Font Awesome 5 Free Solid"/>
+        <Setter Property="TextElement.FontSize" Value="12"/>
+    </Style>
+</ResourceDictionary>

+ 19 - 0
FaceChange/MainWindow.xaml

@@ -0,0 +1,19 @@
+<Window x:Class="FaceChange.MainWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:FaceChange"
+        mc:Ignorable="d"
+        Title="魔幻变脸" Height="500" Width="500" KeyDown="Window_KeyDown">
+    <Grid>
+        <ToolBar x:Name="toolBar" VerticalAlignment="Top" Padding="0,0" Height="32">
+            <Button x:Name="settings" Content="&#xF013; 设置" ToolTip="设置" Style="{StaticResource FontAwesome}" Click="settings_Click" VerticalAlignment="Stretch"/>
+            <Separator/>
+            <Button x:Name="fullScreen" Content="&#xF31E; 全屏" ToolTip="全屏" Style="{StaticResource FontAwesome}" Click="fullScreen_Click" VerticalAlignment="Stretch"/>
+        </ToolBar>
+        <Viewbox HorizontalAlignment="Center">
+            <Image Source="{Binding ImageSource}" Stretch="UniformToFill" />
+        </Viewbox>
+    </Grid>
+</Window>

+ 61 - 0
FaceChange/MainWindow.xaml.cs

@@ -0,0 +1,61 @@
+using System.Windows;
+using System.Windows.Input;
+using System.Windows.Media;
+
+namespace FaceChange
+{
+    /// <summary>
+    /// MainWindow.xaml 的交互逻辑
+    /// </summary>
+    public partial class MainWindow : Window
+    {
+        private DrawingImage imageSource;
+
+        public MainWindow()
+        {
+            InitializeComponent();
+        }
+
+        private void Window_KeyDown(object sender, KeyEventArgs e)
+        {
+            if (e.Key == System.Windows.Input.Key.Escape)
+            {
+                toolBar.Visibility = Visibility.Visible;
+                Thickness thickness = new Thickness();
+                thickness.Top = 30;
+                //mediaElement.Margin = thickness;
+                this.WindowState = WindowState.Normal;
+                this.WindowStyle = WindowStyle.SingleBorderWindow;
+            }
+            if (e.Key == System.Windows.Input.Key.Space)
+            {
+                
+            }
+        }
+
+        public ImageSource ImageSource
+        {
+            get
+            {
+                return this.imageSource;
+            }
+        }
+
+        private void settings_Click(object sender, RoutedEventArgs e)
+        {
+            new SettingsWindow().ShowDialog();
+            //imageSource.Drawing = new DrawingImage();
+        }
+
+        private void fullScreen_Click(object sender, RoutedEventArgs e)
+        {
+            toolBar.Visibility = Visibility.Hidden;
+            Thickness thickness = new Thickness();
+            thickness.Top = 0;
+            //image.Margin = thickness;
+            this.Topmost = false;
+            this.WindowStyle = WindowStyle.None;
+            this.WindowState = WindowState.Maximized;
+        }
+    }
+}

+ 53 - 0
FaceChange/Properties/AssemblyInfo.cs

@@ -0,0 +1,53 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("魔幻变脸")]
+[assembly: AssemblyDescription("为易达工作室 - 互动艺术装置专家\r\n\r\n如需技术帮助请联系:Richard Wu\r\nWeChat:ffkyd188\r\nEmail:1029071285@qq.com")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("郑州为易达电子科技工作室")]
+[assembly: AssemblyProduct("魔幻变脸")]
+[assembly: AssemblyCopyright("Copyright ©  2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//将 ComVisible 设置为 false 将使此程序集中的类型
+//对 COM 组件不可见。  如果需要从 COM 访问此程序集中的类型,
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+//若要开始生成可本地化的应用程序,请
+//<PropertyGroup> 中的 .csproj 文件中
+//例如,如果您在源文件中使用的是美国英语,
+//使用的是美国英语,请将 <UICulture> 设置为 en-US。  然后取消
+//对以下 NeutralResourceLanguage 特性的注释。  更新
+//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+    ResourceDictionaryLocation.None, //主题特定资源词典所处位置
+                                     //(当资源未在页面
+                                     //或应用程序资源字典中找到时使用)
+    ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
+                                              //(当资源未在页面
+                                              //、应用程序或任何主题专用资源字典中找到时使用)
+)]
+
+
+// 程序集的版本信息由下列四个值组成: 
+//
+//      主版本
+//      次版本
+//      生成号
+//      修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”: :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 71 - 0
FaceChange/Properties/Resources.Designer.cs

@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本: 4.0.30319.42000
+//
+//     对此文件的更改可能导致不正确的行为,如果
+//     重新生成代码,则所做更改将丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace FaceChange.Properties
+{
+
+
+    /// <summary>
+    ///   强类型资源类,用于查找本地化字符串等。
+    /// </summary>
+    // 此类是由 StronglyTypedResourceBuilder
+    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+    // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // (以 /str 作为命令选项),或重新生成 VS 项目。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources()
+        {
+        }
+
+        /// <summary>
+        ///   返回此类使用的缓存 ResourceManager 实例。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if ((resourceMan == null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FaceChange.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   覆盖当前线程的 CurrentUICulture 属性
+        ///   使用此强类型的资源类的资源查找。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+    }
+}

+ 117 - 0
FaceChange/Properties/Resources.resx

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 30 - 0
FaceChange/Properties/Settings.Designer.cs

@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace FaceChange.Properties
+{
+
+
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+    {
+
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+        public static Settings Default
+        {
+            get
+            {
+                return defaultInstance;
+            }
+        }
+    }
+}

+ 7 - 0
FaceChange/Properties/Settings.settings

@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>

BIN
FaceChange/Resources/fa-solid-900.ttf


+ 42 - 0
FaceChange/SettingsWindow.xaml

@@ -0,0 +1,42 @@
+<Window x:Class="FaceChange.SettingsWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:FaceChange"
+        mc:Ignorable="d"
+        Title="设置" Height="500" Width="500" ResizeMode="NoResize">
+    <Grid>
+        <GroupBox Header="连接设备" Margin="10,10,10,0" VerticalAlignment="Top" Height="66">
+            <Grid Margin="10,10,10,10">
+                <Label Content="设备名称" HorizontalAlignment="Left" Height="24"/>
+                <ComboBox x:Name="comboBox" Margin="64,0,0,0" Height="24" VerticalAlignment="Top" HorizontalAlignment="Left" Width="230">
+                    <ComboBox.RenderTransform>
+                        <TransformGroup>
+                            <ScaleTransform/>
+                            <SkewTransform/>
+                            <RotateTransform Angle="0"/>
+                            <TranslateTransform/>
+                        </TransformGroup>
+                    </ComboBox.RenderTransform>
+                </ComboBox>
+                <Button x:Name="button" Content="扫描设备" Margin="299,0,0,0" Width="64" Height="24" HorizontalAlignment="Left"/>
+                <Button x:Name="button1" Content="连接设备" Margin="368,0,0,0" Width="64" Height="24" HorizontalAlignment="Left"/>
+            </Grid>
+        </GroupBox>
+        <GroupBox x:Name="groupBox" Header="脸谱列表" Margin="10,82,10,10">
+            <Grid Margin="10,10,10,10">
+                <Button x:Name="delete" Content="删除" HorizontalAlignment="Left" Margin="385,274,0,0" VerticalAlignment="Top" Width="47" Height="24" Background="White" Foreground="Red"/>
+                <Button x:Name="add" Content="添加" HorizontalAlignment="Left" Margin="385,303,0,0" VerticalAlignment="Top" Width="47" Height="24" Background="White" Foreground="Lime"/>
+                <ListView x:Name="listView" Margin="0,0,62,0">
+                    <ListView.View>
+                        <GridView>
+                            <GridViewColumn Header="脸谱" Width="72"/>
+                            <GridViewColumn Header="路径" Width="300"/>
+                        </GridView>
+                    </ListView.View>
+                </ListView>
+            </Grid>
+        </GroupBox>
+    </Grid>
+</Window>

+ 27 - 0
FaceChange/SettingsWindow.xaml.cs

@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace FaceChange
+{
+    /// <summary>
+    /// SettingsWindow.xaml 的交互逻辑
+    /// </summary>
+    public partial class SettingsWindow : Window
+    {
+        public SettingsWindow()
+        {
+            InitializeComponent();
+        }
+    }
+}