xin chào mọi người, đi thẳng vào vấn đề cần hỏi là hiện tại mình có 1 file text dang có như sau:

a = b;
P_Bat_Ref_Pu += stChargeDischargeControl.Del_P_Chrg_NoBuy_Pu;

if(a > 10)
{
a = 10;
}
else
{
a = calculation();
}

chương trình của mình viết là khi insert files text vào thì nó sẽ từ đó nhận diện ra các dòng và vẽ ra các khối tương ứng, nhưng hiện tại thì mình đang bị overlapping hình nếu 2 dòng có nội dung giống nhau (2 dòng mình bôi đỏ ở trên) như hình ảnh dưới đây
Click vào hình ảnh để lấy hình ảnh lớn

Tên:		1.JPG
Lần xem:	2
Size:		48.7 KB
ID:		73321
mình muốn nó cứ theo thứ tự trong text thì các dòng tiếp theo sẽ đc vẽ vào các khối tiếp theo ở cầu mũi tên của hình vừa đc vẽ xong nhưng bí quá không nghĩ ra được cách nào
có ai đó có thể giúp mình vấn đề này với ạ
xin cảm ơn rất nhiều ạ

Visual C# Code:
  1. string[] lines = textBox2.Lines;
  2.             for (int i = 0; i < lines.Length; i++)
  3.             {
  4.                 drawStart();
  5.                 if (!lines[i].Contains("{") || !lines[i].Contains("}"))
  6.                 {
  7.                     drawRect();
  8.                     //drawDiamond();
  9.                     //drawRect2(p1, p4, s5);
  10.                     //drawRectLine(p4, p3);
  11.                 }
  12.                 //drawEnd(p1);
  13.             }
  14.             drawArrow(p2, p4, p3, p16, p14, p15, p17, p18, p19, pMidRect2, pMidRectLine, p30);
  15.  
  16. private void drawStart()
  17.         {
  18.             var graphics = Graphics.FromImage(img);
  19.             string circleString = "Start";
  20.             Font font = new Font("TimesNewRoman", 20, System.Drawing.FontStyle.Regular, GraphicsUnit.Pixel);
  21.             TextFormatFlags flags = TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak;
  22.             Size s = TextRenderer.MeasureText(circleString, font);
  23.  
  24.             cir1.Location = new Point((measurementResult.Width / 2) - (s.Width / 2), 0);
  25.             cir1.Width = s.Width;
  26.             cir1.Height = s.Height;
  27.  
  28.             graphics.DrawEllipse(Pens.Black, Rectangle.Round(cir1));
  29.             TextRenderer.DrawText(graphics, circleString, font, cir1, Color.Black, flags);
  30.  
  31.             int midCir = (cir1.Left + cir1.Right) / 2;
  32.             //int midRec = (rect1.Left + rect1.Right) / 2;
  33.             p14 = new Point(midCir, cir1.Bottom);
  34.             p15 = new Point(midCir, p14.Y + 25);
  35.             //p16 = new Point(midRec, rect1.Bottom);
  36.         }
  37. public void drawRect()
  38.         {
  39.             string[] lines = textBox2.Lines;
  40.             var graphics = Graphics.FromImage(img);
  41.            
  42.             for (int i = 0; i < lines.Length; i++)
  43.             {
  44.                 if (lines[i].Contains(";") && !lines[i].Contains("("))
  45.                 {
  46.                     Font font = new Font("TimesNewRoman", 20, System.Drawing.FontStyle.Regular, GraphicsUnit.Pixel);
  47.                     rectangleString = lines[i].Remove(lines[i].LastIndexOf(";"));
  48.                     Size s1 = TextRenderer.MeasureText(rectangleString, font);
  49.                     rect1.Location = new Point(p14.X - (s1.Width / 2), p15.Y);
  50.                     rect1.Width = s1.Width;
  51.                     rect1.Height = s1.Height;
  52.                     graphics.DrawRectangle(Pens.Black, Rectangle.Round(rect1));
  53.                     TextRenderer.DrawText(graphics, rectangleString, font, rect1, Color.Black);
  54.                     int midRec = (rect1.Left + rect1.Right) / 2;
  55.                     p16 = new Point(midRec, rect1.Bottom);
  56.                     p30 = new Point(midRec, rect1.Bottom + 25);
  57.                    
  58.                 }
  59.             }
  60.         }