using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using DevExpress.XtraEditors; using UI.Framework.Forms; using TBAppraisalTools.Properties; using TBAppraisalTools.重绘; using System.IO; using Api.Framework.Tools; using Newtonsoft.Json; using CsharpHttpHelper; using System.Text.RegularExpressions; using UI.Framework.Tools; using static TBAppraisalTools.Enums; using Newtonsoft.Json.Linq; namespace TBAppraisalTools.Forms { public partial class MainForm : BaseForm { //拾取框对象 private PickBox pickBox = new PickBox(); public MainForm() { InitializeComponent(); this.Text = Resources.MainFormTitle; } /// /// 关闭窗口 /// internal void CloseForm() { try { if (!this.IsDisposed) { this.Invoke(new Action(delegate () { this.Close(); this.Dispose(); })); } } catch (Exception ex) { } } /// /// 窗体加载 /// /// /// private void MainForm_Load(object sender, EventArgs e) { try { settingControl1.Bind(Class1.Config); TemplateLoad(); } catch (Exception ex) { ShowError(ex.Message); } } //优惠券设计样板加载 private void TemplateLoad() { myPanel.Controls.Clear(); try { if (!File.Exists(TbTools.TBCONFIGJSON)) { File.WriteAllText(TbTools.TBCONFIGJSON, "{\"panel1\":{\"C_Name\":\"panel1\",\"C_Point\":\"11, 12\",\"C_Size\":\"387, 555\",\"C_Tag\":{\"ImagePath\":\"D:\\\\1\\\\2\\\\3\\\\File\\\\评价工具缓存\\\\优惠券背景.png\",\"Shape\":true,\"Varible\":\"#背景\"},\"T_Text\":null,\"T_Font\":null,\"T_ForeColor\":\"\"},\"picbox2\":{\"C_Name\":\"picbox0\",\"C_Point\":\"13, 316\",\"C_Size\":\"121, 148\",\"C_Tag\":{\"ImagePath\":\"D:\\\\1\\\\2\\\\3\\\\File\\\\评价工具缓存\\\\商品主图.png\",\"Shape\":true,\"Varible\":\"#商品主图\"},\"T_Text\":null,\"T_Font\":null,\"T_ForeColor\":\"\"},\"picbox3\":{\"C_Name\":\"picbox1\",\"C_Point\":\"159, 55\",\"C_Size\":\"80, 80\",\"C_Tag\":{\"ImagePath\":\"D:\\\\1\\\\2\\\\3\\\\File\\\\评价工具缓存\\\\店铺头像.png\",\"Shape\":false,\"Varible\":\"#店铺头像\"},\"T_Text\":null,\"T_Font\":null,\"T_ForeColor\":\"\"},\"label4\":{\"C_Name\":\"label0\",\"C_Point\":\"248, 412\",\"C_Size\":\"62, 15\",\"C_Tag\":\"\",\"T_Text\":\"#券后特价\",\"T_Font\":\"Microsoft Sans Serif, 9pt\",\"T_ForeColor\":\"64, 64, 64\"},\"label5\":{\"C_Name\":\"label1\",\"C_Point\":\"220, 384\",\"C_Size\":\"62, 15\",\"C_Tag\":\"\",\"T_Text\":\"#商品现价\",\"T_Font\":\"Microsoft Sans Serif, 9pt\",\"T_ForeColor\":\"64, 64, 64\"},\"label6\":{\"C_Name\":\"label2\",\"C_Point\":\"248, 356\",\"C_Size\":\"62, 15\",\"C_Tag\":\"\",\"T_Text\":\"#月销售量\",\"T_Font\":\"Microsoft Sans Serif, 9pt\",\"T_ForeColor\":\"64, 64, 64\"},\"label7\":{\"C_Name\":\"label3\",\"C_Point\":\"156, 306\",\"C_Size\":\"62, 15\",\"C_Tag\":\"\",\"T_Text\":\"#商品标题\",\"T_Font\":\"Microsoft Sans Serif, 9pt\",\"T_ForeColor\":\"64, 64, 64\"},\"label8\":{\"C_Name\":\"label4\",\"C_Point\":\"80, 251\",\"C_Size\":\"127, 15\",\"C_Tag\":\"\",\"T_Text\":\"#开始时间 - #结束时间\",\"T_Font\":\"Microsoft Sans Serif, 9pt\",\"T_ForeColor\":\"64, 64, 64\"},\"label9\":{\"C_Name\":\"label5\",\"C_Point\":\"136, 199\",\"C_Size\":\"62, 15\",\"C_Tag\":\"\",\"T_Text\":\"#优惠券价\",\"T_Font\":\"Microsoft Sans Serif, 9pt\",\"T_ForeColor\":\"64, 64, 64\"},\"label10\":{\"C_Name\":\"label6\",\"C_Point\":\"166, 141\",\"C_Size\":\"62, 15\",\"C_Tag\":\"\",\"T_Text\":\"#店铺名称\",\"T_Font\":\"Microsoft Sans Serif, 9pt\",\"T_ForeColor\":\"64, 64, 64\"}}"); } if (File.Exists(TbTools.TBCONFIGJSON))//存在优惠券模板的情况 { var objDic = JsonConvert.DeserializeObject>(File.ReadAllText(TbTools.TBCONFIGJSON)); if (objDic != null) { var panel = objDic.FirstOrDefault(f => f.Key.Contains("panel")); if (!default(KeyValuePair).Equals(panel)) { TbConfig tbConfig = objDic[panel.Key] as TbConfig; if (!File.Exists(TbTools.BACKICO)) { using (var bitmap = Resources.背景) { bitmap.Save(TbTools.BACKICO); } } if (!File.Exists(TbTools.ITEMICO)) { using (var bitmap = Resources.商品主图) { bitmap.Save(TbTools.ITEMICO); } } if (!File.Exists(TbTools.SHOPICO)) { using (var bitmap = Resources.店铺头像) { bitmap.Save(TbTools.SHOPICO); } } myPanel.Name = "panel1"; myPanel.Location = tbConfig.C_Point; myPanel.Size = tbConfig.C_Size; myPanel.TabIndex = 1; myPanel.BackgroundImage = Tools.ReadImageFile(Tools.RefreshFileAddress(TbTools.BACKICO, TbTools.BASEPATH + @"\", Util.MapPath(TbTools.BASEPATH))); myPanel.BackgroundImageLayout = ImageLayout.Stretch; myPanel.Tag = tbConfig.C_Tag; } var picboxs = objDic.Where(f => f.Key.Contains("picbox")).ToList(); int i = 0; foreach (var item in picboxs) { AddImage(item.Value, i); i++; } int j = 0; var labels = objDic.Where(f => f.Key.Contains("label")).ToList(); foreach (var item in labels) { AddText(item.Value, j); j++; } } } else { throw new Exception("对不起不存在优惠券模板"); } } catch (Exception ex) { ShowError(ex); } } #region 增加图片,文字控件 /// /// 增加图片控件 /// /// 控件的基础信息 /// 第几个图片控件(用于名字使用) private void AddImage(TbConfig config, int i) { try { var pic = new MyPictureBox(); ImageInfo imageInfo = FindImageInfoByTag(config.C_Tag); var backImage = imageInfo.ImagePath; if (imageInfo.Varible.Contains(EditImageType.其他图片.ToString())) backImage = Tools.RefreshFileAddress(backImage, TbTools.OTHERSICOPATH + @"\", Util.MapPath(TbTools.OTHERSICOPATH)); else backImage = Tools.RefreshFileAddress(backImage, TbTools.BASEPATH + @"\", Util.MapPath(TbTools.BASEPATH)); var bitmapImage = Tools.ReadImageFile(backImage); pic.BackgroundImage = imageInfo.Shape ? bitmapImage : Tools.CutEllipse(bitmapImage, new Rectangle(0, 0, bitmapImage.Width, bitmapImage.Height), new Size(500, 500)); pic.Location = config.C_Point; pic.Size = config.C_Size; pic.Tag = config.C_Tag; pic.Name = "picbox" + i; pic.BackColor = Color.Transparent; pic.SizeMode = PictureBoxSizeMode.Zoom; pic.BackgroundImageLayout = ImageLayout.Stretch; pic.TabStop = false; pic.WaitOnLoad = true; pic.MouseEnter += MouseEnter; pic.ContextMenuStrip = this.menuStrip_Photo; myPanel.Controls.Add(pic); pickBox.WireControl(pic); } catch (Exception ex) { ShowError(ex); } } /// /// 增加文字控件 /// private void AddText(TbConfig config, int i) { try { var label = new Label(); label.Font = config.T_Font; label.ForeColor = config.T_ForeColor; label.Location = config.C_Point; label.AutoSize = false; label.TextAlign = ContentAlignment.MiddleCenter; label.Size = config.C_Size; label.Name = "label" + i; label.BackColor = Color.Transparent; label.AutoSize = true; label.Text = config.T_Text; label.Tag = config.C_Tag ?? string.Empty; label.ContextMenuStrip = this.menuStrip_Text; label.MouseEnter += MouseEnter; myPanel.Controls.Add(label); pickBox.WireControl(label); } catch (Exception ex) { ShowError(ex); } } #endregion private void button1_Click(object sender, EventArgs e) { try { int seed = 1; var tbConfigDic = new Dictionary();//将优惠券模板控件的信息保存至字典中 var myPanelSize = myPanel.Size;//获取背景图的大小 tbConfigDic.Add($"panel{seed}", new TbConfig() { C_Name = myPanel.Name, C_Size = myPanel.Size, C_Point = myPanel.Location, C_Tag = myPanel.Tag });//保存底图信息至字典中 #region 保存底图中的控件信息至字典中 foreach (Control item in myPanel.Controls) { seed++; var tbConfig = new TbConfig(); #region 公共属性 tbConfig.C_Name = item.Name; tbConfig.C_Size = item.Size;//(图片|文字)的大小 tbConfig.C_Point = item.Location;//(图片|文字)的坐标 tbConfig.C_Tag = item.Tag; #endregion if (item.GetType() == typeof(Label))//文字信息 { var label = item as Label; tbConfig.T_Text = label.Text; tbConfig.T_ForeColor = label.ForeColor; tbConfig.T_Font = label.Font; tbConfigDic.Add($"label{seed}", tbConfig); } else if (item.GetType() == typeof(MyPictureBox))//图片信息 tbConfigDic.Add($"picbox{seed}", tbConfig); } #endregion //File.WriteAllText(TbTools.TBCONFIGJSON, CsharpHttpHelper.HttpHelper.ObjectToJson(tbConfigDic));//将字典保存为json,再将json保存至文件中 File.WriteAllText(TbTools.TBCONFIGJSON, JsonConvert.SerializeObject(tbConfigDic));//将字典保存为json,再将json保存至文件中 ShowSuccess("保存成功!"); } catch (Exception ex) { ShowError(ex); } } /// /// 登录淘宝按钮 /// /// /// private void button2_Click(object sender, EventArgs e) { try { var tbLoginListForm = new TbLoginListForm(); tbLoginListForm.ShowDialog(); } catch (Exception ex) { ShowError(ex); } } #region 设计设置中,图片的可操作控件的右击菜单事件 private void 增加图片ToolStripMenuItem_Click(object sender, EventArgs e) { try { var photoForm = new EditPhotoForm(); if (photoForm.ShowDialog() == DialogResult.OK) { var tbConfig = photoForm.tbConfig; AddImage(tbConfig, myPanel.Controls.Count + 1); } } catch (Exception ex) { ShowError(ex); } } private void 增加文字ToolStripMenuItem_Click(object sender, EventArgs e) { try { var textForm = new EditTextForm(); if (textForm.ShowDialog() == DialogResult.OK) { var tbConfig = textForm.tbConfig; AddText(tbConfig, myPanel.Controls.Count + 1); } } catch (Exception ex) { ShowError(ex); } } private void 修改底图ToolStripMenuItem_Click(object sender, EventArgs e) { try { OpenFileDialog fdlg = new OpenFileDialog(); fdlg.Title = "选择要上传的图片"; fdlg.InitialDirectory = @"c:\"; fdlg.Filter = "jpg,png|*.jpg;*.png;"; fdlg.FilterIndex = 1; fdlg.RestoreDirectory = true; if (fdlg.ShowDialog() == DialogResult.OK) { string oldImagePath = TbTools.BACKICO; if (!string.IsNullOrWhiteSpace(oldImagePath)) File.Delete(oldImagePath); File.Copy(fdlg.FileName, TbTools.BACKICO); myPanel.BackgroundImage = Tools.ReadImageFile(TbTools.BACKICO); myPanel.Tag = new ImageInfo() { ImagePath = TbTools.BACKICO, Shape = true, Varible = "#底图" }; } fdlg.Dispose(); } catch (Exception ex) { ShowError(ex); } } private void 修改选中图片ToolStripMenuItem_Click(object sender, EventArgs e) { try { var pic = (MyPictureBox)_sender; var photoForm = new EditPhotoForm(new TbConfig() { C_Tag = FindImageInfoByTag(pic.Tag), C_Size = pic.Size, C_Point = pic.Location }); if (photoForm.ShowDialog() == DialogResult.OK) { AddImage(photoForm.tbConfig, myPanel.Controls.Count + 1); pickBox.RemoveSelect(); myPanel.Controls.Remove(pic); } } catch (Exception ex) { ShowError(ex); } } private void 删除选中图片ToolStripMenuItem_Click(object sender, EventArgs e) { try { pickBox.RemoveSelect(); myPanel.Controls.Remove((Control)_sender); } catch (Exception ex) { ShowError(ex); } } private void 修改选中文本ToolStripMenuItem_Click(object sender, EventArgs e) { try { var label = (Label)_sender; var textForm = new EditTextForm(new TbConfig() { C_Point = label.Location, C_Size = label.Size, T_Font = label.Font, T_ForeColor = label.ForeColor, T_Text = label.Text }); if (textForm.ShowDialog() == DialogResult.OK) { AddText(textForm.tbConfig, myPanel.Controls.Count + 1); pickBox.RemoveSelect(); myPanel.Controls.Remove(label); } } catch (Exception ex) { ShowError(ex); } } private void 删除选中控件ToolStripMenuItem_Click(object sender, EventArgs e) { try { pickBox.RemoveSelect(); myPanel.Controls.Remove((Control)_sender); } catch (Exception ex) { ShowError(ex); } } #endregion #region 鼠标进入事件,将获取到的控件信息保存起来,在删除控件的时候用 /// /// 鼠标进入事件,将获取到的控件信息保存起来,在删除控件的时候用 /// private object _sender = null; /// /// 鼠标进去控件时发生,这方法针对所有的要增加修改操作的控件 /// /// /// private new void MouseEnter(object sender, EventArgs e)//当鼠标移到pictuBox内,获取焦点 { this._sender = sender; } #endregion /// /// 将图片控件中的Tag内容,转成ImageInfo对象 /// /// /// private ImageInfo FindImageInfoByTag(object obj) { ImageInfo imageInfo = null; if (obj.GetType() == typeof(JObject))//这是因为配置文件中json转出来之后还没完全转完毕. { var imageInfoJson = HttpExtend.JsonToDictionary(obj.ToString().Replace("{{", "{").Replace("}}", "}")); imageInfo = new ImageInfo() { ImagePath = imageInfoJson["ImagePath"].ToString(), Varible = imageInfoJson["Varible"].ToString(), Shape = imageInfoJson["Shape"].ToString().ToLower() == "true" }; } else//这里是用户在设计模板的时候,添加修改操作时.正常的类型 imageInfo = obj as ImageInfo; return imageInfo; } } }