FrmChartSet.cs 10.8 KB
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;
using GeneralLib;

namespace SunVoteARSPPT
{
    public partial class FrmChartSet : Form
    {
        public FrmChartSet()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 幻灯片的TagSet
        /// 创建:杨斌 2012-06-26
        /// </summary>
        private TagSet TagSet = null;

        //杨斌 2012-06-26
        private void btnOK_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                TagSet.SetValue(TagKey.ChartColor_, i, lvwColorSet.Items[i].BackColor.ToArgb());
                //GlobalInfo.ChartColors[i] = lvwColorSet.Items[i].BackColor;
            }

            TagSet.SetValue(TagKey.ChartPara_ItemLabelFontName, ItemLabelFont.Name);
            TagSet.SetValue(TagKey.ChartPara_ItemLabelFontSize, ItemLabelFont.Size);
            TagSet.SetValue(TagKey.ChartPara_ItemLabelFontBold, ItemLabelFont.Bold);
            TagSet.SetValue(TagKey.ChartPara_ItemLabelFontItalic, ItemLabelFont.Italic);
            TagSet.SetValue(TagKey.ChartPara_ItemLabelFontColor, ItemLabelColor.ToArgb());

            TagSet.SetValue(TagKey.ChartPara_DataLabelFontName, DataLabelFont.Name);
            TagSet.SetValue(TagKey.ChartPara_DataLabelFontSize, DataLabelFont.Size);
            TagSet.SetValue(TagKey.ChartPara_DataLabelFontBold, DataLabelFont.Bold);
            TagSet.SetValue(TagKey.ChartPara_DataLabelFontItalic, DataLabelFont.Italic);
            TagSet.SetValue(TagKey.ChartPara_DataLabelFontColor, DataLabelColor.ToArgb());

            //2012-06-13 设置颜色时,图表未显示
            Globals.SunVoteARSAddIn.PPTEdit.InitChart(true, Globals.SunVoteARSAddIn.PPTEdit.SlideEdit);
            //Globals.SunVoteARSAddIn.PPTEdit.SlideChart.SeriesColors = GlobalInfo.ChartColors;

            this.Close();
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// 从Tags中获取图表颜色
        /// 创建:杨斌 2012-03-20
        /// </summary>
        /// <param name="TagSet"></param>
        /// <param name="itemNo"></param>
        /// <returns></returns>
        public static Color GetTagSetColor(TagSet tagSet, int itemNo)
        {
            Color res = new Color();
            try
            {
                int min = GlobalInfo.ChartColors.GetLowerBound(0);
                int max = GlobalInfo.ChartColors.GetUpperBound(0);

                if (itemNo < min) itemNo = min;
                if (itemNo > max) itemNo = max;

                string sVal = tagSet.LoadValue(TagKey.ChartColor_, itemNo, "").Value;
                if (sVal.Length > 0)//非空从Slide中取
                {
                    res = Color.FromArgb(ConvertOper.Convert(sVal).ToInt);
                }
                else//为空则取:系统默认颜色
                {
                    res = GlobalInfo.ChartColors[itemNo];

                    //表决和其他选项都统一用一个颜色表。杨斌 2018-07-26
                    ////表决默认颜色,绿红蓝。杨斌 2015-05-18
                    //ResponseType responseType = EnumName<ResponseType>.GetEnum(tagSet.LoadValue(TagKey.ResponseType, ResponseType.Slide).Value);
                    //if (responseType == ResponseType.Vote)
                    //{
                    //    switch (itemNo)
                    //    {
                    //        case 0:
                    //            //res = Color.FromArgb(0, 225, 0);
                    //            res = Color.FromArgb(0, 176, 80);
                    //            break;
                    //        case 1:
                    //            //res = Color.FromArgb(224, 64, 10);
                    //            res = Color.FromArgb(255, 0, 0);
                    //            break;
                    //        case 2:
                    //            //res = Color.FromArgb(65, 140, 240);
                    //            res = Color.FromArgb(0, 0, 255);
                    //            break;
                    //    }
                    //}

                    tagSet.SetValue(TagKey.ChartColor_, itemNo, res.ToArgb());//空值则设置保存默认
                }
            }
            catch (Exception ex)
            {
                SystemLog.WriterLog(ex, false);
            }
            return res;
        }

