Commit ca552351 by 陶然

增加图片裁剪功能

parent 6aa54289
using System.Drawing;
using System.Windows.Forms;
namespace Kivii.Sample.ImageUploader.Controls
{
public class ImageResizer : Control
{
public string fileName;
public ImageResizer()
{
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
//this.BackColor = Color.Empty;
this.BackColor = Color.Transparent;
//this.BackColor = Color.FromArgb(50, Color.Red);
//以下是设置双缓冲的代码 要不然在下面onPaint里的绘制半透明背景会让你很伤心,或者上面那句设置半透明背景用了过后拖动时也会让你跟蜗牛一样。
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
this.SetStyle(ControlStyles.DoubleBuffer, true);
}
public Size border;
private System.Drawing.Point m_MousePoint;
private Size m_Size;
private System.Drawing.Point m_LastPoint;
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
this.m_LastPoint = this.Location;
this.m_MousePoint = this.PointToScreen(e.Location);
this.m_Size = this.Size;
//this.BackColor = Color.Empty;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (arow != arrowType.none)
{
ReResize(e);
return;
}
if (e.Y <= recArrow[4].Bottom && e.Y >= recArrow[4].Top && e.X >= recArrow[4].Left && e.X <= recArrow[4].Right)//左上
Cursor = Cursors.SizeNWSE;
else if (e.Y <= recArrow[5].Bottom && e.Y >= recArrow[5].Top && e.X >= recArrow[5].Left && e.X <= recArrow[5].Right)//左下
Cursor = Cursors.SizeNESW;
else if (e.Y <= recArrow[6].Bottom && e.Y >= recArrow[6].Top && e.X >= recArrow[6].Left && e.X <= recArrow[6].Right)//右上
Cursor = Cursors.SizeNESW;
else if (e.Y <= recArrow[7].Bottom && e.Y >= recArrow[7].Top && e.X >= recArrow[7].Left && e.X <= recArrow[7].Right)//右下
Cursor = Cursors.SizeNWSE;
else if (e.Y <= recArrow[0].Bottom && e.Y >= recArrow[0].Top)//上
Cursor = Cursors.SizeNS;
else if (e.Y <= recArrow[1].Bottom && e.Y >= recArrow[1].Top)//下
Cursor = Cursors.SizeNS;
else if (e.X >= recArrow[2].Left && e.X <= recArrow[2].Right)//左
Cursor = Cursors.SizeWE;
else if (e.X >= recArrow[3].Left && e.X <= recArrow[3].Right)//右
Cursor = Cursors.SizeWE;
else
Cursor = Cursors.SizeAll;
if (e.Button == MouseButtons.Left)
{
System.Drawing.Point t = this.PointToScreen(e.Location);
System.Drawing.Point l = this.m_LastPoint;
if (e.Y <= recArrow[4].Bottom && e.Y >= recArrow[4].Top && e.X >= recArrow[4].Left && e.X <= recArrow[4].Right)//左上
arow = arrowType.leftUp;
else if (e.Y <= recArrow[5].Bottom && e.Y >= recArrow[5].Top && e.X >= recArrow[5].Left && e.X <= recArrow[5].Right)//左下
arow = arrowType.leftDown;
else if (e.Y <= recArrow[6].Bottom && e.Y >= recArrow[6].Top && e.X >= recArrow[6].Left && e.X <= recArrow[6].Right)//右上
arow = arrowType.rightUp;
else if (e.Y <= recArrow[7].Bottom && e.Y >= recArrow[7].Top && e.X >= recArrow[7].Left && e.X <= recArrow[7].Right)//右下
arow = arrowType.rightDown;
else if (e.Y <= recArrow[0].Bottom && e.Y >= recArrow[0].Top)//上
arow = arrowType.up;
else if (e.Y <= recArrow[1].Bottom && e.Y >= recArrow[1].Top)//下
arow = arrowType.down;
else if (e.X >= recArrow[2].Left && e.X <= recArrow[2].Right)//左
arow = arrowType.left;
else if (e.X >= recArrow[3].Left && e.X <= recArrow[3].Right)//右
arow = arrowType.right;
else
arow = arrowType.none;
l.Offset(t.X - this.m_MousePoint.X, t.Y - this.m_MousePoint.Y);
if (arow != arrowType.none)
ReResize(e);
else
{
this.Location = l;
Refresh();//这句很重要立即重绘 不然拖动到时候会出现卡卡 的现象 ,找了半天原因
}
}
}
public void ReResize(MouseEventArgs e)
{
System.Drawing.Point t = this.PointToScreen(e.Location);
System.Drawing.Point l = this.m_LastPoint;
l.Offset(t.X - this.m_MousePoint.X, t.Y - this.m_MousePoint.Y);
switch (arow)
{
case arrowType.up:
{
this.Height = m_Size.Height - (t.Y - this.m_MousePoint.Y);
this.Location = new System.Drawing.Point(m_LastPoint.X, l.Y);
break;
}
case arrowType.down:
{
this.Height = m_Size.Height + (t.Y - this.m_MousePoint.Y);
break;
}
case arrowType.left:
{
this.Width = m_Size.Width - (t.X - this.m_MousePoint.X);
this.Location = new System.Drawing.Point(l.X, m_LastPoint.Y);
break;
}
case arrowType.right:
{
this.Width = m_Size.Width + (t.X - this.m_MousePoint.X);
break;
}
case arrowType.leftUp:
{
this.Width = m_Size.Width - (t.X - this.m_MousePoint.X);
this.Height = m_Size.Height - (t.Y - this.m_MousePoint.Y);
this.Location = new System.Drawing.Point(l.X, l.Y);
break;
}
case arrowType.leftDown:
{
this.Width = m_Size.Width - (t.X - this.m_MousePoint.X);
this.Height = m_Size.Height + (t.Y - this.m_MousePoint.Y);
this.Location = new System.Drawing.Point(l.X, m_LastPoint.Y);
break;
}
case arrowType.rightUp:
{
this.Width = m_Size.Width + (t.X - this.m_MousePoint.X);
this.Height = m_Size.Height - (t.Y - this.m_MousePoint.Y);
this.Location = new System.Drawing.Point(m_LastPoint.X, l.Y);
break;
}
case arrowType.rightDown:
{
this.Width = m_Size.Width + (t.X - this.m_MousePoint.X);
this.Height = m_Size.Height + (t.Y - this.m_MousePoint.Y);
break;
}
}
this.Refresh();
}
public enum arrowType
{
up, down, left, right, leftUp, leftDown, rightUp, rightDown, none
}
public arrowType arow = arrowType.none;
Rectangle[] recArrow = new Rectangle[8];//8个手柄
public Rectangle area;//选择区域
public readonly int blank = 8;//边距
protected override void OnPaint(PaintEventArgs e)
{
int side = 6;//手柄矩形的边长
recArrow[0] = new Rectangle(new System.Drawing.Point(this.Width / 2 - side / 2, blank - side / 2), new Size(side, side));
recArrow[1] = new Rectangle(new System.Drawing.Point(this.Width / 2 - side / 2, this.Height - blank - side / 2), new Size(side, side));
recArrow[2] = new Rectangle(new System.Drawing.Point(blank - side / 2, this.Height / 2 - side / 2), new Size(side, side));
recArrow[3] = new Rectangle(new System.Drawing.Point(this.Width - blank - side / 2, this.Height / 2 - side / 2), new Size(side, side));
recArrow[4] = new Rectangle(new System.Drawing.Point(blank - side / 2, blank - side / 2), new Size(side, side));
recArrow[5] = new Rectangle(new System.Drawing.Point(blank - side / 2, this.Height - blank - side / 2), new Size(side, side));
recArrow[6] = new Rectangle(new System.Drawing.Point(this.Width - blank - side / 2, blank - side / 2), new Size(side, side));
recArrow[7] = new Rectangle(new System.Drawing.Point(this.Width - blank - side / 2, this.Height - blank - side / 2), new Size(side, side));
foreach (Rectangle item in recArrow)
e.Graphics.DrawRectangle(Pens.Red, item);
area = new Rectangle(new System.Drawing.Point(8, 8), new Size(this.Width - 8 * 2, this.Height - 8 * 2));
////加上半透明效果看倒是好看了 重绘的时候卡的凶 ,期待有解决方法
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
System.Drawing.Color cor = System.Drawing.Color.FromArgb(50, Color.Red);
System.Drawing.SolidBrush bsh = new System.Drawing.SolidBrush(cor);
e.Graphics.FillRectangle(bsh, area);
e.Graphics.DrawRectangle(Pens.Red, area);
}
protected override void OnMouseUp(MouseEventArgs e)
{
arow = arrowType.none;
//this.BackColor = Color.FromArgb(0, Color.Red);
}
}
}
namespace Kivii.Sample.ImageUploader
{
partial class FrmImageEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmImageEditor));
this.timeImageEditor = new System.Windows.Forms.Timer(this.components);
this.plControl = new System.Windows.Forms.Panel();
this.btnSave = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.imgResizer = new Kivii.Sample.ImageUploader.Controls.ImageResizer();
this.plControl.SuspendLayout();
this.SuspendLayout();
//
// timeImageEditor
//
this.timeImageEditor.Interval = 500;
this.timeImageEditor.Tick += new System.EventHandler(this.timeImageEditor_Tick);
//
// plControl
//
this.plControl.Controls.Add(this.btnSave);
this.plControl.Controls.Add(this.btnCancel);
this.plControl.Dock = System.Windows.Forms.DockStyle.Bottom;
this.plControl.Location = new System.Drawing.Point(0, 715);
this.plControl.Name = "plControl";
this.plControl.Size = new System.Drawing.Size(807, 146);
this.plControl.TabIndex = 0;
//
// btnSave
//
this.btnSave.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255)))));
this.btnSave.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnSave.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.btnSave.Font = new System.Drawing.Font("宋体", 25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSave.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255)))));
this.btnSave.Location = new System.Drawing.Point(0, 0);
this.btnSave.Margin = new System.Windows.Forms.Padding(4);
this.btnSave.Name = "btnSave";
this.btnSave.Size = new System.Drawing.Size(450, 146);
this.btnSave.TabIndex = 5;
this.btnSave.Text = "保存";
this.btnSave.UseVisualStyleBackColor = false;
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
//
// btnCancel
//
this.btnCancel.BackColor = System.Drawing.SystemColors.ButtonHighlight;
this.btnCancel.Dock = System.Windows.Forms.DockStyle.Right;
this.btnCancel.Font = new System.Drawing.Font("宋体", 25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCancel.Location = new System.Drawing.Point(450, 0);
this.btnCancel.Margin = new System.Windows.Forms.Padding(4);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(357, 146);
this.btnCancel.TabIndex = 4;
this.btnCancel.Text = "取消";
this.btnCancel.UseVisualStyleBackColor = false;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// imgResizer
//
this.imgResizer.BackColor = System.Drawing.Color.Transparent;
this.imgResizer.Location = new System.Drawing.Point(61, 37);
this.imgResizer.Name = "imgResizer";
this.imgResizer.Size = new System.Drawing.Size(681, 626);
this.imgResizer.TabIndex = 1;
this.imgResizer.Text = "imgResizer";
//
// FrmImageEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(807, 861);
this.Controls.Add(this.imgResizer);
this.Controls.Add(this.plControl);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FrmImageEditor";
this.Text = "图片裁剪";
this.Load += new System.EventHandler(this.FrmImageEditor_Load);
this.plControl.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Timer timeImageEditor;
private System.Windows.Forms.Panel plControl;
private System.Windows.Forms.Button btnSave;
private System.Windows.Forms.Button btnCancel;
private Controls.ImageResizer imgResizer;
}
}
\ No newline at end of file
using Kivii.Zip.Zlib;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Kivii.Sample.ImageUploader
{
public partial class FrmImageEditor : Form
{
public FrmImageEditor()
{
InitializeComponent();
}
public Bitmap backgroundImage;
public Bitmap ImgEdited;
//图像裁剪
public Bitmap GetPartOfImage(Bitmap sourceImg, int width, int height, int offsetX, int offsetY)
{
Bitmap sourceBitmap = sourceImg;
Bitmap rtns = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(rtns))
{
Rectangle resultRectangle = new Rectangle(0, 0, width, height);
Rectangle sourceRectangle = new Rectangle(0 + offsetX, 0 + offsetY, width, height);
g.DrawImage(sourceBitmap, resultRectangle, sourceRectangle, GraphicsUnit.Pixel);
}
return rtns;
}
private void timeImageEditor_Tick(object sender, EventArgs e)
{
FrmMain main = (FrmMain)this.Owner;
main.setBackgroundImage(ImgEdited);
this.Close();
}
private void FrmImageEditor_Load(object sender, EventArgs e)
{
this.BackgroundImage = backgroundImage;
ImgEdited = backgroundImage;
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnSave_Click(object sender, EventArgs e)
{
System.Drawing.Point p = new System.Drawing.Point(imgResizer.Location.X + imgResizer.blank, imgResizer.Location.Y + imgResizer.blank);
Rectangle area = new Rectangle(p, imgResizer.area.Size);
ImgEdited = GetPartOfImage(backgroundImage, area.Width, area.Height, p.X, p.Y);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Bitmap bmpFluffy = ImgEdited;
//new Bitmap(after);
Rectangle r = new Rectangle(System.Drawing.Point.Empty, bmpFluffy.Size);
using (Bitmap bmpMask = new Bitmap(r.Width, r.Height))
using (Graphics g = Graphics.FromImage(bmpMask))
using (GraphicsPath path = createRoundRect(
r.X, r.Y,
r.Width, r.Height,
0))
using (Brush brush = createFluffyBrush(
path,
new float[] { 0.0f, 0.1f, 1.0f },
new float[] { 0.0f, 0.95f, 1.0f }))
{
g.FillRectangle(Brushes.Black, r);
g.SmoothingMode = SmoothingMode.HighQuality;
g.FillPath(brush, path);
transferOneARGBChannelFromOneBitmapToAnother(
bmpMask,
bmpFluffy,
ChannelARGB.Blue,
ChannelARGB.Alpha);
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Graphics drawBk = Graphics.FromImage(backgroundImage);
drawBk.Clear(Color.FromKnownColor(KnownColor.Control));
drawBk.DrawImage(ImgEdited, area);
Graphics winGph = Graphics.FromHwnd(this.Handle);
winGph.DrawImage(backgroundImage, new System.Drawing.Point(0, 0));
this.BackgroundImage = backgroundImage;
imgResizer.Visible = false;
this.Refresh();
timeImageEditor.Enabled = true;
}
public static GraphicsPath createRoundRect(int x, int y, int width, int height, int radius)
{
GraphicsPath gp = new GraphicsPath();
if (radius == 0)
gp.AddRectangle(new Rectangle(x, y, width, height));
else
{
gp.AddLine(x + radius, y, x + width - radius, y);
gp.AddArc(x + width - radius, y, radius, radius, 270, 90);
gp.AddLine(x + width, y + radius, x + width, y + height - radius);
gp.AddArc(x + width - radius, y + height - radius, radius, radius, 0, 90);
gp.AddLine(x + width - radius, y + height, x + radius, y + height);
gp.AddArc(x, y + height - radius, radius, radius, 90, 90);
gp.AddLine(x, y + height - radius, x, y + radius);
gp.AddArc(x, y, radius, radius, 180, 90);
gp.CloseFigure();
}
return gp;
}
public static Brush createFluffyBrush(GraphicsPath gp, float[] blendPositions, float[] blendFactors)
{
PathGradientBrush pgb = new PathGradientBrush(gp);
//Blend blend = new Blend();
//blend.Positions = blendPositions;
//blend.Factors = blendFactors;
//pgb.Blend = blend;
//pgb.CenterColor = Color.White;
//pgb.SurroundColors = new Color[] { Color.Black };
return pgb;
}
public enum ChannelARGB
{
Blue = 0,
Green = 1,
Red = 2,
Alpha = 3
}
public static void transferOneARGBChannelFromOneBitmapToAnother(Bitmap source, Bitmap dest, ChannelARGB sourceChannel, ChannelARGB destChannel)
{
if (source.Size != dest.Size)
throw new ArgumentException();
Rectangle r = new Rectangle(System.Drawing.Point.Empty, source.Size);
BitmapData bdSrc = source.LockBits(r, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
BitmapData bdDst = dest.LockBits(r, ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
unsafe
{
byte* bpSrc = (byte*)bdSrc.Scan0.ToPointer();
byte* bpDst = (byte*)bdDst.Scan0.ToPointer();
bpSrc += (int)sourceChannel;
bpDst += (int)destChannel;
for (int i = r.Height * r.Width; i > 0; i--)
{
*bpDst = *bpSrc;
bpSrc += 4;
bpDst += 4;
}
}
source.UnlockBits(bdSrc);
dest.UnlockBits(bdDst);
}
}
}
...@@ -33,6 +33,7 @@ namespace Kivii.Sample.ImageUploader ...@@ -33,6 +33,7 @@ namespace Kivii.Sample.ImageUploader
private int cameraQuantity = 0;//相机数量 private int cameraQuantity = 0;//相机数量
private List<DbFile> photos = new List<DbFile>(); private List<DbFile> photos = new List<DbFile>();
private Report currentReport = null; private Report currentReport = null;
private DbFile currentPhoto = null;
public FrmMain() public FrmMain()
...@@ -310,7 +311,9 @@ namespace Kivii.Sample.ImageUploader ...@@ -310,7 +311,9 @@ namespace Kivii.Sample.ImageUploader
//清空 ptbPhotoDisplay 中的图片 //清空 ptbPhotoDisplay 中的图片
ptbPhotoDisplay.Image = null; ptbPhotoDisplay.Image = null;
lbDisplay.Text = ""; lbDisplay.Text = "";
currentPhoto = null;
if (photo == null) return; if (photo == null) return;
currentPhoto = photo;
var snapshot = photo.Image; var snapshot = photo.Image;
ptbPhotoDisplay.Image = snapshot; ptbPhotoDisplay.Image = snapshot;
if (photo.Kvid != Guid.Empty) lbDisplay.Text = $"[已上传]{photo.Name}"; if (photo.Kvid != Guid.Empty) lbDisplay.Text = $"[已上传]{photo.Name}";
...@@ -860,5 +863,35 @@ namespace Kivii.Sample.ImageUploader ...@@ -860,5 +863,35 @@ namespace Kivii.Sample.ImageUploader
} }
} }
private void btnEditor_Click(object sender, EventArgs e)
{
if (currentPhoto == null) return;
if (currentPhoto.Kvid != Guid.Empty)
{
MessageBox.Show("当前照片已上传,无法编辑");
return;
}
FrmImageEditor imageEditor = new FrmImageEditor();
Bitmap bmp = currentPhoto.Image;
imageEditor.backgroundImage = bmp;
if (bmp.Width > 1280)
imageEditor.Width = 1280;
else
imageEditor.Width = bmp.Width;
if (bmp.Height > 1024)
imageEditor.Height = 1024;
else
imageEditor.Height = bmp.Height + 20;
imageEditor.Owner = this;
imageEditor.ShowDialog();
}
public void setBackgroundImage(Bitmap backgroundImage)
{
this.BackgroundImage = backgroundImage;
}
} }
} }
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<ProjectGuid>{9C9A89CF-F17F-4607-A89E-5E07C184EB1E}</ProjectGuid> <ProjectGuid>{9C9A89CF-F17F-4607-A89E-5E07C184EB1E}</ProjectGuid>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<RootNamespace>Kivii.Sample.ImageUploader</RootNamespace> <RootNamespace>Kivii.Sample.ImageUploader</RootNamespace>
<AssemblyName>样品拍照采集</AssemblyName> <AssemblyName>Kivii.Sample.ImageUploader</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
...@@ -30,6 +31,7 @@ ...@@ -30,6 +31,7 @@
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<TargetZone>LocalIntranet</TargetZone> <TargetZone>LocalIntranet</TargetZone>
...@@ -73,6 +75,9 @@ ...@@ -73,6 +75,9 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Configs.cs" /> <Compile Include="Configs.cs" />
<Compile Include="Controls\ImageResizer.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\VideoSourcePlayer.cs"> <Compile Include="Controls\VideoSourcePlayer.cs">
<SubType>Component</SubType> <SubType>Component</SubType>
</Compile> </Compile>
...@@ -81,6 +86,12 @@ ...@@ -81,6 +86,12 @@
</Compile> </Compile>
<Compile Include="Entities\Report.cs" /> <Compile Include="Entities\Report.cs" />
<Compile Include="Entities\UiSetting.cs" /> <Compile Include="Entities\UiSetting.cs" />
<Compile Include="FrmImageEditor.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmImageEditor.Designer.cs">
<DependentUpon>FrmImageEditor.cs</DependentUpon>
</Compile>
<Compile Include="FrmMain.cs"> <Compile Include="FrmMain.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
...@@ -90,6 +101,9 @@ ...@@ -90,6 +101,9 @@
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Requests.cs" /> <Compile Include="Requests.cs" />
<EmbeddedResource Include="FrmImageEditor.resx">
<DependentUpon>FrmImageEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmMain.resx"> <EmbeddedResource Include="FrmMain.resx">
<DependentUpon>FrmMain.cs</DependentUpon> <DependentUpon>FrmMain.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment