예제 #1
0
 static void LayoutChronodex(ChronodexList cl, Graphics go)
 {
     // find closest to Zero grad angle
     var cs = cl.findLayoutStartingSector();
     do {
         if (cl.Descriptions.ContainsKey(cl.getCurrent().Description)) {
             cl.getCurrent().LabelRectangle = cl.Descriptions[cl.getCurrent().Description].LabelRectangle;
             cl.getCurrent().CalloutEnd = cl.Descriptions[cl.getCurrent().Description].CalloutEnd;
         } else {
             cl.getCurrent().LayoutRespecting(go, cl.getPrevious());
             cl.Descriptions.Add(cl.getCurrent().Description, cl.getCurrent());
         }
         cl.moveForward();
     } while (cl.getCurrent() != cs);
 }
예제 #2
0
        public static Image CreateChronodex(ChronodexList cl)
        {
            if (cl.getSectorsCount() == 0) {return null;}

            Assembly myAssembly = Assembly.GetExecutingAssembly();
            Stream myStream = myAssembly.GetManifestResourceStream("Chronodex");
            Image myImage = Image.FromStream(myStream);
            myStream.Close();
            Graphics go = Graphics.FromImage(myImage);

            LayoutChronodex(cl, go);

            // draw sectors
            ChronodexSector cs;
            cs = cl.getFirst();
            DrawChronodexSector(cs, go);

            while (cl.getNext() != cs) {
                cl.moveForward();
                DrawChronodexSector(cl.getCurrent(), go);
            }

            return myImage;
        }