Salve,
mi piacerebbe che qualche esperto mi aiutasse in questo dilemma
ho un file php che mi crea un immagine nell'esempio sotto un asterisco bianco ed uno rosso:
Il risultato di questo script è questoCodice PHP:<?php
include 'config.php';
session_start();
//*****************************************************************************
//Asterisco Bianco
//*****************************************************************************
for ($i = 0; $i <='11'; $i++)
{
$TxtLayer = "LAYER1";
$TmpX1 = '4';
$TmpY1 = '4';
$TmpX2 = $TmpX1 + ('5' * cos(pi()/6*$i));
$TmpY2 = $TmpY1 + ('5' * sin(pi()/6*$i));
$arryLinee[] = array($TmpX1, $TmpY1, $TmpX2, $TmpY2, $TxtLayer);
}
//*****************************************************************************
//Asterisco Rosso
//*****************************************************************************
for ($i = 0; $i <='11'; $i++)
{
$TxtLayer = "ASSE";
$TmpX1 = '6';
$TmpY1 = '6';
$TmpX2 = $TmpX1 + ('5' * cos(pi()/6*$i));
$TmpY2 = $TmpY1 + ('5' * sin(pi()/6*$i));
//$arryLinee[] = array($TmpX1, $TmpY1, $TmpX2, $TmpY2, $TxtLayer);
$arryLinee[] = array($TmpX2, $TmpY2, $TmpX1, $TmpY1, $TxtLayer);
}
//ECHO "<BR>";
//*****************************************************************************
//Calcolo dimensione e scala disegno
//*****************************************************************************
$minX = 0;
$minY = 0;
$MasX = 0;
$MasY = 0;
for ($i = 0; $i <= count($arryLinee)-1; $i++)
{
//$arryLinee[] = array($TmpX1, $TmpY1, $TmpX2, $TmpY2, $TxtLayer);
//Ricerca minimo
if ($arryLinee[$i][0] < $minX) $minX = $arryLinee[$i][0];
if ($arryLinee[$i][1] < $minY) $minY = $arryLinee[$i][1];
if ($arryLinee[$i][2] < $minX) $minX = $arryLinee[$i][2];
if ($arryLinee[$i][3] < $minY) $minY = $arryLinee[$i][3];
//Ricerca massimo
if ($arryLinee[$i][0] > $MasX) $MasX = $arryLinee[$i][0] * 1.25;
if ($arryLinee[$i][1] > $MasY) $MasY = $arryLinee[$i][1] * 1.25;
if ($arryLinee[$i][2] > $MasX) $MasX = $arryLinee[$i][2] * 1.25;
if ($arryLinee[$i][3] > $MasY) $MasY = $arryLinee[$i][3] * 1.25;
}
//Calcolo dimensione immagine e fattore di scala
if (($MasX - $minX) > ($MasY - $minY))
{
$DimMAX = $MasX - $minX;
$DimImg = 100;
$Scala = $DimImg / $DimMAX * 5.333;
}
else{
$DimMAX = ($MasY - $minY);
$DimImg = 140;
$Scala = $DimImg / $DimMAX * 3;
}
//*****************************************************************************
//Rapporto 16:9
//*****************************************************************************
$DimX = 5.333 * $DimImg;
$DimY = 3 * $DimImg;
//*****************************************************************************
//Creo immagine
//*****************************************************************************
$img = @imagecreatetruecolor($DimX, $DimY)
or die("Cannot Initialize new GD image stream");
//*****************************************************************************
//Predispongo i colori
//*****************************************************************************
$white = imagecolorallocate($img, 255, 255, 255);
$red = imagecolorallocate($img, 255, 0, 0);
$grey90 = imagecolorallocate($img, 25, 25, 25);
imagefill($img,0,0,$grey90); //Coloro lo sfondo immagine
//*****************************************************************************
//Disegno le linee
//*****************************************************************************
for ($i = 0; $i <= count($arryLinee)-1; $i++)
{
switch ($arryLinee[$i][4])
{
case "ASSE":
$TmpLayer = $red; break;
case "LAYER1":
$TmpLayer = $white; break;
}
//bool imageline (resource image, int x1, int y1, int x2, int y2, int color)
//bool imagedashedline (resource image, int x1, int y1, int x2, int y2, int color)
imageline($img, ($arryLinee[$i][0]*$Scala), $DimY-($arryLinee[$i][1]*$Scala),
($arryLinee[$i][2]*$Scala), $DimY-($arryLinee[$i][3]*$Scala), $TmpLayer);
}
//*****************************************************************************
// output image in the browser
//*****************************************************************************
header("Content-type: image/png");
imagepng($img);
//*****************************************************************************
// free memory
//*****************************************************************************
imagedestroy($img);
?>
ora se uslo il comando bool imagedashedline (resource image, int x1, int y1, int x2, int y2, int color) per le linee di colore rosso come il codice allegato
mi da come risultato questo :Codice PHP://*****************************************************************************
//Disegno le linee
//*****************************************************************************
for ($i = 0; $i <= count($arryLinee)-1; $i++)
{
switch ($arryLinee[$i][4])
{
case "ASSE":
$TmpLayer = $red; break;
case "LAYER1":
$TmpLayer = $white; break;
}
//bool imageline (resource image, int x1, int y1, int x2, int y2, int color)
//bool imagedashedline (resource image, int x1, int y1, int x2, int y2, int color)
if ($TmpLayer == $red)
{
imagedashedline($img, ($arryLinee[$i][0]*$Scala), $DimY-($arryLinee[$i][1]*$Scala),
($arryLinee[$i][2]*$Scala), $DimY-($arryLinee[$i][3]*$Scala), $TmpLayer);
}
else
{
imageline($img, ($arryLinee[$i][0]*$Scala), $DimY-($arryLinee[$i][1]*$Scala),
($arryLinee[$i][2]*$Scala), $DimY-($arryLinee[$i][3]*$Scala), $TmpLayer);
}
}
//*****************************************************************************
come vedete alcune righe rosse ci sono e sono tratteggiate altre invece mancano del tutto
Qualcuno mi può dare una mano
![]()

LinkBack URL
About LinkBacks



