示例#1
0
 /**
  * Create the encoded string
  * @param Image $Object
  * @param string $Value
  * @param int $X
  * @param int $Y
  * @param string $Format
  */
 public function draw(Image $Object, $Value, $X, $Y, $Format = "")
 {
     $this->pChartObject = $Object;
     $R = isset($Format["R"]) ? $Format["R"] : 0;
     $G = isset($Format["G"]) ? $Format["G"] : 0;
     $B = isset($Format["B"]) ? $Format["B"] : 0;
     $Alpha = isset($Format["Alpha"]) ? $Format["Alpha"] : 100;
     $Height = isset($Format["Height"]) ? $Format["Height"] : 30;
     $Angle = isset($Format["Angle"]) ? $Format["Angle"] : 0;
     $ShowLegend = isset($Format["ShowLegend"]) ? $Format["ShowLegend"] : false;
     $LegendOffset = isset($Format["LegendOffset"]) ? $Format["LegendOffset"] : 5;
     $DrawArea = isset($Format["DrawArea"]) ? $Format["DrawArea"] : false;
     $AreaR = isset($Format["AreaR"]) ? $Format["AreaR"] : 255;
     $AreaG = isset($Format["AreaG"]) ? $Format["AreaG"] : 255;
     $AreaB = isset($Format["AreaB"]) ? $Format["AreaB"] : 255;
     $AreaBorderR = isset($Format["AreaBorderR"]) ? $Format["AreaBorderR"] : $AreaR;
     $AreaBorderG = isset($Format["AreaBorderG"]) ? $Format["AreaBorderG"] : $AreaG;
     $AreaBorderB = isset($Format["AreaBorderB"]) ? $Format["AreaBorderB"] : $AreaB;
     $TextString = $this->encode128($Value);
     if ($DrawArea) {
         $X1 = $X + cos(($Angle - 135) * PI / 180) * 10;
         $Y1 = $Y + sin(($Angle - 135) * PI / 180) * 10;
         $X2 = $X1 + cos($Angle * PI / 180) * (strlen($this->Result) + 20);
         $Y2 = $Y1 + sin($Angle * PI / 180) * (strlen($this->Result) + 20);
         if ($ShowLegend) {
             $X3 = $X2 + cos(($Angle + 90) * PI / 180) * ($Height + $LegendOffset + $this->pChartObject->FontSize + 10);
             $Y3 = $Y2 + sin(($Angle + 90) * PI / 180) * ($Height + $LegendOffset + $this->pChartObject->FontSize + 10);
         } else {
             $X3 = $X2 + cos(($Angle + 90) * PI / 180) * ($Height + 20);
             $Y3 = $Y2 + sin(($Angle + 90) * PI / 180) * ($Height + 20);
         }
         $X4 = $X3 + cos(($Angle + 180) * PI / 180) * (strlen($this->Result) + 20);
         $Y4 = $Y3 + sin(($Angle + 180) * PI / 180) * (strlen($this->Result) + 20);
         $Polygon = array($X1, $Y1, $X2, $Y2, $X3, $Y3, $X4, $Y4);
         $Settings = array("R" => $AreaR, "G" => $AreaG, "B" => $AreaB, "BorderR" => $AreaBorderR, "BorderG" => $AreaBorderG, "BorderB" => $AreaBorderB);
         $this->pChartObject->drawPolygon($Polygon, $Settings);
     }
     for ($i = 1; $i <= strlen($this->Result); $i++) {
         if ($this->mid($this->Result, $i, 1) == 1) {
             $X1 = $X + cos($Angle * PI / 180) * $i;
             $Y1 = $Y + sin($Angle * PI / 180) * $i;
             $X2 = $X1 + cos(($Angle + 90) * PI / 180) * $Height;
             $Y2 = $Y1 + sin(($Angle + 90) * PI / 180) * $Height;
             $Settings = array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha);
             $this->pChartObject->drawLine($X1, $Y1, $X2, $Y2, $Settings);
         }
     }
     if ($ShowLegend) {
         $X1 = $X + cos($Angle * PI / 180) * (strlen($this->Result) / 2);
         $Y1 = $Y + sin($Angle * PI / 180) * (strlen($this->Result) / 2);
         $LegendX = $X1 + cos(($Angle + 90) * PI / 180) * ($Height + $LegendOffset);
         $LegendY = $Y1 + sin(($Angle + 90) * PI / 180) * ($Height + $LegendOffset);
         $Settings = array("R" => $R, "G" => $G, "B" => $B, "Alpha" => $Alpha, "Angle" => -$Angle, "Align" => TEXT_ALIGN_TOPMIDDLE);
         $this->pChartObject->drawText($LegendX, $LegendY, $TextString, $Settings);
     }
 }