时间: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,背景图像将被拉伸以适应图表区域的边界。
我正在尝试在 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,背景图像将被拉伸以适应图表区域的边界。