1

当我现在将图表保存到硬盘时,文件大小为:284x262 290kb 当我试图将图表从硬盘上的 bmp 文件放在 pdf 文档上时,它非常小。如果我在 pdf 上手动拉伸它,它会失去分辨率并且看起来很糟糕,你甚至无法阅读图表上的任何内容。

我想以某种方式保持图形分辨率,我的意思是质量和清晰度,但让它的尺寸更大,比如 1920x1080。

这是我使用的代码:

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 ZedGraph;
using Extracting_Frames;

namespace Lightnings_Extractor
{
    public partial class RGB_Form : Form
    {
        int framesLength;

        public RGB_Form()
        {
            InitializeComponent();

            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
            zedGraphControl1.ClientSize = this.Size;
            framesLength = Form1.list_of_histogramsR.Count;
        }

        public RGB_Form(List<long[]> Histograms)
        {
            InitializeComponent();

            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
            zedGraphControl1.ClientSize = this.Size;
            framesLength = Histograms.Count;
            CreateGraph_GradientByZBars(zedGraphControl1, Histograms);
        }

        private void CreateGraph_GradientByZBars(ZedGraphControl z1, List<long[]> HistoGramList)
        {
            GraphPane myPane = z1.GraphPane;
            if (myPane != null)
            {
                myPane.CurveList.Clear();
                myPane.GraphObjList.Clear();
                myPane.Title.Text = "Simple Moving Average By :  " + Form1.percentage + "%";
                myPane.XAxis.Title.Text = "Frame Number";
                myPane.YAxis.Title.Text = "Value";


                myPane.XAxis.Scale.MaxAuto = false;
                myPane.XAxis.Scale.MinAuto = false;
                myPane.YAxis.Scale.MaxAuto = false;
                myPane.YAxis.Scale.MinAuto = false;

                myPane.XAxis.Scale.Min = 0;
                myPane.XAxis.Scale.Max = 255; //framesLength;
                myPane.YAxis.Scale.Min = 0;
                myPane.YAxis.Scale.Max = framesLength;// 255;

                PointPairList R = new PointPairList();
                PointPairList G = new PointPairList();
                PointPairList B = new PointPairList();

                for (int i = 0; i <  HistoGramList.Count; i++)
                {
                    if (i == 3154)
                    {
                        double z = 0;
                        double yy = 0;
                        long[] g = HistoGramList[i];
                            for (int f = 0; f < g.Length; f++)
                            {
                                double x = f;
                                yy = g[f];
                                R.Add(x, yy, z);
                            }
                    }
                }

                LineItem myCurveRed = myPane.AddCurve("Original Signal",
                   R, Color.Red, SymbolType.None);
                z1.Size = new System.Drawing.Size(1920, 1080);
                z1.AxisChange();
                z1.SaveAs(@"ZedRgb.bmp");
            }
        }
    }
}

在我添加的代码末尾附近:

z1.Size = new System.Drawing.Size(1920, 1080);

但它并没有改变任何东西,硬盘上的文件大小仍然是:284x262

如何更改图形大小并将其保存到硬盘而不损失 1920x1080 的质量?当我在我的程序上使用图表时,它会全屏显示,并且图表是全屏大,但是当我将它保存到硬盘时,它非常小。

编辑:我刚刚看到,在我添加 zedgraph 控件的表单上,表单大小为 300x300,但 zedgraph 控件大小为 284x262,为了使其全屏显示,我将 ZedGraph 控件 Dock 属性更改为 Fill。

因此,ZedGraph 控件的设计器中的大小实际上是 284x262,如果我想在不更改设计器大小的情况下将其保存到我的硬盘上,如何在运行时代码中更改它?

4

2 回答 2

0

我刚刚将 ZedGraph 控件从 Dock Fill 更改为 Dock None

谢谢。

于 2012-12-19T08:57:17.693 回答
0

我建议更换线路

z1.Size = new System.Drawing.Size(1920, 1080);

this.size = 新尺寸(1920,1080);

我很想知道它是否有效。如果没有,另一种可能的解决方案可能是添加
该行

this.size = 新尺寸(1920,1080);

行前

zedGraphControl1.ClientSize = this.Size;

于 2013-09-20T15:37:01.727 回答