/*
  * Секция Скалиране
  * тук има 2 рекурсивни метода, защото скалирането на групи се свежда до скалиране(което се извършва спрямо
  * центъра на координатната система и след това транслиране, за да противодейства на възникналите промени.
  * Методът предефинира предщественика си с цел подържане на скалиране на групи.
  */
 protected override void Action(PointF point, int type, RectangleF initialBounds, Shape item, PointF iniLocation)
 {
     //ако елемента не е група ползва метода на предшественика си
     if (item.isGroup != true)
     {
         base.Action(point, type, initialBounds, item, iniLocation);
     }
     else
     {
         // ако е група първо скалира всички поелемти на групата
         RecursiveScale(point, type, initialBounds, item, iniLocation);
         // след това един по един ги транслира
         RecursiveScaleTranslate(type, initialBounds, item.ReturnBounds(), item);
     }
 }
 /*функцията се извиква от MatchType и извиква ScaleItem и TranslateScaledItem*/
 protected virtual void Action(PointF point, int type, RectangleF initialBounds, Shape item, PointF iniLocation)
 {
     this.ScaleItem(point, type, initialBounds, item, iniLocation);
     this.TranslateScaledItem(type, initialBounds, item.ReturnBounds(), item);//tuka 6te imam qdove
 }