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