using Io.Github.Kerwinxu.LibShapes.Core.Event; using Io.Github.Kerwinxu.LibShapes.Core.Paper; using Io.Github.Kerwinxu.LibShapes.Core.Shape; using Io.Github.Kerwinxu.LibShapes.Core.State; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Io.Github.Kerwinxu.LibShapes.Core { public partial class UserControlToolbox : UserControl { public UserControlToolbox() { InitializeComponent(); UserControlToolbox_Resize(this, null); // 更改尺寸。 // 对象的属性更改时 propertyGrid1.PropertyValueChanged += PropertyGrid1_PropertyValueChanged; } private void PropertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) { // 发送给外接 if (this.PropertyValueChanged != null) { this.PropertyValueChanged(s, e); } //throw new NotImplementedException(); } /// /// 这个工具箱是操作画布的,这里用一个属性关联 /// public UserControlCanvas canvas { get; set; } /// /// 选择更改事件的处理 /// /// /// public void objectSelected(object sender, ObjectSelectEventArgs e) { propertyGrid1.SelectedObject = e.obj; } /// /// 状态更改事件的处理 /// /// /// public void stateChanged(object sender, StateChangedEventArgs e) { all_reset_1(); // if (e.CurrentState is StateCanvasZoom) { btn_zoom.Checked = true; }else if (e.CurrentState is StateCanvasMove) { btn_move_canvas.Checked = true; } else { btn_select.Checked = true; } all_reset_2(); if (e.CurrentState is StateCreate) { // 如果是创建模式,要看看是哪个形状的 var tmp = e.CurrentState as StateCreate; if (tmp.shape is ShapePie) { btn_pie.Checked = true; } else if (tmp.shape is ShapeArc) { btn_arc.Checked = true; } else if (tmp.shape is ShapeEllipse) { btn_ellipse.Checked = true; } else if (tmp.shape is ShapeRectangle) { btn_rect.Checked = true; }else if (tmp.shape is ShapeRoundedRectangle) { btn_roundedrect.Checked = true; } else if (tmp.shape is ShapeLine) { btn_line.Checked = true; } else if (tmp.shape is ShapeImage) { btn_img.Checked = true; } else if (tmp.shape is ShapeText) { btn_text.Checked = true; } else if (tmp.shape is ShapeBarcode) { btn_barcode.Checked = true; } } } /// /// 这里是属性更改事件 /// public event System.Windows.Forms.PropertyValueChangedEventHandler PropertyValueChanged; /// /// 将所有的设置成没有选中的状态 /// private void all_reset_1() { btn_select.Checked = false; btn_zoom.Checked = false; btn_move_canvas.Checked = false; } private void all_reset_2() { btn_rect.Checked = false; btn_roundedrect.Checked = false; btn_line.Checked = false; btn_arc.Checked = false; btn_pie.Checked = false; btn_img.Checked = false; btn_text.Checked = false; btn_barcode.Checked = false; btn_ellipse.Checked = false; } /// /// 新建形状,方便创建形状的 /// /// private void create_shape(ShapeEle shape) { if (canvas != null) { canvas.state = new StateCreate(this.canvas, shape); } } /// /// 矩形 /// /// /// private void btn_rect_Click(object sender, EventArgs e) { create_shape(new ShapeRectangle()); } /// /// 圆角矩形 /// /// /// private void btn_roundedrect_Click(object sender, EventArgs e) { create_shape(new ShapeRoundedRectangle()); } /// /// 线段 /// /// /// private void btn_line_Click(object sender, EventArgs e) { create_shape(new ShapeLine()); } /// /// 椭圆 /// /// /// private void btn_ellipse_Click(object sender, EventArgs e) { create_shape(new ShapeEllipse()); } /// /// 椭圆弧 /// /// /// private void btn_arc_Click(object sender, EventArgs e) { create_shape(new ShapeArc()); } /// /// 扇形 /// /// /// private void btn_pie_Click(object sender, EventArgs e) { create_shape(new ShapePie()); } private void btn_img_Click(object sender, EventArgs e) { // 这里首先要读取图片 openFileDialog1.Filter = "图片文件|*.jpg;*.jpeg;*.png"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { // 这里要读取图片,然后转换。 var shapeImg = new ShapeImage(); shapeImg.Img = ShapeImage.ImgToBase64String((Bitmap)Bitmap.FromFile(openFileDialog1.FileName)); create_shape(shapeImg); } } /// /// 文本 /// /// /// private void btn_text_Click(object sender, EventArgs e) { create_shape(new ShapeText()); } /// /// 条形码 /// /// /// private void btn_barcode_Click(object sender, EventArgs e) { create_shape(new ShapeBarcode()); } /// /// 删除 /// /// /// private void btn_delete_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.deleteShapes(); } } /// /// 组成群组 /// /// /// private void btn_merge_group_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.mergeGroup(); } } /// /// 取消群组 /// /// /// private void btn_cancel_group_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.cancelGroup(); } } /// /// 向前1位 /// /// /// private void btn_forward_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.forward(); } } /// /// 移动到最前 /// /// /// private void btn_forwardtofront_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.forwardToFront(); } } /// /// 往后1位 /// /// /// private void btn_backward_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.backward(); } } private void btn_wardtoend_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.backwardToEnd(); } } /// /// 对齐网格 /// /// /// private void btn_align_grid_Click(object sender, EventArgs e) { if(this.canvas != null) { this.btn_align_grid.Checked = !this.btn_align_grid.Checked; // 更改状态 this.canvas.isAlignDridding = this.btn_align_grid.Checked; // 应用状态 } } /// /// 放大缩小状态 /// /// /// private void btn_zoom_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.state = new StateCanvasZoom(this.canvas); } } /// /// 移动画布的状态 /// /// /// private void btn_move_canvas_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.state = new StateCanvasMove(this.canvas); } } /// /// 网格的 /// /// /// private void combo_grid_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (this.canvas != null) { switch (e.ClickedItem.Text) { case "关闭": this.canvas.isDrawDridding = false; break; case "1": this.canvas.GriddingInterval = 1; this.canvas.isDrawDridding = true; break; case "2": this.canvas.GriddingInterval = 2; this.canvas.isDrawDridding = true; break; case "5": this.canvas.GriddingInterval = 5; this.canvas.isDrawDridding = true; break; default: break; } this.canvas.Refresh(); // 刷新。 } } private void btn_page_setting_Click(object sender, EventArgs e) { // IPaperSetting paperSetting; if (this.canvas.shapes.Paper != null) { paperSetting = new FrmPaperSetting(this.canvas.shapes.Paper); } else { paperSetting = new FrmPaperSetting(); } // 打开窗口 if (((Form)paperSetting).ShowDialog() == DialogResult.OK) { //返回新的纸张设置。 this.canvas.shapes.Paper = paperSetting.GetPaper(); this.canvas.Refresh(); } } private void btn_zoom_screen_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.zoomToScreen(); } } private void btn_align_top_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.align_top(); } } private void btn_align_bottom_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.align_bottom(); } } private void btn_align_left_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.align_left(); } } private void btn_align_right_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.align_right(); } } private void btn_align_center_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.align_center(); } } private void btn_align_middle_Click(object sender, EventArgs e) { if (this.canvas != null) { this.canvas.align_midele(); } } private void UserControlToolbox_Resize(object sender, EventArgs e) { // 这个会更改属性框的坐标 var left_top_point = new Point(90, 28); // 左上角的坐标 propertyGrid1.Location = left_top_point; propertyGrid1.Width = this.Width - left_top_point.X - 10; propertyGrid1.Height = this.Height - left_top_point.Y - 10; } private void btn_select_Click(object sender, EventArgs e) { // 转成待机模式 this.canvas.SelectShape = null; this.canvas.state = new StateStandby(this.canvas); } } }