Commit 002a27c7 by Neo Turing

增加裁剪功能

parent ca552351
......@@ -34,8 +34,10 @@
this.plControl = new System.Windows.Forms.Panel();
this.btnSave = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.plImage = new System.Windows.Forms.Panel();
this.imgResizer = new Kivii.Sample.ImageUploader.Controls.ImageResizer();
this.plControl.SuspendLayout();
this.plImage.SuspendLayout();
this.SuspendLayout();
//
// timeImageEditor
......@@ -48,9 +50,10 @@
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.Location = new System.Drawing.Point(0, 391);
this.plControl.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.plControl.Name = "plControl";
this.plControl.Size = new System.Drawing.Size(807, 146);
this.plControl.Size = new System.Drawing.Size(584, 100);
this.plControl.TabIndex = 0;
//
// btnSave
......@@ -61,9 +64,8 @@
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.Size = new System.Drawing.Size(346, 100);
this.btnSave.TabIndex = 5;
this.btnSave.Text = "保存";
this.btnSave.UseVisualStyleBackColor = false;
......@@ -74,36 +76,49 @@
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.Location = new System.Drawing.Point(346, 0);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(357, 146);
this.btnCancel.Size = new System.Drawing.Size(238, 100);
this.btnCancel.TabIndex = 4;
this.btnCancel.Text = "取消";
this.btnCancel.UseVisualStyleBackColor = false;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// plImage
//
this.plImage.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
this.plImage.Controls.Add(this.imgResizer);
this.plImage.Dock = System.Windows.Forms.DockStyle.Fill;
this.plImage.Location = new System.Drawing.Point(0, 0);
this.plImage.Name = "plImage";
this.plImage.Size = new System.Drawing.Size(584, 391);
this.plImage.TabIndex = 2;
//
// imgResizer
//
this.imgResizer.BackColor = System.Drawing.Color.Transparent;
this.imgResizer.Location = new System.Drawing.Point(61, 37);
this.imgResizer.Location = new System.Drawing.Point(79, 40);
this.imgResizer.Margin = new System.Windows.Forms.Padding(2);
this.imgResizer.Name = "imgResizer";
this.imgResizer.Size = new System.Drawing.Size(681, 626);
this.imgResizer.Size = new System.Drawing.Size(430, 307);
this.imgResizer.TabIndex = 1;
this.imgResizer.Text = "imgResizer";
//
// FrmImageEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(807, 861);
this.Controls.Add(this.imgResizer);
this.ClientSize = new System.Drawing.Size(584, 491);
this.Controls.Add(this.plImage);
this.Controls.Add(this.plControl);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.MinimumSize = new System.Drawing.Size(600, 530);
this.Name = "FrmImageEditor";
this.Text = "图片裁剪";
this.Load += new System.EventHandler(this.FrmImageEditor_Load);
this.plControl.ResumeLayout(false);
this.plImage.ResumeLayout(false);
this.ResumeLayout(false);
}
......@@ -115,5 +130,6 @@
private System.Windows.Forms.Button btnSave;
private System.Windows.Forms.Button btnCancel;
private Controls.ImageResizer imgResizer;
private System.Windows.Forms.Panel plImage;
}
}
\ No newline at end of file
......@@ -49,7 +49,8 @@ namespace Kivii.Sample.ImageUploader
private void FrmImageEditor_Load(object sender, EventArgs e)
{
this.BackgroundImage = backgroundImage;
this.plImage.BackgroundImage = backgroundImage;
this.plImage.BackgroundImageLayout = ImageLayout.Center;
ImgEdited = backgroundImage;
}
private void btnCancel_Click(object sender, EventArgs e)
......@@ -59,10 +60,10 @@ namespace Kivii.Sample.ImageUploader
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);
var imgArea = imgResizer.area;
Rectangle area = new Rectangle(p, imgArea.Size);
ImgEdited = GetPartOfImage(backgroundImage, area.Width, area.Height, p.X, p.Y);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Bitmap bmpFluffy = ImgEdited;
//new Bitmap(after);
......@@ -72,44 +73,16 @@ namespace Kivii.Sample.ImageUploader
using (Graphics g = Graphics.FromImage(bmpMask))
using (GraphicsPath path = createRoundRect(
r.X, r.Y,
r.Width, r.Height,
0))
using (Brush brush = createFluffyBrush(
using (GraphicsPath path = createRoundRect(r.X, r.Y, r.Width, r.Height,0))
path,
new float[] { 0.0f, 0.1f, 1.0f },
new float[] { 0.0f, 0.95f, 1.0f }))
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);
transferOneARGBChannelFromOneBitmapToAnother(bmpMask,bmpFluffy,ChannelARGB.Blue,ChannelARGB.Alpha);
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Graphics drawBk = Graphics.FromImage(backgroundImage);
drawBk.Clear(Color.FromKnownColor(KnownColor.Control));
drawBk.DrawImage(ImgEdited, area);
......@@ -117,11 +90,11 @@ namespace Kivii.Sample.ImageUploader
Graphics winGph = Graphics.FromHwnd(this.Handle);
winGph.DrawImage(backgroundImage, new System.Drawing.Point(0, 0));
this.BackgroundImage = backgroundImage;
this.plImage.BackgroundImage = backgroundImage;
imgResizer.Visible = false;
this.Refresh();
this.plImage.Refresh();
timeImageEditor.Enabled = true;
}
......
......@@ -872,26 +872,32 @@ namespace Kivii.Sample.ImageUploader
MessageBox.Show("当前照片已上传,无法编辑");
return;
}
FrmImageEditor imageEditor = new FrmImageEditor();
FrmImageEditor frm = new FrmImageEditor();
Bitmap bmp = currentPhoto.Image;
imageEditor.backgroundImage = bmp;
frm.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;
frm.Width= bmp.Width;
frm.Height = bmp.Height + 120;
frm.Owner = this;
imageEditor.ShowDialog();
frm.ShowDialog();
}
public void setBackgroundImage(Bitmap backgroundImage)
{
this.BackgroundImage = backgroundImage;
//currentPhoto.Image = backgroundImage;
int index = 0;
var photo = photos.FirstOrDefault(o => o.Image == currentPhoto.Image);
if (photo != null)
{
index = photos.IndexOf(photo);
if (index <= -1) index = 0;
deleteSnapshot(photo);
}
var editedPhoto = new DbFile(backgroundImage, currentPhoto.Name);
addSnapshot(editedPhoto, index);
showSnapshot(editedPhoto);
}
}
}
......@@ -7,7 +7,7 @@
<ProjectGuid>{9C9A89CF-F17F-4607-A89E-5E07C184EB1E}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Kivii.Sample.ImageUploader</RootNamespace>
<AssemblyName>Kivii.Sample.ImageUploader</AssemblyName>
<AssemblyName>样品拍照采集</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
......
......@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("5.4.2024.5280")]
[assembly: AssemblyFileVersion("5.4.2024.5280")]
[assembly: AssemblyVersion("5.4.2024.5300")]
[assembly: AssemblyFileVersion("5.4.2024.5300")]
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