时间:2019-03-08 标签:c#charareabackimagesizing

c# chartarea backimage sizing

我正在尝试在 windows 表单应用程序中为图表区放置背景图片。 我成功地放置了背景图像,但我希望图表区域与背景图像的大小完全相同。 我尝试使用内部绘图位置调整图表区域的大小,我想我设法正确调整了图表区域的大小以等于图像大小,但是我仍然有一个问题:背景图像略有移动(见附图 1). I want my backimage to be like (2). 有人可以帮我正确调整图表区域和图像的大小吗?请注意,图像将用于绘制图表点,图像的宽度对应于 x = [0.0005 - 0.2],高度对应于 y = [0.0005 - 0.05]。 这是我的代码:

        ChartArea ca = Chart1.ChartAreas[0];
        ElementPosition cap = ca.Position;
        ElementPosition ipp = ca.InnerPlotPosition;
        // chartarea pixel size:
        Size CaSize = new Size((int)(cap.Width * Chart1.ClientSize.Width / 100f),
                                (int)(cap.Height * Chart1.ClientSize.Height / 100f));

        // InnerPlotArea pixel size:
        Size IppSize = new Size((int)(ipp.Width * CaSize.Width / 100f),
                                 (int)(ipp.Height * CaSize.Height / 100f));
        //Previous lines are used to get the size of the inner plot in pixels to adjust my image size.
        Chart1.ChartAreas[0].BackImage = "MyImage.png";
        //Chart1.Series["Series1"].Points.AddXY(0.1, 0.02);
        Chart1.Series["Series1"].Color = Color.Red;
        Chart1.ChartAreas[0].AxisX.MajorGrid.LineWidth = 0;
        Chart1.ChartAreas[0].AxisY.MajorGrid.LineWidth = 0;
        Chart1.ChartAreas[0].AxisX.Maximum = 0.2;
        Chart1.ChartAreas[0].AxisX.Minimum = 0.00005;
        //Chart1.ChartAreas[0].AxisX.Title = "h/gT^2";
        Chart1.ChartAreas[0].AxisY.Minimum = 0.00005;
        Chart1e.ChartAreas[0].AxisY.Maximum = 0.05;
        //Chart1.ChartAreas[0].AxisY.Title = "H/gT^2";

提前致谢,

穆罕默德赫梅迪。

通过添加 BackImageWrapMode 解决:

Chart1.ChartAreas[0].BackImageWrapMode = ChartImageWrapMode.Scaled;

通过使用 wrapmode scaled,背景图像将被拉伸以适应图表区域的边界。