123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Collections;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Text;
- using System.Windows.Forms;
- using GraEditor.DrawTools;
- using GraEditor.Elements;
- namespace GraEditor
- {
- public partial class frmMain : Form
- {
- public frmMain()
- {
- InitializeComponent();
- Canvas canvas = Canvas.Instance;
- canvas.MainView = this.mainView;
- canvas.Modified += new EventHandler(canvas_Modified);
- InitPenWidthToolBarButton();
- canvas.Init(null, new Size(600, 600), Color.White);
- InitGraDrawTool();
- UpdateFontPanel();
- UpdateColorBtnImage(DrawEnvMgr.Instance.Color);
- GraDrawTool.ActiveStateChanged += new EventHandler(GraDrawTool_ActiveStateChanged);
- this.mainView.MouseMove += new MouseEventHandler(mainView_MouseMove);
- //设置手绘绘制工具,默认
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Freehand);
- this.tlBtnFreehand.Pushed = true;
- }
- private void GraDrawTool_ActiveStateChanged(object sender, EventArgs e)
- {
- GraDrawTool drawTool = sender as GraDrawTool;
- this.sbPanelTip.Text = drawTool.Tip;
- }
- private void mainView_MouseMove(object sender, MouseEventArgs e)
- {
- Point pos = new Point(e.X, e.Y);//Temporary end point
- pos = GraDrawTool.GetRoundPoint(pos);//Round the end point. The min mouse movement distance is 6.
- string text = string.Format("X= {0} Y= {1}", pos.X, pos.Y);
- this.sbPanelMousePos.Text = text;
- }
- private void canvas_Modified(object sender, EventArgs e)
- {
- Canvas c = Canvas.Instance;
- string title = "图形编辑器 -- ";
- if (c.Name != null && c.Name.Length > 0)
- title += c.Name;
- else
- title += "NewImage.bmp";
- if (c.IsModified)
- title += "*";
- this.Text = title;
- if (Canvas.Instance.GraList.Count > 0)
- {
- this.tlBtnUndo.Enabled = true;
- }
- }
- private MenuItem selectedPenWidthMenuItem;
- private void InitPenWidthToolBarButton()
- {
- MenuItem[] items = new MenuItem[16];//6
- for (int i = 0; i < items.Length; i++)
- {
- items[i] = new MenuItem(i.ToString());//
- items[i].MeasureItem += new MeasureItemEventHandler(GE_MeasureItem);
- items[i].DrawItem += new DrawItemEventHandler(PenWidthMenu_DrawItem);
- items[i].Click += new EventHandler(PenWidthMenu_Click);
- items[i].OwnerDraw = true;
- }
- this.muPenWidth.MenuItems.AddRange(items);
- this.selectedPenWidthMenuItem = items[0];
- this.selectedPenWidthMenuItem.Checked = true;
- }
- private void GE_MeasureItem(object sender, MeasureItemEventArgs e)
- {
- e.ItemHeight = 20;
- e.ItemWidth = 80;//(int)stringSize.Width;
- }
- /// <summary>
- /// OwnerDraw PenWidth toolBar button menu
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void PenWidthMenu_DrawItem(object sender, DrawItemEventArgs e)
- {
- Point pt1 = new Point(e.Bounds.X + 6, e.Bounds.Y + e.Bounds.Height / 2);
- Point pt2 = new Point(e.Bounds.Right - 6, pt1.Y);
- MenuItem item = sender as MenuItem;
- using (Pen p = new Pen(Color.Black, item.Index + 1))
- {
- e.Graphics.DrawLine(p, pt1, pt2);
- }
- if (item.Checked)
- {
- Rectangle r = e.Bounds;
- r.Inflate(-4, 0);
- e.Graphics.DrawRectangle(Pens.Red, r);
- }
- }
- private void PenWidthMenu_Click(object sender, EventArgs e)
- {
- MenuItem item = sender as MenuItem;
- if (item == this.selectedPenWidthMenuItem)
- return;
- this.selectedPenWidthMenuItem.Checked = false;
- this.selectedPenWidthMenuItem = item;
- this.selectedPenWidthMenuItem.Checked = true;
- DrawEnvMgr.Instance.PenWidth = item.Index + 1;
- if (item.Index > 5) { DrawEnvMgr.Instance.PenWidth = item.Index*2; }
- }
-
- private void selectTool_StateChanged(object sender, EventArgs e)
- {
- SelectDrawTool tool = sender as SelectDrawTool;
- if (tool.SelectRectGra != null)
- {
- this.tlBtnCut.Enabled = true;
- this.tlBtnCopy.Enabled = true;
- }
- else
- {
- this.tlBtnCut.Enabled = false;
- this.tlBtnCopy.Enabled = false;
- }
- if (tool.CopyImage != null)
- {
- this.pasteMenuItem.Enabled = true;
- }
- else
- {
- this.pasteMenuItem.Enabled = false;
- }
- }
- /// <summary>
- /// 最初的绘图工具类型
- /// </summary>
- private void InitGraDrawTool()
- {
- //Get the instance of GraDrawToolMgr
- GraDrawToolMgr drawToolMgr = GraDrawToolMgr.Instance;
- //Add Select draw tool type into GraDrawToolMgr
- SelectDrawTool selectTool = SelectDrawTool.Instance;
- selectTool.TblBtn = this.tlBtnSelect;
- selectTool.StateChanged += new EventHandler(selectTool_StateChanged);
- this.selectTool_StateChanged(selectTool, EventArgs.Empty);
- GraDrawToolMgr.Instance.AddDrawTool(selectTool);
- //Add line draw tool type into GraDrawToolMgr
- LineDrawTool lineTool = new LineDrawTool();
- lineTool.TblBtn = this.tlBtnLine;
- GraDrawToolMgr.Instance.AddDrawTool(lineTool);
- ArrowDrawTool arrowTool = new ArrowDrawTool();
- arrowTool.TblBtn = this.tlBtnArrow;
- GraDrawToolMgr.Instance.AddDrawTool(arrowTool);
- MobileViewsDrawTool mobileViewsTool = new MobileViewsDrawTool();
- mobileViewsTool.TblBtn = this.tlbtnhand;
- GraDrawToolMgr.Instance.AddDrawTool(mobileViewsTool);
- //Add lines draw tool type into GraDrawToolMgr
- LinesDrawTool linesTool = new LinesDrawTool();
- linesTool.TblBtn = this.tlBtnLines;
- GraDrawToolMgr.Instance.AddDrawTool(linesTool);
- //Add freehand draw tool type into GraDrawToolMgr
- FreehandDrawTool freehandTool = new FreehandDrawTool();
- freehandTool.TblBtn = this.tlBtnFreehand;
- GraDrawToolMgr.Instance.AddDrawTool(freehandTool);
- //Add erase draw tool type into GraDrawToolMgr
- EraseDrawTool eraseTool = new EraseDrawTool();
- eraseTool.TblBtn = this.tlBtnErase;
- GraDrawToolMgr.Instance.AddDrawTool(eraseTool);
- //Add frame rectangle draw tool type into GraDrawToolMgr
- FrameRectDrawTool frameRectTool = new FrameRectDrawTool();
- frameRectTool.TblBtn = this.tlBtnFrameRect;
- GraDrawToolMgr.Instance.AddDrawTool(frameRectTool);
- //Add solid rectangle draw tool type into GraDrawToolMgr
- FillRectDrawTool fillRectTool = new FillRectDrawTool();
- fillRectTool.TblBtn = this.tlBtnFillRect;
- GraDrawToolMgr.Instance.AddDrawTool(fillRectTool);
- //Add frame ellipse draw tool type into GraDrawToolMgr
- FrameEllipseDrawTool frameEllipseTool = new FrameEllipseDrawTool();
- frameEllipseTool.TblBtn = this.tlBtnFrameEllipse;
- GraDrawToolMgr.Instance.AddDrawTool(frameEllipseTool);
- //Add solid ellipse draw tool type into GraDrawToolMgr
- FillEllipseDrawTool fillEllipseTool = new FillEllipseDrawTool();
- fillEllipseTool.TblBtn = this.tlBtnFillEllipse;
- GraDrawToolMgr.Instance.AddDrawTool(fillEllipseTool);
- //Add insert image draw tool type into GraDrawToolMgr
- ImageDrawTool imageDrawTool = new ImageDrawTool();
- imageDrawTool.TblBtn = this.tlBtnImage;
- GraDrawToolMgr.Instance.AddDrawTool(imageDrawTool);
- //Add insert text draw tool type into GraDrawToolMgr
- TextDrawTool textDrawTool = TextDrawTool.Instance;
- textDrawTool.TblBtn = this.tlBtnText;
- GraDrawToolMgr.Instance.AddDrawTool(textDrawTool);
- tlBtnUndo_Click();
- tlBtnRedo_Click();
- }
- private void GE_toolBar_ButtonClick(object sender, ToolBarButtonClickEventArgs e)
- {
- ToolBarButton b = e.Button;//clicked Toolbar button
- if (b != this.tlBtnText)
- TextDrawTool.Instance.EndTextEditing(true);
- if (b == this.tlBtnLine)//画线
- tlBtnLine_Click();
- else if (b == this.tlBtnArrow)//画箭头
- tlBtnArrow_Click();
- else if (b == this.tlBtnLines)//画多段线
- tlBtnLines_Click();
- else if (b == this.tlBtnFreehand)//铅笔 自由画线
- tlBtnFreehand_Click();
- else if (b == this.tlBtnFrameRect)//矩形框
- tlBtnFrameRect_Click();
- else if (b == this.tlBtnFillRect)//实心矩形
- tlBtnFillRect_Click();
- else if (b == this.tlBtnFrameEllipse)//圆形框
- tlBtnFrameEllipse_Click();
- else if (b == this.tlBtnFillEllipse)//实心圆
- tlBtnFillEllipse_Click();
- else if (b == this.tlBtnZoomIn)//放大视图
- tlBtnZoomIn_Click();
- else if (b == this.tlBtnZoomOut)//缩小视图
- tlBtnZoomOut_Click();
- else if (b == this.tlbtnhand)//移动视图
- tlbtnhand_Click();
- else if (b == this.tlBtnZoomResume)//恢复视图
- tlBtnZoomResume_Click();
- else if (b == this.tlBtnImage)//导入图像
- tlBtnImage_Click();
- else if (b == this.tlBtnText)//输入文字
- tlBtnText_Click();
- else if (b == this.tlBtnErase) // 橡皮擦
- tlBtnErase_Click();
- else if (b == this.tlbtnExit)//退出
- this.Close();
-
- }
- // select button is clicked
- private void tlBtnSelect_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Select);//Set SelectDrawTool as active
- }
- // line button is clicked
- private void tlBtnLine_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Line);//Set LineDrawTool as active
- }
- private void tlBtnArrow_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Arrow);//Set LineDrawTool as active
- }
- // lines button is clicked
- private void tlBtnLines_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Lines);//Set LineDrawTool as active
- }
- // freehand button is clicked
- private void tlBtnFreehand_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Freehand);//Set FreehandDrawTool as active
- }
- // erase button is clicked
- private void tlBtnErase_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Erase);//Set SelectDrawTool as active
- }
- // frame rectangle button is clicked
- private void tlBtnFrameRect_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.FrameRect);//Set FrameRectDrawTool as active
- }
- // solid button is clicked
- private void tlBtnFillRect_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.FillRect);//Set FillRectDrawTool as active
- }
- // frame ellipse button is clicked
- private void tlBtnFrameEllipse_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.FrameEllipse);//Set FrameEllipseDrawTool as active
- }
- // solid ellipse button is clicked
- private void tlBtnFillEllipse_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.FillEllipse);//Set FillEllipseDrawTool as active
- }
- // sets the insert image as the active tool
- private void tlBtnImage_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Image);//Set FillEllipseDrawTool as active
- }
- // sets the insert text as the active tool
- private void tlBtnText_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Text);//Set FillEllipseDrawTool as active
- }
- // cut button is clicked
- private void tlBtnCut_Click()
- {
- SelectDrawTool.Instance.Cut();//cut operation
- }
-
- // zoom in button is clicked
- private void tlBtnZoomIn_Click()
- {
- this.mainView.ScaleView(1.2f);//Zoom in 1.2 times
- OnViewZoomChanged();
- }
- // zoom out button is clicked
- private void tlBtnZoomOut_Click()
- {
- this.mainView.ScaleView(0.8f);//Zoom out 0.8 time
- OnViewZoomChanged();
-
- }
- private void tlbtnhand_Click()
- {
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.MobileViews);//Set FillEllipseDrawTool as active
- }
- private void OnViewZoomChanged()
- {
- float scale = this.mainView.ViewMatrix.Elements[0];
- string text = scale.ToString("p0");
- this.sbPanelViewScale.Text = text;
- }
- // zoom resume button is clicked
- private void tlBtnZoomResume_Click()
- {
- this.mainView.ResetScale();//Resume to original size
- OnViewZoomChanged();
- }
-
- // paste button is clicked
- // private void tlBtnPaste_Click( )
- // {
- //
- // }
- // undo button is clicked
-
- private void GE_toolBar1_ButtonClick(object sender, ToolBarButtonClickEventArgs e)
- {
- ToolBarButton b = e.Button;//clicked Toolbar button
- if (b != this.tlBtnText)
- TextDrawTool.Instance.EndTextEditing(true);
- if (b == this.tlBtnNew) // new image button is clicked
- tlBtnNew_Click();
- else if (b == this.tlBtnOpen) // open an existing image button is clicked
- tlBtnOpen_Click();
- else if (b == this.tlbtnreload) // 开始新的绘制
- tlbtnreload_Click();
- else if (b == this.tlbtnSaveExplain) // 保存给制好的说明图片
- tlbtnSaveExplain_Click();
- else if (b == this.tlBtnSave) // save the current image button is clicked
- tlBtnSave_Click();
- else if (b == this.tlBtnUndo)//Undo button is clicked
- tlBtnUndo_Click();
- else if (b == this.tlBtnRedo)//Redo button is clicked
- tlBtnRedo_Click();
- else if (b == this.tlBtnColor)
- tlBtnColor_Click();
- else if (b == this.tlBtnFont)
- tlBtnFont_Click();
- else if (b == this.tlBtnCut)//Cut button is clicked
- tlBtnCut_Click();
- else if (b == this.tlBtnCopy)//Copy button is clicked
- tlBtnCopy_Click();
- else if (b == this.tlBtnSelect)//Select button is clicked
- tlBtnSelect_Click();
- else if (b == this.tlbtnprintpreview)
- this.printPreviewDialog1.ShowDialog();
- else if (b == this.tlbtnprint)
- menuPrint_Click(null, null);
- else if (b == this.tlbtnprintSet)
- menuPageSetting_Click(null,null);
- else if (b == this.tlbtnSaves)
- tlBtnSaves_Click();
-
- }
-
- private void menuPrint_Click(object sender, System.EventArgs e)
- {
- try
- {
- this.printDocument1.Print();
- }
- catch (Exception ex)
- {
- MessageBox.Show("打印文件出错 - " + ex.Message);
- }
- }
- private void menuPageSetting_Click(object sender, System.EventArgs e)
- {
- try
- {
- this.pageSetupDialog1.ShowDialog();
- }
- catch (Exception ex)
- {
- MessageBox.Show("错误 - " + ex.Message);
- }
- }
- private void tlBtnCopy_Click()
- {
- SelectDrawTool.Instance.Copy();
- }
- private void tlBtnColor_Click()
- {
- ColorDialog dlg = new ColorDialog(); // instantiating new color dialog box
- dlg.Color = DrawEnvMgr.Instance.Color; //assigning the DrawEnvMgr.Instance.Color to the dialog
- if (DialogResult.OK == dlg.ShowDialog())
- {
- DrawEnvMgr.Instance.Color = dlg.Color;
- UpdateColorBtnImage(dlg.Color); //updating the image with the color selected by user in the dialog box
- }
- }
- private void UpdateColorBtnImage(Color color)
- {
- int imageIndex = tlBtnColor.ImageIndex;
-
- Image image = this.GE_imageList.Images[imageIndex];
- using (Graphics g = Graphics.FromImage(image))
- {
- using (SolidBrush b = new SolidBrush(color))
- {
- g.FillRectangle(b, new Rectangle(2, 24, 28, 8));
- }
- }
- this.GE_imageList.Images[imageIndex] = image;
- tlBtnColor.ImageIndex = 0;
- tlBtnColor.ImageIndex = imageIndex;
- int textImageIndex = this.tlBtnText.ImageIndex;
- Image textImage = this.GE_imageList.Images[textImageIndex];
- using (Graphics g = Graphics.FromImage(textImage))
- {
- using (SolidBrush b = new SolidBrush(color))
- {
- g.FillRectangle(b, new Rectangle(0, 24, 32, 8));
- }
- }
- this.GE_imageList.Images[textImageIndex] = textImage;
- this.tlBtnText.ImageIndex = 0;
- this.tlBtnText.ImageIndex = textImageIndex;
- }
- private void tlBtnFont_Click()
- {
- FontDialog dlg = new FontDialog(); //instantiating a new fontdialog box
- dlg.Font = DrawEnvMgr.Instance.Font;
- if (DialogResult.OK == dlg.ShowDialog(this))
- {
- DrawEnvMgr.Instance.Font = dlg.Font; // assigning the font selected by the user to DrawEnvMgr.Instance.Font
- UpdateFontPanel();
- }
- }
- private void UpdateFontPanel()
- {
- Font f = DrawEnvMgr.Instance.Font;
- string info = string.Format("{0} -- {1}", f.Name, f.Size);
- this.sbPanelFont.Text = info;
- }
- // undo button is clicked
- private void tlBtnUndo_Click()
- {
- GraEditStackMgr.Instance.Undo();//Undo operation
- if (Canvas.Instance.GraList.Count == 0)
- {
- this.tlBtnUndo.Enabled = false;
- // this.menuUndo.Enabled = false;
- }
- if (GraEditStackMgr.Instance.GraRedoList.Count > 0)
- {
- this.tlBtnRedo.Enabled = true;
- // this.menuRedo.Enabled = true;
- }
- }
- // redo button is clicked
- private void tlBtnRedo_Click()
- {
- GraEditStackMgr.Instance.Redo();//Redo operation
- if (GraEditStackMgr.Instance.GraRedoList.Count == 0)
- {
- this.tlBtnRedo.Enabled = false;
- }
- if (Canvas.Instance.GraList.Count > 0)
- {
- this.tlBtnUndo.Enabled = true;
- }
- }
- private void InitEditStackMgr()
- {
- this.tlBtnUndo.Enabled = false;
- this.tlBtnRedo.Enabled = false;
- GraEditStackMgr.Instance.Clear();
- GraDrawTool tool = GraDrawToolMgr.Instance.ActiveDrawTool;
- if (tool != null)
- tool.IsActive = false;
- }
- private void tlBtnNew_Click()
- {
- if (!this.SaveFile(true))
- return;
- Canvas.Instance.Close();
- NewCanvasCfg dlg = new NewCanvasCfg();
- dlg.Text = "新建画图";
- if (DialogResult.OK != dlg.ShowDialog())
- return;
- SelectDrawTool.Instance.IsActive = false;
-
-
- Canvas.Instance.Init(null, dlg.CanvasSize, dlg.CanvasBackColor);
- InitEditStackMgr();
- Canvas.Instance.Update();
- //设置手绘绘制工具,默认
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Freehand);
- this.tlBtnFreehand.Pushed = true;
-
- }
- // open file button is clicked
- private void tlBtnOpen_Click()
- {
- if (!Canvas.Instance.Open())
- return;
- SelectDrawTool.Instance.IsActive = false;
-
-
- InitEditStackMgr();
- //设置手绘绘制工具,默认
- GraDrawToolMgr.Instance.SetActiveTool(GraDrawType.Freehand);
- this.tlBtnFreehand.Pushed = true;
-
- Canvas.Instance.Close();
- }
-
- private void tlbtnreload_Click()
- {
- Canvas.Instance.ReloadCanvas();
- }
- Bitmap sourceBitmap = null;
- /// <summary>
- /// 要制作说明的原图
- /// </summary>
- public Bitmap SourceBitmap
- {
- get { return sourceBitmap; }
- set { sourceBitmap = value; }
- }
- string sourceBitmapFilePath = "";
- /// <summary>
- /// 要制作说明的原图文件路径
- /// </summary>
- public string SourceBitmapFilePath
- {
- get { return sourceBitmapFilePath; }
- set { sourceBitmapFilePath = value; }
- }
- Bitmap eplainBitmap = null;
- /// <summary>
- /// 当前编辑的说明图
- /// </summary>
- public Bitmap EplainBitmap
- {
- get { return eplainBitmap; }
- set { eplainBitmap = value; }
- }
- string eplainBitmapTitle = "";
- /// <summary>
- /// 当前编辑的说明图标题
- /// </summary>
- public string EplainBitmapTitle
- {
- get { return eplainBitmapTitle; }
- set { eplainBitmapTitle = value; }
- }
- string eplainBitmapFilePath = @"C:\TEST\aa";
- /// <summary>
- /// 当前编辑的说明图文件路径
- /// </summary>
- public string EplainBitmapFilePath
- {
- get { return eplainBitmapFilePath; }
- set { eplainBitmapFilePath = value; }
- }
- private void tlbtnSaveExplain_Click()
- {
- // Canvas.Instance.GetNewBitmap() ;
- if (EplainBitmapFilePath.Trim().Length <= 1)
- {
- MessageBox.Show(this,"保存产品说明图出错,关闭后重试!");
- return;
- }
- if (EplainBitmapTitle.Trim().Length <= 0)
- {
- frmEplainBitmapTitle frmTitle = new frmEplainBitmapTitle();
- if (DialogResult.OK == frmTitle.ShowDialog())
- {
-
- }
- }
- // MessageBox.Show("OK");
- }
- // save file button is clicked
- private void tlBtnSave_Click()
- {
- this.SaveFile(false);
- }
- private void tlBtnSaves_Click()
- {
- menuSaveAs_Click(null,null);
- }
- private bool SaveFile(bool isNeedWarning)
- {
- if (!Canvas.Instance.IsModified)
- return true;
- if (isNeedWarning)
- {
- DialogResult r = MessageBox.Show(this, "该文件已被修改,你需要保存它吗?", "警告",
- MessageBoxButtons.YesNoCancel);
- if (r == DialogResult.Cancel)
- return false;
- if (r == DialogResult.No)
- return true;
- }
- SaveFileDialog dlg = new SaveFileDialog();
- dlg.Filter = this.fileFilter;
- dlg.RestoreDirectory = true;
- if (Canvas.Instance.Name == null ||
- Canvas.Instance.Name.Length == 0)
- {
- dlg.FilterIndex = 1;
- if (dlg.ShowDialog() == DialogResult.OK)
- {
- Canvas.Instance.Name = dlg.FileName;
-
- }
- else
- return false;
- }
- else if (!Canvas.Instance.IsSavedOnce)
- {
- dlg.FileName = Canvas.Instance.Name;
- dlg.FilterIndex = GetFilterIndexByFileName(dlg.FileName);
- if (dlg.ShowDialog() == DialogResult.OK)
- {
- Canvas.Instance.Name = dlg.FileName;
- }
- else
- return false;
- }
- Canvas.Instance.Save();
- return true;
- }
- private string fileFilter = "位图文件|*.bmp;*.jpg;*.gif;*.png|Bitmap files (*.bmp)|*.bmp|Jpg files (*.jpg)|*.jpg|Gif files (*.gif)|*.gif";
- private int GetFilterIndexByFileName(string fileName)
- {
- string ext =System.IO.Path.GetExtension(fileName);
- if (ext == ".bmp")
- return 1;
- else if (ext == ".jpg")
- return 2;
- else if (ext == ".5gif")
- return 3;
- else
- return 1;
- }
-
- //Save as
- private void menuSaveAs_Click(object sender, System.EventArgs e)
- {
- SaveFileDialog dlg = new SaveFileDialog();
- dlg.Filter = this.fileFilter;
- //dlg.FilterIndex = 1 ;
- dlg.RestoreDirectory = true;
- dlg.FileName = Canvas.Instance.Name;
- dlg.FilterIndex = GetFilterIndexByFileName(dlg.FileName);
- if (dlg.ShowDialog() == DialogResult.OK)
- {
- Canvas.Instance.Name = dlg.FileName;
- Canvas.Instance.Save();
- }
- }
-
- private void toolStripMenuItem1_Click(object sender, EventArgs e)
- {
- SelectDrawTool.Instance.Paste();
- }
- private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
- {
- this.mainView.contextMenu1_Popup(sender, e);
- }
- private void toolStripMenuItem2_Click(object sender, EventArgs e)
- {
- ColorDialog dlg = new ColorDialog();
- dlg.Color = Canvas.Instance.BackColor;
- if (DialogResult.OK == dlg.ShowDialog())
- {
- foreach (GraElement gra in Canvas.Instance.GraList)
- {
- if (gra is EraseLinesGra)
- {
- gra.PenExt.Color = dlg.Color;
- }
- if (gra is EraseRectGra)
- {
- gra.PenExt.Color = dlg.Color;
- gra.BrushExt.Color = dlg.Color;
- }
- }
- Canvas.Instance.BackColor = dlg.Color;
- }
- }
- private void toolStripMenuItem3_Click(object sender, EventArgs e)
- {
- NewCanvasCfg dlg = new NewCanvasCfg();
- dlg.Text = "修改画布";
- dlg.CanvasSize = Canvas.Instance.Size;
- if (DialogResult.OK == dlg.ShowDialog())
- {
- Canvas.Instance.Size = dlg.CanvasSize;
- Canvas.Instance.BackColor = dlg.CanvasBackColor;
- Canvas.Instance.Update();
- }
- }
- private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
- {
- try
- {
- Graphics g = e.Graphics;
- Region r = new Region(new Rectangle(new Point(0, 0), Canvas.Instance.Size));
- Region old = g.Clip;
- g.Clip = r;
- ArrayList list = Canvas.Instance.GraList;
- foreach (GraElement gra in list)
- {
- if (gra is EraseLinesGra)
- {
- gra.PenExt.Color = Color.White;
- gra.Draw(g);
- gra.PenExt.Color = Canvas.Instance.BackColor;
- }
- else if (gra is EraseRectGra)
- {
- gra.PenExt.Color = Color.White;
- gra.BrushExt.Color = Color.White;
- gra.Draw(g);
- gra.PenExt.Color = Canvas.Instance.BackColor;
- gra.BrushExt.Color = Canvas.Instance.BackColor;
- }
- else
- gra.Draw(g);
- }
- g.Clip = old;
- }
- catch (Exception ex)
- {
- MessageBox.Show("当前文档打印错误 - " + ex.Message);
- }
- }
- private void frmMain_KeyUp(object sender, KeyEventArgs e)
- {
- if (e.KeyCode == Keys.Delete)
- {
- SelectDrawTool.Instance.ClearRectGra();
- }
- else if (e.KeyCode == Keys.A && e.Control)
- {
- SelectDrawTool.Instance.AllSelectedRect();
- }
- else if (e.KeyCode == Keys.V && e.Control)
- {
- SelectDrawTool.Instance.ContextMenuMousePos = new Point(0,0);
- SelectDrawTool.Instance.Paste();
- }
- else if (e.KeyCode == Keys.C && e.Control)
- {
-
- SelectDrawTool.Instance.Copy();
- }
- else if (e.KeyCode == Keys.X && e.Control)
- {
- SelectDrawTool.Instance.Cut();
- }
- else if (e.KeyCode == Keys.Escape)
- {
- SelectDrawTool.Instance.ClerSelected();
- }
- this.mainView.OnKeyUpTool(e);
-
- }
- }
- }
|