Íme egy példa diagramképek dinamikus létrehozására. Annyit szeretne létrehozni belőlük, amennyire szüksége van, különböző szövegekkel és különböző nevekkel..:
Image img = Image.FromFile(someTemplateImage);
// draw a text into it:
using (Graphics G = Graphics.FromImage(img))
G.DrawString("Hello", Font, Brushes.Blue, 1, 1);
// add it to the chart images with a name:
chart.Images.Add(new NamedImage("img01", img));
Most létrehozhatunk egy egyéni címkét, amely a képünket mutatja:
Axis ax = chart.ChartAreas[0].AxisX;
CustomLabel cl = new CustomLabel();
cl.FromPosition = chart.Series[0].Points[0].XValue; // some values, which will place
cl.ToPosition = chart.Series[0].Points[1].XValue; // the cl between two points
cl.Text = ""; // no text, please!
cl.Image = "img01"; // this is our NamedImage
ax.CustomLabels.Add(cl); // now we can add the CL
Természetesen a megrajzolt karakterlánc betűtípusokkal és igazítással történő formázása csak Önön múlik.
Ez csak egy példa egy egyetlen képpel és egy egyetlen cl
képpel. Igényeitől függően érdemes kigondolnia egy sémát a képek elnevezésére és szövegeik hozzáadására.
Érdemes átnézni az ott található bejegyzéseket, hogy példákat lásson az áthelyezéssel kapcsolatban: Itt nagyszámú jelölőképet készítek menet közben, és itt a jelölőképek hőtérképet készítenek.
Íme egy díszítő funkció, amely egy sablonképet ad hozzá egy tengely minden egyéni címkéjéhez..:
public void AddornCLs(Chart chart, Axis axis, Image template, Font font, Color color)
{
Rectangle rect = new Rectangle(Point.Empty, template.Size);
TextFormatFlags format = TextFormatFlags.HorizontalCenter
| TextFormatFlags.VerticalCenter;
foreach(CustomLabel cl in axis.CustomLabels)
{
string text = cl.Text;
if (text == "") text = cl.Tag.ToString(); else cl.Tag = cl.Text;
cl.Text = "";
if (cl.Name == "") cl.Name = axis.CustomLabels.IndexOf(cl).ToString("CL000");
Image img = (Image)template.Clone();
using (Graphics G = Graphics.FromImage(img))
TextRenderer.DrawText(G, text, font, rect, color, format);
chart.Images.Add(new NamedImage(cl.Name, img));
cl.Image = cl.Name;
}
}
27.06.2016