using OpenCvSharp;
using PaintDotNet.Adjust;
using PaintDotNet.Adjust.BaseImage;
using PaintDotNet.Annotation;
using PaintDotNet.Annotation.Enum;
using PaintDotNet.Annotation.Label;
using PaintDotNet.Base;
using PaintDotNet.Base.CommTool;
using PaintDotNet.Data.Param;
using PaintDotNet.DbOpreate.DbBll;
using PaintDotNet.DbOpreate.DbModel;
using PaintDotNet.Preview2;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace PaintDotNet.Menus
{
///
/// 编辑菜单
///
internal sealed class EditMenu : PdnMenuItem
{
private PdnMenuItem menuEditUndo;
private PdnMenuItem menuEditRedo;
private PdnMenuItem menuEditCopy;
private PdnMenuItem menuEditPaste;
private PdnMenuItem menuEditDelete;
private ToolStripSeparator menuEditSeparator1;
private PdnMenuItem menuViewZoomIn;
private PdnMenuItem menuViewZoomOut;
private PdnMenuItem menuViewActualSize;
private PdnMenuItem menuViewZoomToWindow;
private PdnMenuItem menuViewZoomToWidth;
private PdnMenuItem menuViewZoomToHeight;
private ToolStripSeparator menuEditSeparator2;
private PdnMenuItem menuImageCut;
private PdnMenuItem menuLockZoom;
private PdnMenuItem menuFixedMultiple;
private ToolStripSeparator menuEditSeparator3;
private PdnMenuItem menuImageFlipHorizontal;
private PdnMenuItem menuImageFlipVertical;
private PdnMenuItem menuImageFlipCenter;
private ToolStripSeparator menuEditSeparator4;
private PdnMenuItem menuImageRotate90CW;
private PdnMenuItem menuImageRotate180;
private PdnMenuItem menuImageRotate90CCW;
private Bitmap copyedBitmap;//复制的图片
private int nameNum = 0;//命名使用
public static Preview2Dialog _p2Form => Preview2Dialog.Instance;
private bool OnBackspaceTyped(Keys keys)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
//this.menuEditFillSelection.PerformClick();
return true;
}
else
{
return false;
}
}
public EditMenu(int menuId)
{
//PdnBaseForm.RegisterFormHotKey(Keys.Back, OnBackspaceTyped);
//PdnBaseForm.RegisterFormHotKey(Keys.Shift | Keys.Delete, OnLeftHandedCutHotKey);
PdnBaseForm.RegisterFormHotKey(Keys.Control | Keys.Insert, OnLeftHandedCopyHotKey);
PdnBaseForm.RegisterFormHotKey(Keys.Shift | Keys.Insert, OnLeftHandedPasteHotKey);
InitializeComponent();
this.MenuId = menuId;
}
/**
private bool OnLeftHandedCutHotKey(Keys keys)
{
this.menuEditCut.PerformClick();
return true;
}**/
private bool OnLeftHandedCopyHotKey(Keys keys)
{
this.menuEditCopy.PerformClick();
return true;
}
private bool OnLeftHandedPasteHotKey(Keys keys)
{
this.menuEditPaste.PerformClick();
return true;
}
private void InitializeComponent()
{
this.menuEditUndo = new PdnMenuItem(ActionType.Undo);
this.menuEditRedo = new PdnMenuItem(ActionType.Redo);
this.menuEditCopy = new PdnMenuItem(ActionType.Copy);
this.menuEditPaste = new PdnMenuItem(ActionType.Paste);
this.menuEditDelete = new PdnMenuItem(ActionType.Delete);
this.menuEditSeparator1 = new ToolStripSeparator();
this.menuViewZoomIn = new PdnMenuItem(ActionType.ZoomIn);
this.menuViewZoomOut = new PdnMenuItem(ActionType.ZoomOut);
this.menuViewActualSize = new PdnMenuItem(ActionType.ActualSize, true);
this.menuViewZoomToWindow = new PdnMenuItem(ActionType.ZoomToWindow, true);
this.menuViewZoomToWidth = new PdnMenuItem(ActionType.ZoomToWidth, true);
this.menuViewZoomToHeight = new PdnMenuItem(ActionType.ZoomToHeight, true);
this.menuEditSeparator2 = new ToolStripSeparator();
this.menuImageCut = new PdnMenuItem(ActionType.ImageCut);
this.menuLockZoom = new PdnMenuItem(ActionType.LockZoom);
this.menuFixedMultiple = new PdnMenuItem(ActionType.FixedMultiple);
//this.menuFixedMultiple.Visible = false;
this.menuEditSeparator3 = new ToolStripSeparator();
this.menuImageFlipHorizontal = new PdnMenuItem(ActionType.FlipHorizontal);
this.menuImageFlipVertical = new PdnMenuItem(ActionType.FlipVertical);
this.menuImageFlipCenter = new PdnMenuItem(ActionType.FlipCenter);
this.menuEditSeparator4 = new ToolStripSeparator();
this.menuImageRotate90CW = new PdnMenuItem(ActionType.Rotate90CW);
this.menuImageRotate180 = new PdnMenuItem(ActionType.Rotate180);
this.menuImageRotate90CCW = new PdnMenuItem(ActionType.Rotate90CCW);
//
// EditMenu
//
this.DropDownItems.AddRange(
new ToolStripItem[]
{
this.menuEditUndo,
this.menuEditRedo,
this.menuEditCopy,
this.menuEditPaste,
this.menuEditDelete,
this.menuEditSeparator1,
this.menuViewZoomIn,
this.menuViewZoomOut,
this.menuViewActualSize,
this.menuViewZoomToWindow,
this.menuViewZoomToWidth,
this.menuViewZoomToHeight,
this.menuEditSeparator2,
this.menuImageCut,
this.menuLockZoom,
this.menuFixedMultiple,
this.menuEditSeparator3,
this.menuImageFlipHorizontal,
this.menuImageFlipVertical,
this.menuImageFlipCenter,
this.menuEditSeparator4,
this.menuImageRotate90CW,
this.menuImageRotate180,
this.menuImageRotate90CCW
}); ;
this.Name = "Menu.Edit";
this.Text = PdnResources.GetString("Menu.Edit.Text");
//
// 撤销
//
this.menuEditUndo.Click += new EventHandler(this.MenuEditUndo_Click);
//
// 恢复
//
this.menuEditRedo.Click += new EventHandler(this.MenuEditRedo_Click);
//
// 复制
//
this.menuEditCopy.Click += new EventHandler(this.MenuEditCopy_Click);
//
// 粘贴
//
this.menuEditPaste.Click += new EventHandler(this.MenuEditPaste_Click);
//
// 删除
//
this.menuEditDelete.Click += new EventHandler(this.MenuEditDelete_Click);
//
// 放大
//
this.menuViewZoomIn.ShortcutKeyDisplayString = PdnResources.GetString("Menu.View.ZoomIn.ShortcutKeyDisplayString");
this.menuViewZoomIn.NeedWaitKey = true;
this.menuViewZoomIn.Click += new EventHandler(this.MenuViewZoomIn_Click);
//
// 缩小
//
this.menuViewZoomOut.ShortcutKeyDisplayString = PdnResources.GetString("Menu.View.ZoomOut.ShortcutKeyDisplayString");
this.menuViewZoomOut.NeedWaitKey = true;
this.menuViewZoomOut.Click += new EventHandler(this.MenuViewZoomOut_Click);
//
// 实际大小
//
this.menuViewActualSize.NeedWaitKey = true;
this.menuViewActualSize.Click += new EventHandler(this.MenuViewActualSize_Click);
//
// 合适大小
//
this.menuViewZoomToWindow.NeedWaitKey = true;
this.menuViewZoomToWindow.Click += new EventHandler(this.MenuViewZoomToWindow_Click);
//
// 合适宽度
//
this.menuViewZoomToWidth.NeedWaitKey = true;
this.menuViewZoomToWidth.Click += new EventHandler(this.MenuViewZoomToWidth_Click);
//
//
// 合适高度
this.menuViewZoomToHeight.NeedWaitKey = true;
this.menuViewZoomToHeight.Click += new EventHandler(this.MenuViewZoomToHeight_Click);
//
// 图片裁剪
//
this.menuImageCut.NeedWaitKey = true;
this.menuImageCut.AutomaticScript = false;
this.menuImageCut.Click += new EventHandler(this.MenuImageCut_Click);
//
// 锁定扩缩
//
this.menuLockZoom.Click += new EventHandler(this.MenuLockZoom_Click);
//
// 定倍显示
//
this.menuFixedMultiple.Click += new EventHandler(this.MenuFixedMultiple_Click);
//
// 水平翻转
//
this.menuImageFlipHorizontal.Click += new EventHandler(this.MenuImageFlipHorizontal_Click);
//
// 垂直翻转
//
this.menuImageFlipVertical.Click += new EventHandler(this.MenuImageFlipVertical_Click);
//
// 中心翻转
//
this.menuImageFlipCenter.Click += new EventHandler(this.MenuImageFlipCenter_Click);
//
// 旋转90度
//
this.menuImageRotate90CW.Click += new EventHandler(this.MenuImageRotate90_Click);
//this.menuImageRotate90CW.ShortcutKeys = Keys.Control | Keys.J;
//
// 旋转180度
//
this.menuImageRotate180.Click += new EventHandler(this.MenuImageRotate180_Click);
//this.menuImageRotate180.ShortcutKeys = Keys.Control | Keys.J;
//
// 旋转270度
//
this.menuImageRotate90CCW.Click += new EventHandler(this.MenuImageRotate270_Click);
//this.menuImageRotate90CCW.ShortcutKeys = Keys.Control | Keys.J;
//
// 加载菜单的文字和icon
//
this.LoadNames(this.Name);
this.LoadIcons();
}
protected override void OnDropDownOpening(EventArgs e)
{
this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.ActualSize : false;
this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.SuitableSize : false;
this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.SuitableWidth : false;
this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.SuitableHeight : false;
this.menuLockZoom.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.LockZoom : false;
this.menuFixedMultiple.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.FixedMultiple : false;
if (AppWorkspace.ActiveDocumentWorkspace == null/* || AppWorkspace.ScriptRunning*/)
{
this.menuViewZoomToWindow.Enabled = false;
this.menuViewActualSize.Enabled = false;
this.menuEditCopy.Enabled = false;
this.menuEditDelete.Enabled = false;
this.menuLockZoom.Checked = false;
this.menuFixedMultiple.Enabled = false;
}
else
{
this.menuViewZoomToWindow.Enabled = true;
//this.menuViewZoomToSelection.Enabled = !AppWorkspace.ActiveDocumentWorkspace.Selection.IsEmpty;
this.menuViewActualSize.Enabled = true;
this.menuEditCopy.Enabled = true;
//this.menuLockZoom.Checked = AppWorkspace.isLockZoom;
this.menuEditDelete.Enabled = false;
if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList != null && AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Count > 0)
{
for (int i = 0; i < AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Count; i++)
{
if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i].Selected)
{
this.menuEditDelete.Enabled = true;
break;
}
}
}
//this.menuViewZoomToWindow.Checked = (AppWorkspace.ActiveDocumentWorkspace.ZoomBasis == ZoomBasis.FitToWindow);
this.menuFixedMultiple.Enabled = true;
}
if (copyedBitmap != null/* && !AppWorkspace.ScriptRunning*/)
this.menuEditPaste.Enabled = true;
else
this.menuEditPaste.Enabled = false;
//this.menuEditDelete.Enabled = selection;
//this.menuEditCut.Enabled = selection && bitmapLayer;
// find out if there's anything on the clipboard that we can use
//bool isClipImageAvailable = Utility.IsClipboardImageAvailable();
//this.menuEditPaste.Enabled = isClipImageAvailable && (AppWorkspace.ActiveDocumentWorkspace != null);
/**
if (!this.menuEditPaste.Enabled)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
bool canHandle;
try
{
IDataObject pasted = Clipboard.GetDataObject();
}
catch (ExternalException)
{
canHandle = false;
}
if (canHandle)
{
this.menuEditPaste.Enabled = true;
}
}
}**/
if (AppWorkspace.ActiveDocumentWorkspace != null/* && !AppWorkspace.ScriptRunning*/)
{
this.menuEditUndo.Enabled = (AppWorkspace.ActiveDocumentWorkspace.undoManager.CanUndo);// (AppWorkspace.ActiveDocumentWorkspace.History.UndoStack.Count > 1); // top of stack is always assumed to be a "NullHistoryMemento," which is not undoable! thus we don't count it
this.menuEditRedo.Enabled = (AppWorkspace.ActiveDocumentWorkspace.undoManager.CanRedo);// (AppWorkspace.ActiveDocumentWorkspace.History.RedoStack.Count > 0);
}
else
{
this.menuEditUndo.Enabled = false;
this.menuEditRedo.Enabled = false;
}
//this.RecursiveData(this.DropDownItems);
base.OnDropDownOpening(e);
}
///
/// 撤销
///
///
///
private void MenuEditUndo_Click(object sender, EventArgs e)
{
if (_p2Form != null)
{
_p2Form._document.undoManager.Undo();
_p2Form._document.Refresh();
}
else
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
AppWorkspace.ActiveDocumentWorkspace.undoManager.Undo();
AppWorkspace.ActiveDocumentWorkspace.Refresh();
}
}
///
/// 恢复
///
///
///
private void MenuEditRedo_Click(object sender, EventArgs e)
{
if (_p2Form != null)
{
_p2Form._document.undoManager.Redo();
_p2Form._document.Refresh();
}
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
AppWorkspace.ActiveDocumentWorkspace.undoManager.Redo();
AppWorkspace.ActiveDocumentWorkspace.Refresh();
}
/**
if (AppWorkspace.ActiveDocumentWorkspace != null &&
!AppWorkspace.ActiveDocumentWorkspace.IsMouseCaptured())
{
AppWorkspace.ActiveDocumentWorkspace.PerformAction(new HistoryRedoAction());
}**/
}
///
/// 复制
///
///
///
private void MenuEditCopy_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null && AppWorkspace.ActiveDocumentWorkspace.CompositionSurface != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
Bitmap temp = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreateAliasedBitmap();
copyedBitmap = new Bitmap(temp.Width, temp.Height);
Graphics graphics = Graphics.FromImage(copyedBitmap);
graphics.DrawImage(temp, 0, 0, temp.Width, temp.Height);
if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList.IsExsitSpecificObject(DrawToolType.ImageCut))
{
//获取裁剪的矩形区域
List objList = AppWorkspace.ActiveDocumentWorkspace.GraphicsList.GetDrawToolTypeList(DrawToolType.ImageCut);
ImageCutDraw imageCutDraw = (ImageCutDraw)objList[0];
RectangleF cutRectangle = imageCutDraw.Rectangle;
copyedBitmap = DrawRulerHelper.KiCut(copyedBitmap, (int)cutRectangle.X, (int)cutRectangle.Y, (int)cutRectangle.Width, (int)cutRectangle.Height);
}
}
}
///
/// 粘贴
///
///
///
private void MenuEditPaste_Click(object sender, EventArgs e)
{
if (copyedBitmap != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
Document document = Document.FromImageMat(Camera.Tools.ToMat(copyedBitmap));
dw.Document = document;
//图片命名
nameNum++;
int numLength = nameNum.ToString().Length;
string joinName = "";
switch (numLength)
{
case 1:
joinName = "00" + nameNum;
break;
case 2:
joinName = "0" + nameNum;
break;
default:
joinName = nameNum.ToString();
break;
}
dw.xmlSaveModel = AppWorkspace.ActiveDocumentWorkspace.xmlSaveModel;
dw.rules = AppWorkspace.ActiveDocumentWorkspace.rules;
dw.fileText = PdnResources.GetString("Menu.Copythepicture.Text") + "-" + joinName;
AppWorkspace.ActiveDocumentWorkspace = dw;
}
}
///
/// 删除
///
///
///
private void MenuEditDelete_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList != null && AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Count > 0)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
for (int i = AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Count - 1; i >= 0; i--)
{
if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i].Selected == true)
{
//对数字标记做单独处理
if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i].drawToolType == DrawToolType.DrawNumberMark)
{
DrawNumberMark drawNumberMark = (DrawNumberMark)AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i];
List objList = AppWorkspace.ActiveDocumentWorkspace.GraphicsList.GetDrawToolTypeList(DrawToolType.DrawNumberMark);
if (objList != null && objList.Count > 0)
{
for (int j = 0; j < objList.Count; j++)
{
DrawNumberMark modifyNum = (DrawNumberMark)objList[j];
if (modifyNum.nowNum > drawNumberMark.nowNum)
{
modifyNum.nowNum -= 1;
}
}
}
}
AppWorkspace.ActiveDocumentWorkspace.GraphicsList.RemoveObj(AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i]);
}
}
AppWorkspace.ActiveDocumentWorkspace.Refresh();
}
}
}
private void MenuViewZoomIn_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
AppWorkspace.ActiveDocumentWorkspace.ZoomIn();
}
}
private void MenuViewZoomOut_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
AppWorkspace.ActiveDocumentWorkspace.ZoomOut();
}
}
private void MenuViewActualSize_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
if (!AppWorkspace.ActiveDocumentWorkspace.ActualSize)
{
AppWorkspace.ActiveDocumentWorkspace.ActualSize = !AppWorkspace.ActiveDocumentWorkspace.ActualSize;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace.ActualSize;
AppWorkspace.ActiveDocumentWorkspace.SuitableSize = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
AppWorkspace.ActiveDocumentWorkspace.SuitableWidth = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
AppWorkspace.ActiveDocumentWorkspace.SuitableHeight = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
}
else
{
AppWorkspace.ActiveDocumentWorkspace.ActualSize = !AppWorkspace.ActiveDocumentWorkspace.ActualSize;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace.ActualSize;
this.AppWorkspace.UpdateBottomButtonSelectionStatus();
}
AppWorkspace.UpdateBottomButtonSelectionStatus();
AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.ScaleFactor;
AppWorkspace.ActiveDocumentWorkspace.ScaleFactor = ScaleFactor.OneToOne;
}
}
private void MenuViewZoomToWindow_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
if (!AppWorkspace.ActiveDocumentWorkspace.SuitableSize)
{
AppWorkspace.ActiveDocumentWorkspace.SuitableSize = !AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
AppWorkspace.ActiveDocumentWorkspace.ActualSize = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace.ActualSize;
AppWorkspace.ActiveDocumentWorkspace.SuitableWidth = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
AppWorkspace.ActiveDocumentWorkspace.SuitableHeight = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
this.AppWorkspace.UpdateBottomButtonSelectionStatus();
}
else
{
AppWorkspace.ActiveDocumentWorkspace.SuitableSize = !AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
this.AppWorkspace.UpdateBottomButtonSelectionStatus();
}
AppWorkspace.UpdateBottomButtonSelectionStatus();
AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWindow;
}
}
private void MenuViewZoomToWidth_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
if (!AppWorkspace.ActiveDocumentWorkspace.SuitableWidth)
{
AppWorkspace.ActiveDocumentWorkspace.SuitableWidth = !AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
AppWorkspace.ActiveDocumentWorkspace.SuitableSize = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
AppWorkspace.ActiveDocumentWorkspace.ActualSize = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace.ActualSize;
AppWorkspace.ActiveDocumentWorkspace.SuitableHeight = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
this.AppWorkspace.UpdateBottomButtonSelectionStatus();
}
else
{
AppWorkspace.ActiveDocumentWorkspace.SuitableWidth = !AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
this.AppWorkspace.UpdateBottomButtonSelectionStatus();
}
AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWidth;
}
}
private void MenuViewZoomToHeight_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
if (!AppWorkspace.ActiveDocumentWorkspace.SuitableHeight)
{
AppWorkspace.ActiveDocumentWorkspace.SuitableHeight = !AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
AppWorkspace.ActiveDocumentWorkspace.SuitableWidth = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
AppWorkspace.ActiveDocumentWorkspace.SuitableSize = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
AppWorkspace.ActiveDocumentWorkspace.ActualSize = false;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace.ActualSize;
this.AppWorkspace.UpdateBottomButtonSelectionStatus();
}
else
{
AppWorkspace.ActiveDocumentWorkspace.SuitableHeight = !AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
this.AppWorkspace.UpdateBottomButtonSelectionStatus();
}
AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToHeight;
}
}
private void MenuImageCut_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.ImageCut;
}
}
///
/// 锁定扩缩
///
///
///
private void MenuLockZoom_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
AppWorkspace.ActiveDocumentWorkspace.LockZoom = !AppWorkspace.ActiveDocumentWorkspace.LockZoom;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.LockZoom, "LockZoom");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.LockZoom, "LockZoom");
this.menuLockZoom.Checked = !this.menuLockZoom.Checked;
AppWorkspace.UpdateBottomButtonSelectionStatus();
AppWorkspace.isLockZoom = this.menuLockZoom.Checked;
AppWorkspace.lockScaleRatio = AppWorkspace.ActiveDocumentWorkspace.ScaleFactor.Ratio;
}
}
///
/// 定倍显示
///
///
///
private void MenuFixedMultiple_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
AppWorkspace.ActiveDocumentWorkspace.FixedMultiple = !AppWorkspace.ActiveDocumentWorkspace.FixedMultiple;
this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.FixedMultiple, "FixedMultiple");
this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.FixedMultiple, "FixedMultiple");
this.menuFixedMultiple.Checked = AppWorkspace.ActiveDocumentWorkspace.FixedMultiple;
int dotPitch = Startup.instance.configModel.DotPitchId;//获取系统激活的点距id
if (dotPitch <= 0)
{
MessageBox.Show(PdnResources.GetString("Menu.hedotdistancefirstandthenadjustthedisplayoperation.Text") + "!");
return;
}
mic_screen_rules screenList = mic_screen_rules_BLL.FindDefault(dotPitch);//从数据库查询点距具体信息
if (screenList == null)
{
MessageBox.Show(PdnResources.GetString("Menu.Failedtogetpointdistanceinformation.Text"));
return;
}
double pointPitch = 0;
try
{
pointPitch = double.Parse(screenList.point_pitch);//获取点距
}
catch (System.Exception)
{
MessageBox.Show(PdnResources.GetString("Menu.Pointdistanceinformationexception.Text"));
return;
}
if (pointPitch <= 0)
{
MessageBox.Show(PdnResources.GetString("Menu.Pointdistanceinformationexception.Text"));
return;
}
string imgName = AppWorkspace.ActiveDocumentWorkspace.GetFriendlyName();//原始图片名
Bitmap oldBit = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreateAliasedBitmap();//原始图片
//获取系统的毫米标尺
double unitLength = 0;
//AppWorkspace.getMeasureInfo().TryGetValue(MeasurementUnit.Millimeter, out unitLength);
unitLength = AppWorkspace.ActiveDocumentWorkspace.GetRuler(MeasurementUnit.Millimeter);
if (unitLength == 0)
unitLength = 1;
int oldWidth = oldBit.Width;
int oldHeight = oldBit.Height;
int targetWidth = 0;
int targetHeight = 0;
if (oldWidth <= 1 || oldHeight <= 1)//像素最小为1,之后不再处理
return;
double pantographRatio = unitLength / pointPitch;//缩放比
double aspectRatio = oldWidth / (oldHeight * 1d);//宽高比
if (oldWidth <= oldHeight)
{
if (Startup.instance.ruleDB != null)
targetWidth = (int)(oldWidth * pantographRatio * (double)Startup.instance.ruleDB.gain_multiple);
else
targetWidth = (int)(oldWidth * pantographRatio);
if (targetWidth < 1 || targetWidth > oldWidth)//像素值异常不做处理
return;
targetHeight = (int)(targetWidth / aspectRatio);
}
else
{
if (Startup.instance.ruleDB != null)
targetHeight = (int)(oldHeight * pantographRatio * (double)Startup.instance.ruleDB.gain_multiple);
else
targetHeight = (int)(oldHeight * pantographRatio);
if (targetHeight < 1 || targetHeight > oldHeight)//像素值异常不做处理
return;
targetWidth = (int)(targetHeight * aspectRatio);
}
//缩放图片
using (Bitmap targetBit = new Bitmap(targetWidth, targetHeight))
{
using (Graphics g = Graphics.FromImage(targetBit))
{
g.DrawImage(oldBit, new Rectangle(0, 0, targetWidth, targetHeight), new Rectangle(0, 0, oldWidth, oldHeight), GraphicsUnit.Pixel);
DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
Document document = Document.FromImageMat(Camera.Tools.ToMat(targetBit));
dw.Document = document;
dw.xmlSaveModel = this.AppWorkspace.ActiveDocumentWorkspace.xmlSaveModel;
dw.rules = this.AppWorkspace.ActiveDocumentWorkspace.rules;
dw.fileText = imgName;
AppWorkspace.ActiveDocumentWorkspace = dw;
}
}
}
}
///
/// 水平镜像
///
///
///
private void MenuImageFlipHorizontal_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
AppWorkspace.HorizontalMirroringButton_Click(sender, null);
}
}
///
/// 垂直镜像
///
///
///
private void MenuImageFlipVertical_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
AppWorkspace.VerticalMirrorButton_Click(sender, null);
}
}
///
/// 中心镜像
///
///
///
private void MenuImageFlipCenter_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
AppWorkspace.CenterMirrorButton_Click(sender, null);
}
}
///
/// 旋转90度
///
///
///
private void MenuImageRotate90_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
Mat src = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreatedAliasedMat();
Mat dst = new Mat();
GeometryIntent.ImageRotate(src, dst, FlipMode.Y);//待测试
if (AppWorkspace.ScriptRunning)
{
DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
Document document = Document.FromImageMat(dst);
dw.Document = document;
dw.fileText = PdnResources.GetString("Menu.Edit.Text") + "-" + ((PdnMenuItem)sender).Text + "-" + Startup.instance.step_length;
AppWorkspace.ActiveDocumentWorkspace = dw;
Startup.instance.step_length += 1;
}
else
{
ZoomBasis zoom = AppWorkspace.ActiveDocumentWorkspace.ZoomBasis;
AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWindow;
Document document = Document.FromImageMat(dst);
AppWorkspace.ActiveDocumentWorkspace.Document = document;
AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = zoom;
AppWorkspace.ActiveDocumentWorkspace.Refresh();
}
}
}
///
/// 旋转180度
///
///
///
private void MenuImageRotate180_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
Mat src = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreatedAliasedMat();
Mat dst = new Mat();
GeometryIntent.ImageRotate(src, dst, FlipMode.XY);//待测试
if (AppWorkspace.ScriptRunning)
{
DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
Document document = Document.FromImageMat(dst);
dw.Document = document;
dw.fileText = PdnResources.GetString("Menu.Edit.Text") + "-" + ((PdnMenuItem)sender).Text + "-" + Startup.instance.step_length;
AppWorkspace.ActiveDocumentWorkspace = dw;
Startup.instance.step_length += 1;
}
else
{
ZoomBasis zoom = AppWorkspace.ActiveDocumentWorkspace.ZoomBasis;
AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWindow;
Document document = Document.FromImageMat(dst);
AppWorkspace.ActiveDocumentWorkspace.Document = document;
AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = zoom;
AppWorkspace.ActiveDocumentWorkspace.Refresh();
}
}
}
///
/// 旋转270度
///
///
///
private void MenuImageRotate270_Click(object sender, EventArgs e)
{
if (AppWorkspace.ActiveDocumentWorkspace != null)
{
if (AppWorkspace.startScriptRecording)
{
AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List());
}
Mat src = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreatedAliasedMat();
Mat dst = new Mat();
GeometryIntent.ImageRotate(src, dst, FlipMode.X);//待测试
if (AppWorkspace.ScriptRunning)
{
DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
Document document = Document.FromImageMat(dst);
dw.Document = document;
dw.fileText = PdnResources.GetString("Menu.Edit.Text") + "-" + ((PdnMenuItem)sender).Text + "-" + Startup.instance.step_length;
AppWorkspace.ActiveDocumentWorkspace = dw;
Startup.instance.step_length += 1;
}
else
{
ZoomBasis zoom = AppWorkspace.ActiveDocumentWorkspace.ZoomBasis;
AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWindow;
Document document = Document.FromImageMat(dst);
AppWorkspace.ActiveDocumentWorkspace.Document = document;
AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = zoom;
AppWorkspace.ActiveDocumentWorkspace.Refresh();
}
}
}
}
}