Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/18/14 12:01:13 (10 years ago)
Author:
ascheibe
Message:

merged trunk into hive statistics branch

Location:
branches/HiveStatistics/sources
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HiveStatistics/sources

  • branches/HiveStatistics/sources/HeuristicLab.Visualization.ChartControlsExtensions/3.3/ImageExportDialog.cs

    r7259 r11202  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2525using System.Drawing.Imaging;
    2626using System.IO;
     27using System.Linq;
    2728using System.Windows.Forms;
    2829using System.Windows.Forms.DataVisualization.Charting;
     
    5859        else lengthUnitComboBox.SelectedIndex = 0;
    5960
    60         titleFontSizeComboBox.Text = "12";
     61        titleFontSizeComboBox.Text = "10";
    6162        axisFontSizeComboBox.Text = "8";
    6263        scalesFontSizeComboBox.Text = "6";
    6364        legendFontSizeComboBox.Text = "6";
    64         resolutionComboBox.Text = "300";
     65        resolutionComboBox.Text = "150";
    6566        SuppressEvents = false;
    6667        splitContainer.Panel2Collapsed = true;
    6768        Width = 305;
    68         Height = 550;
    69       } finally { SuppressEvents = false; }
     69        Height = 625;
     70      }
     71      finally { SuppressEvents = false; }
    7072      #endregion
    7173    }
    7274
    7375    private void UpdateFields() {
    74       ChartArea area = GetCurrentChartArea();
     76      var area = GetCurrentChartArea();
    7577
    7678      try {
    7779        SuppressEvents = true;
    7880
    79         if (workingChart.Titles.Count == 0) titleFontSizeComboBox.Text = "12";
     81        if (workingChart.Titles.Count == 0) titleFontSizeComboBox.Text = "10";
    8082        else {
    8183          titleTextBox.Text = workingChart.Titles[0].Text;
     
    9092        axisFontSizeComboBox.Text = area.AxisX.TitleFont.SizeInPoints.ToString();
    9193        scalesFontSizeComboBox.Text = area.AxisX.LabelStyle.Font.SizeInPoints.ToString();
    92         if (workingChart.Legends.Count == 0) legendFontSizeComboBox.Text = "8";
     94        if (workingChart.Legends.Count == 0) legendFontSizeComboBox.Text = "6";
    9395        else legendFontSizeComboBox.Text = workingChart.Legends[0].Font.SizeInPoints.ToString();
    94       } finally {
     96      }
     97      finally {
    9598        SuppressEvents = false;
    9699      }
     
    121124      }
    122125
    123       float scaleFactor = (float)Math.Min(previewWidth / width, previewHeight / height);
     126      var scaleFactor = (float)Math.Min(previewWidth / width, previewHeight / height);
    124127      if (scaleFactor >= 1) {
    125128        previewZoomLabel.Text = "100%";
     
    129132      rawImageSizeLabel.Text = GetRawImageSizeInMegabytes(width, height).ToString("0.00") + "M   " + "(" + Math.Round(width).ToString("0") + " x " + Math.Round(height).ToString("0") + ") pixels";
    130133
    131       Bitmap image = new Bitmap(previewWidth, previewHeight);
     134      var image = new Bitmap(previewWidth, previewHeight);
    132135      image.SetResolution(dpi, dpi);
    133136      using (Graphics graphics = Graphics.FromImage(image)) {
     
    155158      originalChart.Serializer.Content = SerializationContents.Default;
    156159      originalChart.Serializer.Format = SerializationFormat.Binary;
    157       MemoryStream ms = new MemoryStream();
    158       originalChart.Serializer.Save(ms);
    159 
    160       ms.Seek(0, SeekOrigin.Begin);
    161       workingChart = new EnhancedChart();
    162       workingChart.Serializer.Format = originalChart.Serializer.Format;
    163       workingChart.Serializer.Load(ms);
    164       ms.Close();
     160      using (var ms = new MemoryStream()) {
     161        originalChart.Serializer.Save(ms);
     162
     163        ms.Seek(0, SeekOrigin.Begin);
     164        workingChart = new EnhancedChart();
     165        workingChart.Serializer.Format = originalChart.Serializer.Format;
     166        workingChart.Serializer.Load(ms);
     167      }
     168
     169      foreach (var s in workingChart.Series.Where(x => !x.Points.Any()).ToArray())
     170        s.IsVisibleInLegend = false;
    165171
    166172      originalChart.Serializer.Content = prevContent;
     
    169175
    170176      chartAreaComboBox.Items.Clear();
    171       foreach (ChartArea area in originalChart.ChartAreas) {
     177      foreach (var area in originalChart.ChartAreas) {
    172178        chartAreaComboBox.Items.Add(area.Name);
    173179      }
    174180      chartAreaComboBox.SelectedIndex = 0;
     181      SuppressEvents = true;
     182      try {
     183        showPrimaryXAxisCheckBox.Checked = originalChart.Series.Any(x => x.XAxisType == AxisType.Primary);
     184        showPrimaryYAxisCheckBox.Checked = originalChart.Series.Any(x => x.YAxisType == AxisType.Primary);
     185        showSecondaryXAxisCheckBox.Checked = originalChart.Series.Any(x => x.XAxisType == AxisType.Secondary);
     186        showSecondaryYAxisCheckBox.Checked = originalChart.Series.Any(x => x.YAxisType == AxisType.Secondary);
     187
     188        if (!workingChart.Legends.Any()) {
     189          legendPositionComboBox.Enabled = false;
     190          legendFontSizeComboBox.Enabled = false;
     191        } else {
     192          legendPositionComboBox.Enabled = true;
     193          legendFontSizeComboBox.Enabled = true;
     194          if (workingChart.Legends[0].Enabled) {
     195            switch (workingChart.Legends[0].Docking) {
     196              case Docking.Top:
     197                legendPositionComboBox.SelectedItem = "Top";
     198                break;
     199              case Docking.Right:
     200                legendPositionComboBox.SelectedItem = "Right";
     201                break;
     202              case Docking.Bottom:
     203                legendPositionComboBox.SelectedItem = "Bottom";
     204                break;
     205              case Docking.Left:
     206                legendPositionComboBox.SelectedItem = "Left";
     207                break;
     208            }
     209          } else {
     210            legendPositionComboBox.SelectedItem = "Hidden";
     211          }
     212        }
     213      }
     214      finally { SuppressEvents = false; }
    175215      base.OnShown(e);
    176216
     
    193233    }
    194234
     235    private void legendPositionComboBox_SelectedIndexChanged(object sender, EventArgs e) {
     236      if (!SuppressEvents) {
     237        if (legendPositionComboBox.SelectedIndex >= 0) {
     238          var legend = workingChart.Legends[0];
     239          var legendPosition = legendPositionComboBox.Items[legendPositionComboBox.SelectedIndex].ToString();
     240          if (legendPosition != "Hidden" && !legend.Enabled)
     241            legend.Enabled = true;
     242          switch (legendPosition) {
     243            case "Top":
     244              legend.Docking = Docking.Top;
     245              break;
     246            case "Right":
     247              legend.Docking = Docking.Right;
     248              break;
     249            case "Bottom":
     250              legend.Docking = Docking.Bottom;
     251              break;
     252            case "Left":
     253              legend.Docking = Docking.Left;
     254              break;
     255            case "Hidden":
     256              legend.Enabled = false;
     257              break;
     258          }
     259        }
     260        UpdatePreview();
     261      }
     262    }
     263
    195264    private void titleTextBox_TextChanged(object sender, EventArgs e) {
    196265      if (!SuppressEvents) {
    197         if (workingChart.Titles.Count > 0) {
    198           workingChart.Titles[0].Text = titleTextBox.Text;
    199         } else {
    200           Title t = new Title(titleTextBox.Text);
    201           t.Font = ChangeFontSizePt(t.Font, float.Parse(titleFontSizeComboBox.Text));
    202           workingChart.Titles.Add(t);
     266        if (string.IsNullOrEmpty(titleTextBox.Text))
     267          workingChart.Titles.Clear();
     268        else {
     269          if (workingChart.Titles.Count > 0) {
     270            workingChart.Titles[0].Text = titleTextBox.Text;
     271          } else {
     272            var t = new Title(titleTextBox.Text);
     273            t.Font = ChangeFontSizePt(t.Font, float.Parse(titleFontSizeComboBox.Text));
     274            workingChart.Titles.Add(t);
     275          }
    203276        }
    204277        if (togglePreviewCheckBox.Checked) UpdatePreview();
     
    208281    private void primaryXTextBox_TextChanged(object sender, EventArgs e) {
    209282      if (!SuppressEvents) {
    210         ChartArea area = GetCurrentChartArea();
     283        var area = GetCurrentChartArea();
    211284        area.AxisX.Title = primaryXTextBox.Text;
    212285        if (togglePreviewCheckBox.Checked) UpdatePreview();
     
    216289    private void primaryYTextBox_TextChanged(object sender, EventArgs e) {
    217290      if (!SuppressEvents) {
    218         ChartArea area = GetCurrentChartArea();
     291        var area = GetCurrentChartArea();
    219292        area.AxisY.Title = primaryYTextBox.Text;
    220293        if (togglePreviewCheckBox.Checked) UpdatePreview();
     
    224297    private void secondaryXTextBox_TextChanged(object sender, EventArgs e) {
    225298      if (!SuppressEvents) {
    226         ChartArea area = GetCurrentChartArea();
     299        var area = GetCurrentChartArea();
    227300        area.AxisX2.Title = secondaryXTextBox.Text;
    228301        if (togglePreviewCheckBox.Checked) UpdatePreview();
     
    232305    private void secondaryYTextBox_TextChanged(object sender, EventArgs e) {
    233306      if (!SuppressEvents) {
    234         ChartArea area = GetCurrentChartArea();
     307        var area = GetCurrentChartArea();
    235308        area.AxisY2.Title = secondaryYTextBox.Text;
     309        if (togglePreviewCheckBox.Checked) UpdatePreview();
     310      }
     311    }
     312
     313    private void showPrimaryXAxisCheckBox_CheckedChanged(object sender, EventArgs e) {
     314      if (!SuppressEvents) {
     315        var area = GetCurrentChartArea();
     316        var isChecked = ((CheckBox)sender).Checked;
     317        area.AxisX.Enabled = isChecked ? AxisEnabled.True : AxisEnabled.False;
     318        if (togglePreviewCheckBox.Checked) UpdatePreview();
     319      }
     320    }
     321
     322    private void showPrimaryYAxisCheckBox_CheckedChanged(object sender, EventArgs e) {
     323      if (!SuppressEvents) {
     324        var area = GetCurrentChartArea();
     325        var isChecked = ((CheckBox)sender).Checked;
     326        area.AxisY.Enabled = isChecked ? AxisEnabled.True : AxisEnabled.False;
     327        if (togglePreviewCheckBox.Checked) UpdatePreview();
     328      }
     329    }
     330
     331    private void showSecondaryXAxisCheckBox_CheckedChanged(object sender, EventArgs e) {
     332      if (!SuppressEvents) {
     333        var area = GetCurrentChartArea();
     334        var isChecked = ((CheckBox)sender).Checked;
     335        area.AxisX2.Enabled = isChecked ? AxisEnabled.True : AxisEnabled.False;
     336        if (togglePreviewCheckBox.Checked) UpdatePreview();
     337      }
     338    }
     339
     340    private void showSecondaryYAxisCheckBox_CheckedChanged(object sender, EventArgs e) {
     341      if (!SuppressEvents) {
     342        var area = GetCurrentChartArea();
     343        var isChecked = ((CheckBox)sender).Checked;
     344        area.AxisY2.Enabled = isChecked ? AxisEnabled.True : AxisEnabled.False;
    236345        if (togglePreviewCheckBox.Checked) UpdatePreview();
    237346      }
     
    270379        float fontSize;
    271380        if (float.TryParse(axisFontSizeComboBox.Text, out fontSize)) {
    272           ChartArea area = GetCurrentChartArea();
    273           foreach (Axis a in area.Axes) {
     381          var area = GetCurrentChartArea();
     382          foreach (Axis a in area.Axes)
    274383            a.TitleFont = ChangeFontSizePt(a.TitleFont, fontSize);
    275           }
    276384        }
    277385        if (togglePreviewCheckBox.Checked) UpdatePreview();
     
    283391        float fontSize;
    284392        if (float.TryParse(scalesFontSizeComboBox.Text, out fontSize)) {
    285           ChartArea area = GetCurrentChartArea();
    286           foreach (Axis a in area.Axes) {
     393          var area = GetCurrentChartArea();
     394          foreach (var a in area.Axes)
    287395            a.LabelStyle.Font = ChangeFontSizePt(a.LabelStyle.Font, fontSize);
    288           }
    289396        }
    290397        if (togglePreviewCheckBox.Checked) UpdatePreview();
     
    296403        float fontSize;
    297404        if (float.TryParse(legendFontSizeComboBox.Text, out fontSize)) {
    298           foreach (Legend l in workingChart.Legends) {
     405          foreach (var l in workingChart.Legends)
    299406            l.Font = ChangeFontSizePt(l.Font, fontSize);
    300           }
    301407        }
    302408        if (togglePreviewCheckBox.Checked) UpdatePreview();
     
    335441      float height;
    336442      GetImageParameters(out dpi, out width, out height);
    337 
    338       Bitmap image = new Bitmap((int)Math.Round(width), (int)Math.Round(height));
     443      var image = new Bitmap((int)Math.Round(width), (int)Math.Round(height));
    339444      image.SetResolution(dpi, dpi);
    340       using (Graphics graphics = Graphics.FromImage(image)) {
    341         workingChart.Printing.PrintPaint(graphics, new Rectangle(0, 0, image.Width, image.Height));
    342       }
    343 
    344445      if (titleTextBox.Text.Trim() != String.Empty) saveFileDialog.FileName = titleTextBox.Text.Trim();
    345446      if (saveFileDialog.ShowDialog() == DialogResult.OK) {
    346         ImageFormat format = ImageFormat.Bmp;
    347         string filename = saveFileDialog.FileName.ToLower();
    348         if (filename.EndsWith("jpg")) {
    349           format = ImageFormat.Jpeg;
    350         } else if (filename.EndsWith("emf")) {
    351           format = ImageFormat.Emf;
    352         } else if (filename.EndsWith("gif")) {
    353           format = ImageFormat.Gif;
    354         } else if (filename.EndsWith("png")) {
    355           format = ImageFormat.Png;
    356         } else if (filename.EndsWith("tif")) {
    357           format = ImageFormat.Tiff;
    358         }
    359         image.Save(saveFileDialog.FileName, format);
    360       }
    361 
     447        var format = ImageFormat.Bmp;
     448        var filename = saveFileDialog.FileName.ToLower();
     449        if (filename.EndsWith("emf")) {
     450          using (var graphics = Graphics.FromImage(image)) {
     451            var rectangle = new Rectangle(0, 0, image.Width, image.Height);
     452            using (var metafile = new Metafile(filename, graphics.GetHdc(), rectangle, MetafileFrameUnit.Pixel, EmfType.EmfPlusDual)) {
     453              graphics.ReleaseHdc();
     454              using (var g = Graphics.FromImage(metafile)) {
     455                workingChart.Printing.PrintPaint(g, rectangle);
     456              }
     457            }
     458          }
     459        } else {
     460          using (var graphics = Graphics.FromImage(image)) {
     461            workingChart.Printing.PrintPaint(graphics, new Rectangle(0, 0, image.Width, image.Height));
     462          }
     463          if (filename.EndsWith("jpg")) {
     464            format = ImageFormat.Jpeg;
     465          } else if (filename.EndsWith("gif")) {
     466            format = ImageFormat.Gif;
     467          } else if (filename.EndsWith("png")) {
     468            format = ImageFormat.Png;
     469          } else if (filename.EndsWith("tif")) {
     470            format = ImageFormat.Tiff;
     471          }
     472          image.Save(saveFileDialog.FileName, format);
     473        }
     474      }
    362475      image.Dispose();
    363 
    364476      Cleanup();
    365477    }
Note: See TracChangeset for help on using the changeset viewer.