本文整理汇总了PHP中imageftbbox函数的典型用法代码示例。如果您正苦于以下问题:PHP imageftbbox函数的具体用法?PHP imageftbbox怎么用?PHP imageftbbox使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了imageftbbox函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: text2etc
function text2etc($text, $CP, $mode = "png", $trans = 1)
{
global $TTF_LOCATION, $FONT_SIZE;
//$outputtext = implode('',file($f));
$outputtext = $text;
$outputtext = Conv2UTF8($outputtext, 1, $CP);
$outputtext = str_replace("\r\n", "\n", $outputtext);
$outputtext = str_replace("\r", "\n", $outputtext);
$outputtext = str_replace("\n", "\r\n", $outputtext);
$outputtext = str_replace("<br />", "\r\n", $outputtext);
$outputtext = str_replace(" ", " ", $outputtext);
$outputtext = unhtmlentities($outputtext);
if ($mode == "png") {
$dim = imageftbbox($FONT_SIZE, 0, $TTF_LOCATION, $outputtext, array("linespacing" => 1.0));
# $dim= imagettfbbox($FONT_SIZE, 0, $TTF_LOCATION, $outputtext);
$min_x = min($dim[0], $dim[2], $dim[4], $dim[6]);
$max_x = max($dim[0], $dim[2], $dim[4], $dim[6]);
$width = $max_x - $min_x + 1;
$min_y = min($dim[1], $dim[3], $dim[5], $dim[7]);
$max_y = max($dim[1], $dim[3], $dim[5], $dim[7]);
$height = $max_y - $min_y + 1;
$img = imagecreate($width + 1, $height + 1);
$white = ImageColorAllocate($img, 255, 255, 255);
if ($trans) {
$twhite = imagecolortransparent($img, $white);
}
$black = ImageColorAllocate($img, 0, 0, 0);
# ImageTTFText($img, $FONT_SIZE, 0, -$min_x+$dim[0],-$min_y, $black, $TTF_LOCATION, $outputtext);
ImageFTText($img, $FONT_SIZE, 0, -$min_x + $dim[0], -$min_y, $black, $TTF_LOCATION, $outputtext, array("linespacing" => 1.0));
Header("Content-type: image/png");
ImagePng($img);
ImageDestroy($img);
} else {
if ($mode == "pre") {
echo "<pre>\n{$outputtext}\n</pre>";
} else {
if ($mode == "text") {
Header("Content-type: text/plain");
echo utf8Encode($outputtext);
}
}
}
}
示例2: strtag
/**
*
* @copyright 2010-2012 izend.org
* @version 2
* @link http://www.izend.org
*/
function strtag($text)
{
$len = strlen($text);
$fontfile = ROOT_DIR . DIRECTORY_SEPARATOR . 'font.ttf';
$fontsize = 24.0;
$bbox = imageftbbox($fontsize, 0, $fontfile, $text);
$w = $bbox[2] + $len * 15;
$h = 40;
$img = @imagecreatetruecolor($w, $h) or die;
$bg = imagecolorallocate($img, 255, 255, 224);
$fg = imagecolorallocate($img, 64, 64, 64);
imagefill($img, 0, 0, $bg);
// print text unevenly
for ($x = 15, $i = 0; $i < $len; $i++) {
$y = rand($h / 2, $h / 2 + 15);
$r = rand(-45, 45);
imagettftext($img, $fontsize, $r, $x, $y, $fg, $fontfile, $text[$i]);
$x += rand(25, 35);
}
// blur with colored dots
for ($i = 0; $i < $w * $h / 2.0; $i++) {
$color = imagecolorallocate($img, rand(128, 255), rand(128, 255), rand(128, 255));
imagesetpixel($img, rand(0, $w - 1), rand(0, $h - 1), $color);
}
return $img;
}
示例3: CenteredText
/**
*
* @param <type> $string
* @param <type> $cl
* @param <type> $size
* @return img
*/
public function CenteredText($string, $size = 10)
{
$axes = imageftbbox($size, 0, $this->font, $string);
$x = $this->w / 2 - ($axes[2] - $axes[0]) / 2;
$y = $this->h / 2 - ($axes[7] - $axes[1]) / 2;
imagefttext($this->im, $size, 0, $x, $y, $this->color, $this->font, $string);
return $this;
}
示例4: wfPChart4mwtextboxSize
/**
* Determines the height and width of a specified string on screen
*
* @param $font String Name of font (with file extension) used
* @param $text String Text of which the size should be determined
* @param $angle String Angle for showing the text
* @param $size Int Text size for printing the text
* @return Array Array with two elements: first element is the width of the textbox, second is the height
*/
function wfPChart4mwtextboxSize($font, $text, $angle = 0, $size = 0)
{
global $wgPChart4mwFontPath;
// Determine the bounding box using the GD library
$bbox = imageftbbox($size, $angle, $wgPChart4mwFontPath . "/" . $font, $text);
// Compute the size
return array(max($bbox[0], $bbox[2], $bbox[4], $bbox[6]) - min($bbox[0], $bbox[2], $bbox[4], $bbox[6]), max($bbox[1], $bbox[3], $bbox[5], $bbox[7]) - min($bbox[1], $bbox[3], $bbox[5], $bbox[7]));
}
示例5: box
/**
* (non-PHPdoc)
* @see Imagine\Image\FontInterface::box()
*/
public function box($string, $angle = 0)
{
$angle = -1 * $angle;
$info = imageftbbox($this->size, $angle, $this->file, $string);
$xs = array($info[0], $info[2], $info[4], $info[6]);
$ys = array($info[1], $info[3], $info[5], $info[7]);
$width = abs(max($xs) - min($xs));
$height = abs(max($ys) - min($ys));
return new Box($width, $height);
}
示例6: get_legend_height
/**
* Determines an appropriate height for the legend
*
* @param $dataset Our dataset containing the values we need to check for sizes
* @param $font A reference to the font file used
* @param $fontsize The fontsize used
*
* @return The vertical height of the text, plus a small margin
*/
function get_legend_height($dataset, $font, $fontsize)
{
$description = $dataset->GetDataDescription();
$total_value = 0;
foreach ($description["Description"] as $key => $value) {
$position = imageftbbox($fontsize, 0, $font, $value);
$textheight = $position[1] - $position[7];
$total_value += abs($textheight);
}
return $total_value + 20;
}
示例7: box
/**
* {@inheritdoc}
*/
public function box($string, $angle = 0)
{
if (!function_exists('imageftbbox')) {
throw new RuntimeException('GD must have been compiled with `--with-freetype-dir` option to use the Font feature.');
}
$angle = -1 * $angle;
$info = imageftbbox($this->size, $angle, $this->file, $string);
$xs = array($info[0], $info[2], $info[4], $info[6]);
$ys = array($info[1], $info[3], $info[5], $info[7]);
$width = abs(max($xs) - min($xs));
$height = abs(max($ys) - min($ys));
return new Box($width, $height);
}
示例8: getBbox
/**
* Calculate text bbox using size, angle, font and value
*
* {@inheritdoc}
*/
function getBbox()
{
$bbox = imageftbbox($this->size, $this->angle, $this->font, $this->value);
$boxWidth = $bbox[4] - $bbox[0];
$boxHeight = $bbox[1] - $bbox[5];
$boxX = 0;
$boxY = 0;
$lines = explode("\n", $this->value);
if (count($lines) > 1) {
$boxY = -($bbox[1] / count($lines));
}
return array($boxX, $boxY, $boxWidth, $boxHeight);
}
示例9: create
/**
* Description: a creation of a cookie
* Example: $config = [
* 'path' => 'files/images/captcha',
* 'text' => 'Some text...',
* 'expiration' => 60,
* 'font' => 'app/fonts/simple.ttf',
* 'angle' => 0,
* 'width' => 300,
* 'height' => 50,
* 'fontSize' => 18,
* 'colors' => [
* 'text' => [255, 200, 168],
* 'background' => [255, 255, 255]
* ]
* ];
* Captcha::create($config);
* @param array|$config
* @return array
* (
* [path] => files/images/captcha/1438642230.5518.png
* [fullPath] => C:/OpenServer/domains/localhost/framework/files/images/captcha/1438642230.5518.png
* [name] => 1438642230.5518.png
* )
*/
public static function create(array $config)
{
$colors = ['text' => [0, 0, 0], 'background' => [255, 255, 255]];
$param = ['path' => 'files/images/captcha', 'text' => 'Some text', 'expiration' => '3600', 'font' => VENDIR . 'simple/fonts/simple.ttf', 'angle' => 0, 'width' => 300, 'height' => 50, 'fontSize' => 16, 'colors' => $colors];
//set the config
foreach ($config as $key => $value) {
$param[$key] = $config[$key];
}
//set the colors
foreach ($param['colors'] as $key => $value) {
$colors[$key] = $config['colors'][$key];
}
//set the colors array
$colors = $config['colors'];
//the removal of the old captcha images
$now = microtime(true);
if (file_exists('files/images/captcha/')) {
foreach (glob('files/images/captcha/*') as $file) {
$fileName = explode('.', basename($file));
$fileName = (int) $fileName[0];
if ($fileName + $param['expiration'] < $now) {
unlink($file);
}
}
}
//set the captcha name
$captchaName = $now . '.png';
//set the image path
$imgPath = ROOT . $config['path'];
$fullImgPath = str_replace(DIRECTORY_SEPARATOR, '/', $imgPath) . '/';
$fullImgPath = str_replace('//', '/', $fullImgPath);
$localPath = $config['path'] . '/';
$localPath = str_replace('//', '/', $localPath);
$imgTrueColor = imagecreatetruecolor($config['width'], $config['height']);
//set the text color
$textColor = imagecolorallocate($imgTrueColor, $colors['text'][0], $colors['text'][1], $colors['text'][2]);
//set the background color
$backgroundColor = imagecolorallocate($imgTrueColor, $colors['background'][0], $colors['background'][1], $colors['background'][2]);
imagefilledrectangle($imgTrueColor, 0, 0, $param['width'], $param['height'], $backgroundColor);
//set the font path
$fontPath = str_replace(DIRECTORY_SEPARATOR, '/', ROOT . $config['font']);
//create a text
$bbox = imageftbbox(18, 0, $param['font'], $param['text']);
$x = (imagesx($imgTrueColor) - $bbox[4]) / 2;
$y = (imagesy($imgTrueColor) - $bbox[5]) / 2;
imagettftext($imgTrueColor, $param['fontSize'], $param['angle'], $x, $y, $textColor, $fontPath, $param['text']);
//create a png image
imagepng($imgTrueColor, $fullImgPath . $captchaName);
$result = ['path' => $localPath . $captchaName, 'fullPath' => $fullImgPath . $captchaName, 'name' => $captchaName];
return $result;
}
示例10: apply
public function apply($resource)
{
// Find original dimensions:
$imageWidth = imagesx($resource->image);
$imageHeight = imagesy($resource->image);
$fontbox = imageftbbox($this->settings->size, 0, realpath($this->settings->font), $this->settings->text);
$width = $fontbox[4] - $fontbox[6];
$width += $this->settings->padding * 2;
$height = $fontbox[1] - $fontbox[7];
$height += $this->settings->padding * 2;
$image = imagecreatetruecolor($width, $height);
$bg = new Colour($this->settings->bg);
$fg = new Colour($this->settings->fg);
$bg = $bg->allocate($image);
$fg = $fg->allocate($image);
imagesavealpha($image, true);
imagesavealpha($resource->image, true);
imagefill($image, 0, 0, $bg);
imagefttext($image, $this->settings->size, 0, $this->settings->padding, $this->settings->size + $this->settings->padding, $fg, realpath($this->settings->font), $this->settings->text);
$margin = $this->settings->margin;
// Calculate X alignment:
if ($this->settings->xalign == 'left') {
$offsetX = $margin;
} else {
if ($this->settings->xalign == 'right') {
$offsetX = round(max($imageWidth, $width) - min($imageWidth, $width)) - $margin;
} else {
$offsetX = 0 - round((min($imageWidth, $width) - max($imageWidth, $width)) / 2);
}
}
// Invert X:
//if ($imageWidth < $width) {
// $offsetX = 0 - $offsetX;
//}
// Calculate Y alignment:
if ($this->settings->yalign == 'top') {
$offsetY = $margin;
} else {
if ($this->settings->yalign == 'bottom') {
$offsetY = round(max($imageHeight, $height) - min($imageHeight, $height)) - $margin;
} else {
$offsetY = 0 - round((min($imageHeight, $height) - max($imageHeight, $height)) / 2);
}
}
// Invert Y:
//if ($imageHeight < $height) {
// $offsetY = 0 - $offsetY;
//}
imagecopyresampled($resource->image, $image, $offsetX, $offsetY, 0, 0, $width, $height, $width, $height);
}
示例11: writeText
/**
* Writes text onto an image.
*
* @param WideImage_Image $image
* @param mixed $x smart coordinate
* @param mixed $y smart coordinate
* @param string $text
* @param int $angle Angle in degrees clockwise
*/
public function writeText($image, $x, $y, $text, $angle = 0)
{
if ($image->isTrueColor()) {
$image->alphaBlending(true);
}
$box = imageftbbox($this->size, $angle, $this->face, $text);
$obox = ['left' => min($box[0], $box[2], $box[4], $box[6]), 'top' => min($box[1], $box[3], $box[5], $box[7]), 'right' => max($box[0], $box[2], $box[4], $box[6]) - 1, 'bottom' => max($box[1], $box[3], $box[5], $box[7]) - 1];
$obox['width'] = abs($obox['left']) + abs($obox['right']);
$obox['height'] = abs($obox['top']) + abs($obox['bottom']);
$x = WideImage_Coordinate::fix($x, $image->getWidth(), $obox['width']);
$y = WideImage_Coordinate::fix($y, $image->getHeight(), $obox['height']);
$fixed_x = $x - $obox['left'];
$fixed_y = $y - $obox['top'];
imagettftext($image->getHandle(), $this->size, $angle, $fixed_x, $fixed_y, $this->color, $this->face, $text);
}
示例12: setResource
protected function setResource()
{
$ftbbox = imageftbbox($this->fontsize, 0, $this->fontfile, $this->text, array('linespacing' => $this->linespacing));
$bugfix = ceil($this->fontsize / 5);
$ftboxwidth = abs($ftbbox[0] - $ftbbox[2]) + $bugfix;
$ftboxheight = abs($ftbbox[1] - $ftbbox[7]);
$blockwidth = $ftboxwidth + $this->blockpadding[1] + $this->blockpadding[3];
$blockheight = $ftboxheight + $this->blockpadding[0] + $this->blockpadding[2];
$texttempx = $this->blockpadding[3];
$texttempy = $this->blockpadding[0] - $ftbbox[7] - 1;
$anglerad = deg2rad($this->angle);
$textradius = sqrt(pow(abs($texttempx - $blockwidth / 2), 2) + pow(abs($texttempy - $blockheight / 2), 2));
$blockradius = sqrt(pow($blockwidth, 2) + pow($blockheight, 2)) / 2;
$blockx[0] = cos(atan2($blockheight / 2, -$blockwidth / 2) - $anglerad) * $blockradius + $blockwidth / 2;
$blockx[1] = cos(atan2($blockheight / 2, $blockwidth / 2) - $anglerad) * $blockradius + $blockwidth / 2;
$blockx[2] = cos(atan2(-$blockheight / 2, $blockwidth / 2) - $anglerad) * $blockradius + $blockwidth / 2;
$blockx[3] = cos(atan2(-$blockheight / 2, -$blockwidth / 2) - $anglerad) * $blockradius + $blockwidth / 2;
$blocky[0] = sin(atan2($blockheight / 2, -$blockwidth / 2) - $anglerad) * $blockradius + $blockheight / 2;
$blocky[1] = sin(atan2($blockheight / 2, $blockwidth / 2) - $anglerad) * $blockradius + $blockheight / 2;
$blocky[2] = sin(atan2(-$blockheight / 2, $blockwidth / 2) - $anglerad) * $blockradius + $blockheight / 2;
$blocky[3] = sin(atan2(-$blockheight / 2, -$blockwidth / 2) - $anglerad) * $blockradius + $blockheight / 2;
$minblockx = min($blockx[0], $blockx[1], $blockx[2], $blockx[3]);
$minblocky = min($blocky[0], $blocky[1], $blocky[2], $blocky[3]);
$blockx[0] = (int) round($blockx[0] - $minblockx);
$blockx[1] = (int) round($blockx[1] - $minblockx);
$blockx[2] = (int) round($blockx[2] - $minblockx);
$blockx[3] = (int) round($blockx[3] - $minblockx);
$blocky[0] = (int) round($blocky[0] - $minblocky);
$blocky[1] = (int) round($blocky[1] - $minblocky);
$blocky[2] = (int) round($blocky[2] - $minblocky);
$blocky[3] = (int) round($blocky[3] - $minblocky);
$textx = (int) round(cos(atan2($texttempy - $blockheight / 2, $texttempx - $blockwidth / 2) - $anglerad) * $textradius + $blockwidth / 2 - $minblockx);
$texty = (int) round(sin(atan2($texttempy - $blockheight / 2, $texttempx - $blockwidth / 2) - $anglerad) * $textradius + $blockheight / 2 - $minblocky);
$this->width = max(abs($blockx[0] - $blockx[2]), abs($blockx[1] - $blockx[3]));
$this->height = max(abs($blocky[0] - $blocky[2]), abs($blocky[1] - $blocky[3]));
$this->resource = imagecreatetruecolor($this->width, $this->height);
$transparentcolor = imagecolorallocatealpha($this->resource, 255, 255, 255, 127);
imagefill($this->resource, 0, 0, $transparentcolor);
if (isset($this->blockcolor) === true) {
$blockcolor = imagecolorallocate($this->resource, $this->blockcolor['red'], $this->blockcolor['green'], $this->blockcolor['blue']);
if (function_exists('imageantialias')) {
imageantialias($this->resource, true);
}
imagefilledpolygon($this->resource, array($blockx[0], $blocky[0], $blockx[1], $blocky[1], $blockx[2], $blocky[2], $blockx[3], $blocky[3]), 4, $blockcolor);
}
$fontcolor = imagecolorallocate($this->resource, $this->fontcolor['red'], $this->fontcolor['green'], $this->fontcolor['blue']);
imagefttext($this->resource, $this->fontsize, $this->angle, $textx, $texty, $fontcolor, $this->fontfile, $this->text, array('linespacing' => $this->linespacing));
}
示例13: render
/**
* Outputs the Captcha image.
*
* @param boolean html output
* @return mixed
*/
public function render()
{
// Init Challenge;
$this->initChallenge();
// Creates $this->image
$this->createImage(Captcha::$config['background']);
// Add a random gradient
if (empty(Captcha::$config['background'])) {
$color1 = imagecolorallocate($this->image, mt_rand(0, 100), mt_rand(0, 100), mt_rand(0, 100));
$color2 = imagecolorallocate($this->image, mt_rand(0, 100), mt_rand(0, 100), mt_rand(0, 100));
$this->gradientImage($color1, $color2);
}
// Add a few random circles
for ($i = 0, $count = mt_rand(10, Captcha::$config['complexity'] * 3); $i < $count; $i++) {
$color = imagecolorallocatealpha($this->image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255), mt_rand(80, 120));
$size = mt_rand(5, Captcha::$config['height'] / 3);
imagefilledellipse($this->image, mt_rand(0, Captcha::$config['width']), mt_rand(0, Captcha::$config['height']), $size, $size, $color);
}
// Calculate character font-size and spacing
$default_size = min(Captcha::$config['width'], Captcha::$config['height'] * 2) / strlen($this->response);
$spacing = (int) (Captcha::$config['width'] * 0.9 / strlen($this->response));
// Background alphabetic character attributes
$color_limit = mt_rand(96, 160);
$chars = 'ABEFGJKLPQRTVY';
// Draw each Captcha character with varying attributes
for ($i = 0, $strlen = strlen($this->response); $i < $strlen; $i++) {
// Use different fonts if available
$font = Captcha::$config['fontpath'] . Captcha::$config['fonts'][array_rand(Captcha::$config['fonts'])];
$angle = mt_rand(-40, 20);
// Scale the character size on image height
$size = $default_size / 10 * mt_rand(8, 12);
$box = imageftbbox($size, $angle, $font, $this->response[$i]);
// Calculate character starting coordinates
$x = $spacing / 4 + $i * $spacing;
$y = Captcha::$config['height'] / 2 + ($box[2] - $box[5]) / 4;
// Draw captcha text character
// Allocate random color, size and rotation attributes to text
$color = imagecolorallocate($this->image, mt_rand(150, 255), mt_rand(200, 255), mt_rand(0, 255));
// Write text character to image
imagefttext($this->image, $size, $angle, $x, $y, $color, $font, $this->response[$i]);
// Draw "ghost" alphabetic character
$text_color = imagecolorallocatealpha($this->image, mt_rand($color_limit + 8, 255), mt_rand($color_limit + 8, 255), mt_rand($color_limit + 8, 255), mt_rand(70, 120));
$char = substr($chars, mt_rand(0, 14), 1);
imagettftext($this->image, $size * 2, mt_rand(-45, 45), $x - mt_rand(5, 10), $y + mt_rand(5, 10), $text_color, $font, $char);
}
// Output
return $this->renderImage();
}
示例14: strlogo
/**
*
* @copyright 2010-2011 izend.org
* @version 1
* @link http://www.izend.org
*/
function strlogo($name)
{
$waspfile = ROOT_DIR . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'wasp.png';
$fontfile = ROOT_DIR . DIRECTORY_SEPARATOR . 'font.ttf';
$fontsize = 24.0;
$bbox = imageftbbox($fontsize, 0, $fontfile, $name);
$w = $bbox[2] + 48 + 5;
$h = 40;
$wasp = @imagecreatefrompng($waspfile) or die;
$img = @imagecreatetruecolor($w, $h) or die;
$bg = imagecolorallocate($img, 255, 255, 255);
$fg = imagecolorallocate($img, 0x33, 0x33, 0x33);
imagecolortransparent($img, $bg);
imagefill($img, 0, 0, $bg);
imagettftext($img, $fontsize, 0, 0, 30, $fg, $fontfile, $name);
imagecopy($img, $wasp, $w - 48, 0, 0, 0, 48, 48);
return $img;
}
示例15: setAnnotation
function setAnnotation($Data, $DataDescription, $SerieName, $ValueName, $Caption, $R = 210, $G = 210, $B = 210)
{
/* Validate the Data and DataDescription array */
$this->validateDataDescription("setLabel", $DataDescription);
$this->validateData("setLabel", $Data);
$ShadowFactor = 100;
$C_Label = $this->AllocateColor($this->Picture, $R, $G, $B);
$C_Shadow = $this->AllocateColor($this->Picture, $R - $ShadowFactor, $G - $ShadowFactor, $B - $ShadowFactor);
$C_TextColor = $this->AllocateColor($this->Picture, 0, 0, 0);
$Cp = 0;
$Found = FALSE;
foreach ($Data as $Key => $Value) {
if ($Data[$Key][$DataDescription["Position"]] == $ValueName) {
$NumericalValue = $Data[$Key][$SerieName];
$Found = TRUE;
}
if (!$Found) {
$Cp++;
}
}
$XPos = $this->GArea_X1 + $this->GAreaXOffset + $this->DivisionWidth * $Cp + 2;
$YPos = $this->GArea_Y2 - ($NumericalValue - $this->VMin) * $this->DivisionRatio;
$Position = imageftbbox($this->FontSize, 0, $this->FontName, $Caption);
$TextHeight = $Position[3] - $Position[5];
$TextWidth = $Position[2] - $Position[0] + 2;
$TextOffset = floor($TextHeight / 2);
// Shadow
/*
$Poly = array($XPos+1,$YPos+1,$XPos + 9,$YPos - $TextOffset,$XPos + 8,$YPos + $TextOffset + 2);
imagefilledpolygon($this->Picture,$Poly,3,$C_Shadow);
$this->drawLine($XPos,$YPos+1,$XPos + 9,$YPos - $TextOffset - .2,$R-$ShadowFactor,$G-$ShadowFactor,$B-$ShadowFactor);
$this->drawLine($XPos,$YPos+1,$XPos + 9,$YPos + $TextOffset + 2.2,$R-$ShadowFactor,$G-$ShadowFactor,$B-$ShadowFactor);
$this->drawFilledRectangle($XPos + 9,$YPos - $TextOffset-.2,$XPos + 13 + $TextWidth,$YPos + $TextOffset + 2.2,$R-$ShadowFactor,$G-$ShadowFactor,$B-$ShadowFactor);
// Label background
$Poly = array($XPos,$YPos,$XPos + 8,$YPos - $TextOffset - 1,$XPos + 8,$YPos + $TextOffset + 1);
imagefilledpolygon($this->Picture,$Poly,3,$C_Label);
$this->drawLine($XPos-1,$YPos,$XPos + 8,$YPos - $TextOffset - 1.2,$R,$G,$B);
$this->drawLine($XPos-1,$YPos,$XPos + 8,$YPos + $TextOffset + 1.2,$R,$G,$B);
$this->drawFilledRectangle($XPos + 8,$YPos - $TextOffset - 1.2,$XPos + 12 + $TextWidth,$YPos + $TextOffset + 1.2,$R,$G,$B);
*/
$this->drawLine($XPos - 2, $YPos, $XPos - 2, $YPos - 50, 200, 200, 200);
imagettftext($this->Picture, $this->FontSize, 90, $XPos, $YPos - 50, $C_TextColor, $this->FontName, $Caption);
}