using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using PaintDotNet.ImageCollect.CameraPreviewComponent;
using PaintDotNet.CustomControl;
using PaintDotNet.Annotation.Enum;
using PaintDotNet.Adjust.BaseImage;
using PaintDotNet.Annotation;
using Metis.ParameterSet;
namespace PaintDotNet.GeneralAnalysis.Artwork
{
internal partial class ArtworkCenterUserControl : ArtworkUserControl
{
private AppWorkspace m_appWorkspace;
private DocumentWorkspaceWindow m_artWorkspace;
private DocumentWorkspaceWindow m_targetWorkspace;
private DocumentWorkspaceWindow m_allWorkspace;
private bool m_drawEnable = true;
private bool m_isShowAll;
private ArtworkControlButtons m_artCommonControlButtons;
private ArtworkControlButtons m_targetCommonControlButtons;
public void getData(GeneralAnalysisModel.ArtworkComparativeModel artworkComparativeModel) {
this.chkGrids.Checked = artworkComparativeModel.parameter2;
this.chkLine.Checked = artworkComparativeModel.parameter3;
this.trbArt.Value = artworkComparativeModel.parameter4;
this.txtArtTrbValue.Text = artworkComparativeModel.parameter4.ToString();
this.txtRotateFlip.Text = artworkComparativeModel.parameter5;
this.trbTarget.Value = artworkComparativeModel.parameter6;
this.txtTargetTrbValue.Text = artworkComparativeModel.parameter6.ToString();
this.txtDistance.Text = artworkComparativeModel.parameter7;
switch (artworkComparativeModel.parameter8) {
case 0:
this.rdoShowAll.Checked = true;
this.rdoShowArtwork.Checked = false;
this.rdoTargetImg.Checked = false;
this.rdoSubfield.Checked = false;
break;
case 1:
this.rdoShowAll.Checked = true;
this.rdoShowArtwork.Checked = false;
this.rdoTargetImg.Checked = false;
this.rdoSubfield.Checked = false;
break;
case 2:
this.rdoShowAll.Checked = false;
this.rdoShowArtwork.Checked = true;
this.rdoTargetImg.Checked = false;
this.rdoSubfield.Checked = false;
break;
case 3:
this.rdoShowAll.Checked = false;
this.rdoShowArtwork.Checked = false;
this.rdoTargetImg.Checked = true;
this.rdoSubfield.Checked = false;
break;
case 4:
this.rdoShowAll.Checked = false;
this.rdoShowArtwork.Checked = false;
this.rdoTargetImg.Checked = false;
this.rdoSubfield.Checked = true;
break;
}
}
public GeneralAnalysisModel.ArtworkComparativeModel saveData()
{
var artworkComparativeModel = new GeneralAnalysisModel.ArtworkComparativeModel();
artworkComparativeModel.parameter2 = this.chkGrids.Checked;
artworkComparativeModel.parameter3 = this.chkLine.Checked;
artworkComparativeModel.parameter4 = this.trbArt.Value;
artworkComparativeModel.parameter5 = this.txtRotateFlip.Text;
artworkComparativeModel.parameter6 = this.trbTarget.Value;
artworkComparativeModel.parameter7 = this.txtDistance.Text;
if (rdoShowAll.Checked)
{
artworkComparativeModel.parameter8 = 1;
}
else if (this.rdoShowArtwork.Checked) {
artworkComparativeModel.parameter8 = 2;
}
else if (this.rdoTargetImg.Checked)
{
artworkComparativeModel.parameter8 = 3;
}
else if (this.rdoSubfield.Checked)
{
artworkComparativeModel.parameter8 = 4;
}
return artworkComparativeModel;
}
private void InitializeLanguageText()
{
this.groupBox6.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.Displaymodesetting.text");
this.rdoSubfield.Text = PdnResources.GetString("Menu.Tools.ColumnDisplay.Text");
this.rdoTargetImg.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.Targetgraph.text");
this.rdoShowArtwork.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.Artwork.text");
this.rdoShowAll.Text = PdnResources.GetString("Menu.Showall.text");
this.groupBox5.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.Targetgraphcontrol.text");
this.btnRotateFlip.Text = PdnResources.GetString("Form.OkButton.Text");
this.label5.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.move.text") + ":";
this.label4.Text = PdnResources.GetString("Menu.transparency.text") + ":";
this.label3.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.Spin.text") + ":";
this.groupBox4.Text = PdnResources.GetString("Menu.Setting.Text");
this.label2.Text = PdnResources.GetString("Menu.transparency.text");
this.chkLine.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.displayauxiliarylines.text");
this.chkGrids.Text = PdnResources.GetString("Menu.displaygrid.text");
this.groupBox3.Text = PdnResources.GetString("Menu.Processdrawing.Text");
this.groupBox1.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.Targetpicture.text");
}
public ArtworkCenterUserControl(AppWorkspace appWorkspace, int width, int height)
{
m_appWorkspace = appWorkspace;
InitializeComponent();
InitializeLanguageText();
m_isShowAll = rdoShowAll.Checked;
this.Width = width;
this.Height = height;
InitializeData();
InitializeArtBaseTool();
InitializeTargetBaseTool();
}
private void InitializeData()
{
this.m_allWorkspace = new DocumentWorkspaceWindow(m_appWorkspace);
this.m_allWorkspace.AppWorkspaceTop = m_appWorkspace;
this.m_allWorkspace.Visible = true;
this.m_allWorkspace.Dock = DockStyle.Fill;
this.m_allWorkspace.GraphicsList.SelectChanged += AllGraphicsList_SelectChanged;
this.pnlArt.Controls.Add(this.m_allWorkspace);
this.m_artWorkspace = new DocumentWorkspaceWindow(m_appWorkspace);
this.m_artWorkspace.AppWorkspaceTop = m_appWorkspace;
this.m_artWorkspace.Visible = false;
this.m_artWorkspace.Dock = DockStyle.Fill;
this.pnlArt.Controls.Add(this.m_artWorkspace);
this.m_artWorkspace.GraphicsList.SelectChanged += ArtGraphicsList_SelectChanged;
this.m_targetWorkspace = new DocumentWorkspaceWindow(m_appWorkspace);
this.m_targetWorkspace.AppWorkspaceTop = m_appWorkspace;
this.m_targetWorkspace.Visible = true;
this.m_targetWorkspace.Dock = DockStyle.Fill;
this.pnlTarget.Controls.Add(this.m_targetWorkspace);
this.m_targetWorkspace.GraphicsList.SelectChanged += TargetGraphicsList_SelectChanged;
Init();
}
///
/// 裁剪
///
public void BitmapClipping()
{
if (m_drawEnable)
{
MessageBox.Show(PdnResources.GetString("Menu.Pleaseseroppedfirst.text"));
return;
}
Bitmap bitmap = OverlapBitmap;
if (this.m_allWorkspace.GraphicsList.Count >0)
{
RectangleF rectangle = this.m_allWorkspace.GraphicsList[0].GetBoundingBox();
bitmap = ImageTools.Crop(this.OverlapBitmap, Rectangle.Ceiling(rectangle));
}
else if (this.m_targetWorkspace.GraphicsList.Count > 0)
{
RectangleF rectangle = this.m_targetWorkspace.GraphicsList[0].GetBoundingBox();
bitmap = ImageTools.Crop(this.TargetBitmap, Rectangle.Ceiling(rectangle));
}
else if (this.m_artWorkspace.GraphicsList.Count > 0)
{
RectangleF rectangle = this.m_artWorkspace.GraphicsList[0].GetBoundingBox();
bitmap = ImageTools.Crop(this.ArtBitmap, Rectangle.Ceiling(rectangle));
}
DocumentWorkspace dw = m_appWorkspace.AddNewDocumentWorkspace();
Document document = Document.FromImageMat(Camera.Tools.ToMat(bitmap));
document.Dirty = true;
dw.Document = document;
dw.xmlSaveModel = Startup.instance.ruleDB;
dw.InitRulerInfo();
//激活
m_appWorkspace.ActiveDocumentWorkspace = dw;
//锁定扩缩
if (m_appWorkspace.isLockZoom && m_appWorkspace.lockScaleRatio > 0)
{
m_appWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.ScaleFactor;
m_appWorkspace.ActiveDocumentWorkspace.ScaleFactor = ScaleFactor.FromDouble(m_appWorkspace.lockScaleRatio);
m_appWorkspace.SetZoonTrackValue(m_appWorkspace.ActiveDocumentWorkspace.ScaleFactor);
}
else
{
m_appWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWindow;
}
m_appWorkspace.Refresh();
}
///
/// 选择矩形框
///
public void DrawEnable()
{
if (!m_drawEnable)
{
DialogResult result = MessageBox.Show(PdnResources.GetString("Menu.Aselectteandselectagain.text")+"?", PdnResources.GetString("Menu.Tips.text"), MessageBoxButtons.OKCancel);
if (result == DialogResult.OK)
{
this.m_artWorkspace.GraphicsList.Clear();
this.m_targetWorkspace.GraphicsList.Clear();
this.m_allWorkspace.GraphicsList.Clear();
this.m_artWorkspace.Refresh();
this.m_targetWorkspace.Refresh();
this.m_allWorkspace.Refresh();
}
else
{
return;
}
}
m_drawEnable = true;
if (this.ArtBitmap != null && this.m_artWorkspace != null)
{
m_artWorkspace.ActiveTool = DrawToolType.ImageCut;
}
if (this.TargetBitmap != null && this.m_targetWorkspace != null)
{
m_targetWorkspace.ActiveTool = DrawToolType.ImageCut;
}
if (this.OverlapBitmap != null && this.m_allWorkspace != null)
{
m_allWorkspace.ActiveTool = DrawToolType.ImageCut;
}
}
private void AllGraphicsList_SelectChanged(object sender, EventArgs e)
{
GraphicsList graphicsList = (GraphicsList)sender;
if (graphicsList.Count > 0)
{
m_drawEnable = false;
m_artWorkspace.ActiveTool = DrawToolType.Pointer;
m_targetWorkspace.ActiveTool = DrawToolType.Pointer;
}
}
private void ArtGraphicsList_SelectChanged(object sender, EventArgs e)
{
GraphicsList graphicsList = (GraphicsList)sender;
if (graphicsList.Count > 0)
{
m_drawEnable = false;
m_allWorkspace.ActiveTool = DrawToolType.Pointer;
m_targetWorkspace.ActiveTool = DrawToolType.Pointer;
}
}
private void TargetGraphicsList_SelectChanged(object sender, EventArgs e)
{
GraphicsList graphicsList = (GraphicsList)sender;
if (graphicsList.Count > 0)
{
m_drawEnable = false;
m_allWorkspace.ActiveTool = DrawToolType.Pointer;
m_artWorkspace.ActiveTool = DrawToolType.Pointer;
}
}
///
/// 初始化基础工具
///
public void InitializeTargetBaseTool()
{
this.m_targetCommonControlButtons = new ArtworkControlButtons();
this.m_targetCommonControlButtons.Dock = DockStyle.Top;
this.m_targetCommonControlButtons.Height = 30;
this.m_targetCommonControlButtons.HideMovingDirection();
this.pnlTargetTools.Controls.Add(m_targetCommonControlButtons);
this.m_targetCommonControlButtons.zoomInButton.Click += new EventHandler(zoomInButtonTarget_Click);
this.m_targetCommonControlButtons.zoomOutButton.Click += new EventHandler(zoomOutButtonTarget_Click);
this.m_targetCommonControlButtons.zoomToWindowButton.Click += new EventHandler(zoomToWindowButtonTarget_Click);
this.m_targetCommonControlButtons.actualSizeButton.Click += new EventHandler(actualSizeButtonTarget_Click);
this.m_targetCommonControlButtons.pointerButton.Click += new EventHandler(pointerButtonTarget_Click);
this.m_targetCommonControlButtons.mobileModeButton.Click += new EventHandler(mobileModeButtonTarget_Click);
}
///
/// 初始化基础工具
///
public void InitializeArtBaseTool()
{
this.m_artCommonControlButtons = new ArtworkControlButtons();
this.m_artCommonControlButtons.Dock = DockStyle.Top;
this.m_artCommonControlButtons.Height = 30;
this.m_artCommonControlButtons.HideMovingDirection();
this.pnlArtTools.Controls.Add(m_artCommonControlButtons);
this.m_artCommonControlButtons.zoomInButton.Click += new EventHandler(zoomInButton_Click);
this.m_artCommonControlButtons.zoomOutButton.Click += new EventHandler(zoomOutButton_Click);
this.m_artCommonControlButtons.zoomToWindowButton.Click += new EventHandler(zoomToWindowButton_Click);
this.m_artCommonControlButtons.actualSizeButton.Click += new EventHandler(actualSizeButton_Click);
this.m_artCommonControlButtons.pointerButton.Click += new EventHandler(pointerButton_Click);
this.m_artCommonControlButtons.mobileModeButton.Click += new EventHandler(mobileModeButton_Click);
}
private void mobileModeButton_Click(object sender, EventArgs e)
{
if (m_isShowAll)
{
this.m_allWorkspace.ActiveTool = Annotation.Enum.DrawToolType.MoveMode;
}
else
{
this.m_artWorkspace.ActiveTool = Annotation.Enum.DrawToolType.MoveMode;
}
}
private void pointerButton_Click(object sender, EventArgs e)
{
if (m_isShowAll)
{
this.m_allWorkspace.ActiveTool = Annotation.Enum.DrawToolType.Pointer;
}
else
{
this.m_artWorkspace.ActiveTool = Annotation.Enum.DrawToolType.Pointer;
}
}
private void zoomToWindowButton_Click(object sender, EventArgs e)
{
DocumentWorkspaceWindow documentWorkspace = this.m_artWorkspace;
if (m_isShowAll)
{
documentWorkspace = this.m_allWorkspace;
}
if (documentWorkspace.CompositionSurface != null)
{
documentWorkspace.ZoomToWindow();
}
}
private void actualSizeButton_Click(object sender, EventArgs e)
{
DocumentWorkspaceWindow documentWorkspace = this.m_artWorkspace;
if (m_isShowAll)
{
documentWorkspace = this.m_allWorkspace;
}
if (documentWorkspace.CompositionSurface != null)
{
documentWorkspace.ZoomBasis = ZoomBasis.ScaleFactor;
documentWorkspace.ScaleFactor = ScaleFactor.OneToOne;
}
}
private void zoomOutButton_Click(object sender, EventArgs e)
{
DocumentWorkspaceWindow documentWorkspace = this.m_artWorkspace;
if (m_isShowAll)
{
documentWorkspace = this.m_allWorkspace;
}
if (documentWorkspace.CompositionSurface != null)
documentWorkspace.ZoomOut();
}
private void zoomInButton_Click(object sender, EventArgs e)
{
DocumentWorkspaceWindow documentWorkspace = this.m_artWorkspace;
if (m_isShowAll)
{
documentWorkspace = this.m_allWorkspace;
}
if (documentWorkspace.CompositionSurface != null)
documentWorkspace.ZoomIn();
}
private void mobileModeButtonTarget_Click(object sender, EventArgs e)
{
this.m_targetWorkspace.ActiveTool = Annotation.Enum.DrawToolType.MoveMode;
}
private void pointerButtonTarget_Click(object sender, EventArgs e)
{
this.m_targetWorkspace.ActiveTool = Annotation.Enum.DrawToolType.Pointer;
}
private void zoomToWindowButtonTarget_Click(object sender, EventArgs e)
{
if (this.m_targetWorkspace.CompositionSurface != null)
{
this.m_targetWorkspace.ZoomToWindow();
}
}
private void actualSizeButtonTarget_Click(object sender, EventArgs e)
{
if (this.m_targetWorkspace.CompositionSurface != null)
{
this.m_targetWorkspace.ZoomBasis = ZoomBasis.ScaleFactor;
this.m_targetWorkspace.ScaleFactor = ScaleFactor.OneToOne;
}
}
private void zoomOutButtonTarget_Click(object sender, EventArgs e)
{
if (this.m_targetWorkspace.CompositionSurface != null)
this.m_targetWorkspace.ZoomOut();
}
private void zoomInButtonTarget_Click(object sender, EventArgs e)
{
if (this.m_targetWorkspace.CompositionSurface != null)
this.m_targetWorkspace.ZoomIn();
}
public override void Init()
{
if (rdoShowAll.Checked)
{
if (this.OverlapBitmap != null)
{
Document document = Document.FromImage(this.OverlapBitmap);
this.m_allWorkspace.Document = document;
}
this.chkGrids.Checked = this.GridLineEnabled;
this.chkLine.Checked = this.AuxiliaryLineEnabled;
this.trbArt.Value = this.Transparency;
}
else if (this.ArtBitmap != null)
{
Document document = Document.FromImage(this.ArtBitmap);
this.m_artWorkspace.Document = document;
this.chkGrids.Checked = this.GridLineEnabled;
this.chkLine.Checked = this.AuxiliaryLineEnabled;
this.trbArt.Value = this.Transparency;
}
if (this.TargetBitmap != null)
{
this.trbTarget.Value = this.TargetTransparency;
Document document = Document.FromImage(this.TargetBitmap);
this.m_targetWorkspace.Document = document;
}
}
private void ArtworkCenterUserControl_Resize(object sender, EventArgs e)
{
UpdateUISubfield();
}
private void UpdateUISubfield()
{
if (rdoShowAll.Checked)
{
groupBox3.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.displayimage.text");
}
groupBox3.Visible = false;
groupBox1.Visible = false;
if (rdoSubfield.Checked)
{
int width = groupBox4.Location.X - groupBox3.Location.X - 6 - 6;
groupBox3.Width = width / 2;
groupBox3.Height = this.Height - 10;
pnlArt.Width = groupBox3.Width - 12;
pnlArt.Height = groupBox3.Height - 100;
pnlArtTools.Width = groupBox3.Width - 12;
pnlArtTools.Top = groupBox3.Height - 57;
pnlArtTools.Left = pnlArt.Left;
groupBox3.Visible = true;
groupBox1.Location = new Point(groupBox3.Location.X + width / 2 + 6, groupBox3.Location.Y);
groupBox1.Width = width / 2;
groupBox1.Height = this.Height - 10;
pnlTarget.Width = groupBox1.Width - 12;
pnlTarget.Height = groupBox1.Height - 100;
pnlTargetTools.Width = groupBox1.Width - 12;
pnlTargetTools.Top = groupBox1.Height - 57;
pnlTargetTools.Left = pnlTarget.Left;
groupBox1.Visible = true;
}
else
{
int width = groupBox4.Location.X - groupBox3.Location.X - 6;
if (rdoTargetImg.Checked)
{
groupBox1.Visible = true;
groupBox1.Location = new Point(groupBox3.Location.X, groupBox3.Location.Y);
groupBox1.Width = width;
groupBox1.Height = this.Height - 10;
pnlTarget.Width = groupBox1.Width - 12;
pnlTarget.Height = groupBox1.Height - 100;
pnlTargetTools.Width = groupBox1.Width - 12;
pnlTargetTools.Top = groupBox1.Height - 57;
pnlTargetTools.Left = pnlTarget.Left;
groupBox3.Visible = false;
}
else
{
groupBox3.Visible = true;
groupBox3.Width = width;
groupBox3.Height = this.Height - 10;
pnlArt.Width = groupBox3.Width - 12;
pnlArt.Height = groupBox3.Height - 100;
pnlArtTools.Width = groupBox3.Width - 12;
pnlArtTools.Top = groupBox3.Height - 57;
pnlArtTools.Left = pnlArt.Left;
groupBox1.Visible = false;
}
}
}
///
/// 全部显示
///
private void ShowAll()
{
this.m_artWorkspace.Visible = false;
this.m_allWorkspace.Visible = true;
if (this.OverlapBitmap != null)
{
Document document = Document.FromImage(this.OverlapBitmap);
this.m_allWorkspace.Document = document;
}
}
private void rdoSubfield_CheckedChanged(object sender, EventArgs e)
{
UpdateUISubfield();
//this.pnlArt.Controls.Clear();
//this.pnlArt.Controls.Add(this.m_artWorkspace);
this.m_artWorkspace.Visible = true;
this.m_allWorkspace.Visible = false;
if (this.ArtBitmap != null)
{
Document document = Document.FromImage(this.ArtBitmap);
this.m_artWorkspace.Document = document;
}
else
{
this.m_artWorkspace.Visible = false;
}
}
private void rdoShowAll_CheckedChanged(object sender, EventArgs e)
{
m_isShowAll = false;
if (rdoShowAll.Checked)
{
m_isShowAll = true;
groupBox3.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.displayimage.text");
UpdateUISubfield();
ShowAll();
}
}
private void rdoShowArtwork_CheckedChanged(object sender, EventArgs e)
{
UpdateUISubfield();
if (rdoShowArtwork.Checked)
{
groupBox3.Text = PdnResources.GetString("Menu.Processdrawing.Text");
//this.pnlArt.Controls.Clear();
//this.pnlArt.Controls.Add(this.m_artWorkspace);
this.m_artWorkspace.Visible = true;
this.m_allWorkspace.Visible = false;
if (this.ArtBitmap != null)
{
Document document = Document.FromImage(this.ArtBitmap);
this.m_artWorkspace.Document = document;
}
else
{
this.m_artWorkspace.Visible = false;
}
}
}
private void rdoTargetImg_CheckedChanged(object sender, EventArgs e)
{
if (rdoTargetImg.Checked)
{
UpdateUISubfield();
}
}
private void trbArt_ValueChanged(object sender, EventArgs e)
{
this.Transparency = trbArt.Value;
if (this.ArtBitmap != null)
{
this.ArtBitmap = MakeTransparent(this.ArtBitmap, trbArt.Value);
OverlapBitmap = Overlap(OverlapType.CENTER);
}
txtArtTrbValue.Text = trbArt.Value.ToString();
}
private void txtArtTrbValue_TextChanged(object sender, EventArgs e)
{
//if (!string.IsNullOrEmpty(txtArtTrbValue.Text))
//{
// trbArt.Value = Convert.ToInt32(txtArtTrbValue.Text);
//}
}
private void txtArtTrbValue_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
if (string.IsNullOrEmpty(txtArtTrbValue.Text.Trim()))
{
e.Handled = true;
this.txtArtTrbValue.Text = "0";
return;
}
int val = Convert.ToInt32(this.txtArtTrbValue.Text);
if (val < 0)
{
val = 0;
this.txtArtTrbValue.Text = "0";
}
else if (val > 255)
{
val = 255;
this.txtArtTrbValue.Text = "255";
}
trbArt.Value = val;
}
if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
private void txtTargetTrbValue_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
if (string.IsNullOrEmpty(txtTargetTrbValue.Text.Trim()))
{
e.Handled = true;
this.txtTargetTrbValue.Text = "0";
return;
}
int val = Convert.ToInt32(this.txtTargetTrbValue.Text);
if (val < 0)
{
val = 0;
this.txtTargetTrbValue.Text = "0";
}
else if (val > 255)
{
val = 255;
this.txtTargetTrbValue.Text = "255";
}
trbTarget.Value = val;
}
if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
private void txtTargetTrbValue_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtTargetTrbValue.Text))
{
trbTarget.Value = Convert.ToInt32(txtTargetTrbValue.Text);
}
}
private void trbTarget_ValueChanged(object sender, EventArgs e)
{
this.TargetTransparency = trbTarget.Value;
if (this.TargetBitmap != null)
{
this.TargetBitmap = MakeTransparent(this.TargetBitmap, trbTarget.Value);
OverlapBitmap = Overlap(OverlapType.CENTER);
if(this.TargetBitmapClone == null)
{
this.TargetBitmapClone = this.TargetBitmap;
}
this.TargetBitmapClone = MakeTransparent(this.TargetBitmapClone, trbTarget.Value);
}
txtTargetTrbValue.Text = trbTarget.Value.ToString();
}
private void txtDistance_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '0')
{
if (txtDistance.Text.Equals(""))
{
e.Handled = true;
return;
}
}
if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
private void btnUp_Click(object sender, EventArgs e)
{
int distance = 1;
if (!txtDistance.Text.Equals(""))
{
distance = Convert.ToInt32(txtDistance.Text);
}
this.TargetTop -= distance;
OverlapBitmap = Overlap(OverlapType.CENTER);
}
private void btnDown_Click(object sender, EventArgs e)
{
int distance = 1;
if (!txtDistance.Text.Equals(""))
{
distance = Convert.ToInt32(txtDistance.Text);
}
this.TargetTop += distance;
OverlapBitmap = Overlap(OverlapType.CENTER);
}
private void btnLeft_Click(object sender, EventArgs e)
{
int distance = 1;
if (!txtDistance.Text.Equals(""))
{
distance = Convert.ToInt32(txtDistance.Text);
}
this.TargetLeft -= distance;
OverlapBitmap = Overlap(OverlapType.CENTER);
}
private void btnRight_Click(object sender, EventArgs e)
{
int distance = 1;
if (!txtDistance.Text.Equals(""))
{
distance = Convert.ToInt32(txtDistance.Text);
}
this.TargetLeft += distance;
OverlapBitmap = Overlap(OverlapType.CENTER);
}
private void txtRotateFlip_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
if (string.IsNullOrEmpty(txtRotateFlip.Text.Trim()))
{
e.Handled = true;
return;
}
if (this.TargetBitmap != null)
{
try
{
decimal rotate = Convert.ToDecimal(txtRotateFlip.Text);
if (rotate > 360 || rotate < -360)
{
MessageBox.Show(PdnResources.GetString("Menu.Rotationangleisoutofrange.text"));
return;
}
else
{
Console.WriteLine(TargetBitmapClone.Width + " " + TargetBitmapClone.Height);
TargetBitmap = ImageTools.RotateFlip(TargetBitmapClone, (float)rotate);
OverlapBitmap = Overlap(OverlapType.CENTER);
}
}
catch (Exception)
{
MessageBox.Show(PdnResources.GetString("Menu.RotationAngleinputinvalid.text"));
return;
}
}
}
/*只能数字键、退格键、负号、小数点*/
if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && (int)e.KeyChar != 8 &&
(int)e.KeyChar != 45 && (int)e.KeyChar != 46) e.Handled = true;
/*输入为负号和小数点时,且只能输入一次(负号只能最前面输入,小数点不可最前面输入)*/
if (e.KeyChar == 45 && (((TextBox)sender).SelectionStart != 0 ||
((TextBox)sender).Text.IndexOf("-") >= 0)) e.Handled = true;
if (e.KeyChar == 46 && (((TextBox)sender).SelectionStart == 0 ||
((TextBox)sender).Text.IndexOf(".") >= 0)) e.Handled = true;
}
private void txtRotateFlip_Leave(object sender, EventArgs e)
{
if (this.TargetBitmap != null)
{
try
{
decimal rotate = Convert.ToDecimal(txtRotateFlip.Text);
if (rotate > 360 || rotate < -360)
{
MessageBox.Show(PdnResources.GetString("Menu.Rotationangleisoutofrange.text"));
return;
}
else
{
Console.WriteLine(TargetBitmapClone.Width + " " + TargetBitmapClone.Height);
TargetBitmap = ImageTools.RotateFlip(TargetBitmapClone, (float)rotate);
OverlapBitmap = Overlap(OverlapType.CENTER);
}
}
catch (Exception)
{
MessageBox.Show(PdnResources.GetString("Menu.RotationAngleinputinvalid.text"));
return;
}
}
}
private void chkGrids_CheckedChanged(object sender, EventArgs e)
{
if (this.m_artWorkspace != null)
{
this.m_artWorkspace.GridLineFullEnabled = !this.m_artWorkspace.GridLineFullEnabled;
this.m_artWorkspace.Refresh();
}
if (this.m_allWorkspace != null)
{
this.m_allWorkspace.GridLineFullEnabled = !this.m_allWorkspace.GridLineFullEnabled;
this.m_allWorkspace.Refresh();
}
if (this.m_targetWorkspace != null)
{
this.m_targetWorkspace.GridLineFullEnabled = !this.m_targetWorkspace.GridLineFullEnabled;
this.m_targetWorkspace.Refresh();
}
this.GridLineEnabled = chkGrids.Checked;
}
private void chkLine_CheckedChanged(object sender, EventArgs e)
{
if (this.m_artWorkspace != null)
{
this.m_artWorkspace.AuxiliaryLineEnabled = !this.m_artWorkspace.AuxiliaryLineEnabled;
this.m_artWorkspace.Refresh();
}
if (this.m_allWorkspace != null)
{
this.m_allWorkspace.AuxiliaryLineEnabled = !this.m_allWorkspace.AuxiliaryLineEnabled;
this.m_allWorkspace.Refresh();
}
if (this.m_targetWorkspace != null)
{
this.m_targetWorkspace.AuxiliaryLineEnabled = !this.m_targetWorkspace.AuxiliaryLineEnabled;
this.m_targetWorkspace.Refresh();
}
this.AuxiliaryLineEnabled = chkLine.Checked;
}
private void btnRotateFlip_Click(object sender, EventArgs e)
{
if (this.TargetBitmap != null)
{
try
{
decimal rotate = Convert.ToDecimal(txtRotateFlip.Text);
if (rotate > 360 || rotate < -360)
{
MessageBox.Show(PdnResources.GetString("Menu.Rotationangleisoutofrange.text"));
return;
}
else
{
//Console.WriteLine(TargetBitmapClone.Width + " " + TargetBitmapClone.Height);
TargetBitmap = ImageTools.RotateFlip(TargetBitmapClone, (float)rotate);
//BaseTools.ImageRotate(TargetBitmapClone, TargetBitmap, 90f, OpenCvSharp.InterpolationFlags.Linear);
OverlapBitmap = Overlap(OverlapType.CENTER);
}
}
catch (Exception)
{
MessageBox.Show(PdnResources.GetString("Menu.RotationAngleinputinvalid.text"));
return;
}
}
}
}
}