        //杨斌 2012-06-28
        private void FrmChartSet_Load(object sender, EventArgs e)
        {
            IsLoad = true;

            GlobalInfo.SysLanguage.SetLanguage(this.Name, this);

            TagSet = new TagSet();
            TagSet.Tags = Globals.SunVoteARSAddIn.PPTEdit.SlideEdit.Tags;

            lvwColorSet.HeaderStyle = ColumnHeaderStyle.None;
            for (int i = 0; i < 10; i++)
            {
                //lvwColorSet.Items[i].BackColor = Color.FromArgb(TagSet.LoadValue(TagKey.ChartColor_, i, GlobalInfo.ChartColors[i]).ToInt);                    
                lvwColorSet.Items[i].BackColor = GetTagSetColor(TagSet, i);//杨斌 2012-03-20
            }
            lvwColorSet.Font = new System.Drawing.Font(lvwColorSet.Font.Name, 17);
            cboFontName.Items.Clear();
            foreach (FontFamily font in FontFamily.Families)
            {
                cboFontName.Items.Add(font.Name);
            }
            //参照Offic字号列表
            cboFontSize.Items.Clear();
            cboFontSize.Items.Add(8);
            cboFontSize.Items.Add(9);
            cboFontSize.Items.Add(10);
            cboFontSize.Items.Add(10.5);
            cboFontSize.Items.Add(11);
            cboFontSize.Items.Add(12);
            cboFontSize.Items.Add(14);
            cboFontSize.Items.Add(16);
            cboFontSize.Items.Add(18);
            cboFontSize.Items.Add(20);
            cboFontSize.Items.Add(24);
            cboFontSize.Items.Add(28);
            cboFontSize.Items.Add(32);
            cboFontSize.Items.Add(36);
            cboFontSize.Items.Add(40);
            cboFontSize.Items.Add(44);
            cboFontSize.Items.Add(48);
            cboFontSize.Items.Add(54);
            cboFontSize.Items.Add(60);
            cboFontSize.Items.Add(66);
            cboFontSize.Items.Add(72);
            cboFontSize.Items.Add(80);
            cboFontSize.Items.Add(88);
            cboFontSize.Items.Add(96);

            Chart = Globals.SunVoteARSAddIn.PPTEdit.SlideChart;
            ItemLabelFont = Chart.ItemLabelFont.Clone() as Font;
            ItemLabelColor = Chart.ItemLabelColor;
            DataLabelFont = Chart.DataLabelFont.Clone() as Font;
            DataLabelColor = Chart.DataLabelColor;
            cboFontObject.SelectedIndex = 0;
            IsLoad = false;
        }

        private void lvwColor_MouseUp(object sender, MouseEventArgs e)
        {
            try
            {
                picFocus.Select();
                ColorDialog cdlg = new ColorDialog();
                cdlg.Color = lvwColorSet.SelectedItems[0].BackColor;

                //杨斌 2014-10-16
                if (GlobalInfo.MyCustomColors != null)
                    cdlg.CustomColors = GlobalInfo.MyCustomColors;

                cdlg.ShowDialog();

                GlobalInfo.MyCustomColors = cdlg.CustomColors;//杨斌 2014-10-16

                lvwColorSet.SelectedItems[0].BackColor = cdlg.Color;
            }
            catch
            {
            }
        }

        //保存字体颜色参数值
        ManageChart Chart;
        private Font ItemLabelFont;
        private Color ItemLabelColor;
        private Font DataLabelFont;
        private Color DataLabelColor;

        /// <summary>
        /// 是否正在加载,不处理控件事件
        /// 创建:杨斌 2012-06-26
        /// </summary>
        bool IsLoad = false;
        //杨斌 2012-06-26
        private void cboFontObject_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (Chart == null) return;

            IsLoad = true;

            Font font = null;
            Color color = Color.Black;
            switch (cboFontObject.SelectedIndex)
            {
                case 0://选项标签
                    font = ItemLabelFont;
                    color = ItemLabelColor;
                    break;
                case 1://数据标签
                    font = DataLabelFont;
                    color = DataLabelColor;
                    break;
                default:
                    return;
            }

            string fontName = font.Name;
            if (!cboFontName.Items.Contains(fontName)) cboFontName.Items.Add(fontName);
            cboFontName.Text = fontName;
            cboFontSize.Text = font.Size.ToString();
            chkFontBold.Checked = font.Bold;
            chkFontItalic.Checked = font.Italic;

            picFontColor.BackColor = color;

            IsLoad = false;
        }

        /// <summary>
        /// 设置字体
        /// 创建:杨斌 2012-06-26
        /// </summary>
        private void Font_Changed(object sender, EventArgs e)
        {
            if (IsLoad) return;

            float fontSize = 0;
            float.TryParse(cboFontSize.Text, out fontSize);

            FontStyle style = FontStyle.Regular;
            if (chkFontBold.Checked) style = style | FontStyle.Bold;
            if (chkFontItalic.Checked) style = style | FontStyle.Italic;

            string fontName = cboFontName.Text;

            switch (cboFontObject.SelectedIndex)
            {
                case 0://选项标签
                    if (fontSize == 0) fontSize = ItemLabelFont.Size;
                    ItemLabelFont = new Font(fontName, fontSize, style);
                    break;
                case 1://数据标签
                    if (fontSize == 0) fontSize = DataLabelFont.Size;
                    DataLabelFont = new Font(fontName, fontSize, style);
                    break;
                default:
                    return;
            }
        }

        private void picFontColor_Click(object sender, EventArgs e)
        {
            try
            {
                ColorDialog cdlg = new ColorDialog();
                cdlg.Color = picFontColor.BackColor;
                cdlg.ShowDialog();
                picFontColor.BackColor = cdlg.Color;

                switch (cboFontObject.SelectedIndex)
                {
                    case 0://选项标签
                        ItemLabelColor = picFontColor.BackColor;
                        break;
                    case 1://数据标签
                        DataLabelColor = picFontColor.BackColor;
                        break;
                    default:
                        return;
                }
            }
            catch
            {
            }
        }
    }
}