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