Example #1
0
 public void DrawKanbanItemFrameNonBlockedTest()
 {
     GraphicService service = new GraphicService();
     KanbanItem item = new KanbanItem("C1","US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     var rec = service.GetKanbanItemSize(new Point(0, 0), 400, 20, 20, item);
     Image image = new Bitmap(rec.Width, rec.Height);
     using (var g = Graphics.FromImage(image))
     {
         service.DrawOneKanbanItem(g, new Point(0, 0), 400, 20, 20, item);
         image.Save(@"c:\temp\pngTempNonBlocked.png", ImageFormat.Png);
     }
 }
Example #2
0
 public void DrawOneKanbanColumnTest()
 {
     GraphicService service = new GraphicService();
     KanbanItem item0 = new KanbanItem("C1","US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     KanbanItem item1 = new KanbanItem("C1","US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas","BLOCKED BLOCKED BLOCKED BBBBBBBB");
     //KanbanItem item2 = new KanbanItem("US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     //KanbanItem item3 = new KanbanItem("US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     //KanbanItem item4 = new KanbanItem("US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     //KanbanItem item5 = new KanbanItem("US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     //KanbanItem item6 = new KanbanItem("US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     List<KanbanItem> items =new List<KanbanItem>(){item0,item1};
     var rec = service.GetOneKanbanColumnSize(new Point(0, 0), 400, 20, 50, 20,100, items);
     Image image=new Bitmap(rec.Width,rec.Height);
     using (var g = Graphics.FromImage(image))
     {
         service.DrawOneKanbanColumn(g, new Point(0, 0), 400, 20, 50, 20,"Development",100, items);
         image.Save(@"c:\temp\pngTempOneColumn.png",ImageFormat.Png);
     }
 }
Example #3
0
 public void DrawWholeKanbanTest()
 {
     GraphicService service = new GraphicService();
     KanbanItem item0 = new KanbanItem("C1", "US1234", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     KanbanItem item1 = new KanbanItem("C1", "DE4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas", "BLOCKED BLOCKED BLOCKED BBBBBBBB");
     KanbanItem item2 = new KanbanItem("C2", "US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxddsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     KanbanItem item3 = new KanbanItem("C2", "US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxefadsfasefaefasdfsdfsafas");
     KanbanItem item4 = new KanbanItem("C3", "US22221", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxdsdfgsdfgsfgsdsssseeqqzxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     KanbanItem item5 = new KanbanItem("C4", "US4321", "Cheng Huang", "aabbccddxxxxxxxxxxxxxxxxxxxxxxxxxbbbbdeevsdfaefefadsfasefaefasdfsdfsafas");
     KanbanItem item6 = new KanbanItem("C4", "US4321", "Cheng Huang", "aabbccfaefasdfsdfsafas", "abeedde");
     List<KanbanItem> itemg1 = new List<KanbanItem>(){item0,item1};
     List<KanbanItem> itemg2 = new List<KanbanItem>(){item2, item3, item0, item5};
     List<KanbanItem> itemg3 = new List<KanbanItem>(){item4};
     List<KanbanItem> itemg4 = new List<KanbanItem>(){item5, item6};
     Dictionary<string, List<KanbanItem>> dict =new Dictionary<string, List<KanbanItem>>();
     dict.Add("C1", itemg1);
     dict.Add("C2", itemg2);
     dict.Add("C3", itemg3);
     dict.Add("C4", itemg4);
     Image img = service.DrawWholeKanban(400, 20, 50, 20, 100, dict);
     img.Save(@"c:\temp\pngTempWholeKanban.png",ImageFormat.Png);
 }
Example #4
0
        public Rectangle DrawOneKanbanItem(Graphics g, Point startPoint, int recWidth, int headerHeight, int textMargin, KanbanItem item)
        {
            float currentHeight = 0;

            var halfMargin = textMargin/2;

            //Header, solid rectangle
            Brush headerBrush=new SolidBrush(Color.DarkOrange);
            Rectangle headerRec = new Rectangle(new Point(startPoint.X, startPoint.Y), new Size(recWidth+1, headerHeight));

            Font font = new Font("Segoe UI", 20, FontStyle.Regular);
            Debug.WriteLine("Draw:currentHeight0:"+currentHeight);
            currentHeight = headerRec.Bottom + halfMargin;
            Debug.WriteLine("Draw:currentHeight1:" + currentHeight);
            //FormattedId
            Brush formattedIdBrush = new SolidBrush(Color.DeepSkyBlue);
            var formattedIdSize = g.MeasureString(item.FormattedId, font);
            g.DrawString(item.FormattedId, font, formattedIdBrush, headerRec.Left + textMargin, currentHeight );

            currentHeight += formattedIdSize.Height + textMargin;
            Debug.WriteLine("Draw:currentHeight2:" + currentHeight);
            //AssignedToId
            Brush assignedToBrush = new SolidBrush(Color.Black);
            var assignedToSize = g.MeasureString(item.AssignedTo, font);
            g.DrawString(item.AssignedTo, font, assignedToBrush, headerRec.Left + textMargin, currentHeight);

            currentHeight += assignedToSize.Height + textMargin;
            Debug.WriteLine("Draw:currentHeight3:" + currentHeight);
            //Description
            Brush descriptionBrush = new SolidBrush(Color.Black);
            var descriptionSize = g.MeasureString(item.StoryDescription, font, headerRec.Width - 2*textMargin);
            RectangleF recDescription = new RectangleF(new PointF(headerRec.Left + textMargin, currentHeight), descriptionSize);

            g.DrawString(item.StoryDescription, font, descriptionBrush, recDescription);
            currentHeight += recDescription.Height + textMargin;
            Debug.WriteLine("Draw:currentHeight4:" + currentHeight);
            if (item.IsBlocked)
            {
                Image blockedIcon = Resources.blocked;

                var blockedReasonSize = g.MeasureString(item.BlockedReason, font, headerRec.Width - 2 * textMargin - blockedIcon.Width - halfMargin);
                SizeF blockedReasonBackgroundSize = new SizeF(headerRec.Width -2 * textMargin,blockedReasonSize.Height);
                Brush blockedReasonBackgroundBrush = new SolidBrush(Color.LightGray);
                g.FillRectangle(blockedReasonBackgroundBrush, new RectangleF(new PointF(headerRec.Left + textMargin, currentHeight), blockedReasonBackgroundSize));

                Brush blockedReasonBrush = new SolidBrush(Color.Black);
                RectangleF recBlockedReason = new RectangleF(new PointF(headerRec.Left + blockedIcon.Width + textMargin + halfMargin, currentHeight), blockedReasonSize);
                g.DrawString(item.BlockedReason,font,blockedReasonBrush,recBlockedReason );

                RectangleF recBlockedIconSmall = new RectangleF(headerRec.Left + textMargin + halfMargin, currentHeight  + recBlockedReason.Height / 2 - blockedIcon.Height / 2, blockedIcon.Width, blockedIcon.Height);
                g.DrawImage(blockedIcon, recBlockedIconSmall);

                currentHeight += blockedReasonBackgroundSize.Height + textMargin;
            }

            currentHeight += halfMargin;
            //Frame, wire frame rectangle

            Pen framePen = item.IsBlocked ? new Pen(Color.DarkRed, 2) : new Pen(Color.Gray, 2);
            //g.Clear(Color.White);
            Rectangle recFrame = new Rectangle(startPoint,new Size(recWidth,(int)currentHeight -startPoint.Y));
            g.DrawRectangle(framePen, recFrame);
            g.FillRectangle(headerBrush, headerRec);

            return recFrame;
        }
Example #5
0
        public Rectangle GetKanbanItemSize(Point startPoint, int recWidth, int headerHeight, int textMargin, KanbanItem item)
        {
            Image img =new Bitmap(1,1);
            using (var g = Graphics.FromImage(img))
            {
                float currentHeight = 0;
                var halfMargin = textMargin / 2;
                Rectangle headerRec = new Rectangle(new Point(startPoint.X, startPoint.Y), new Size(recWidth + 1, headerHeight));
                Font font = new Font("Segoe UI", 20, FontStyle.Regular);

                currentHeight += headerRec.Bottom + halfMargin;
                var formattedIdSize = g.MeasureString(item.FormattedId, font);
                var assignedToSize = g.MeasureString(item.AssignedTo, font);

                var descriptionSize = g.MeasureString(item.StoryDescription, font, headerRec.Width - 2 * textMargin);
                RectangleF recDescription = new RectangleF(new PointF(headerRec.Left + textMargin, currentHeight + textMargin), descriptionSize);

                currentHeight += formattedIdSize.Height + textMargin;
                currentHeight += assignedToSize.Height + textMargin;
                currentHeight += recDescription.Height + textMargin;

                if (item.IsBlocked)
                {
                    Image blockedIcon = Resources.blocked;
                    var blockedReasonSize = g.MeasureString(item.BlockedReason, font, headerRec.Width - 2 * textMargin - blockedIcon.Width - halfMargin);
                    SizeF blockedReasonBackgroundSize = new SizeF(headerRec.Width - 2 * textMargin, blockedReasonSize.Height);

                    currentHeight += blockedReasonBackgroundSize.Height +textMargin;
                }
                currentHeight += halfMargin;
                //currentBottom += halfMargin;
                //Frame, wire frame rectangle
                Rectangle recFrame = new Rectangle(startPoint, new Size(recWidth, (int)currentHeight));
                return recFrame;
            }
        }