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; } } } } }