Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dorobienie okna z wpisywaniem wartości
Forum PHP.pl > Forum > PHP
dslr
Witam
Bardzo proszę o pomoc w następującym temacie.
Poniżej wklejam list "Speedometru". W liście ImageLine ...... (tam gdzie jest wartość -300) można wpisywać różne wartości i wtedy strzałka na traczy się przesuwa o tą wartość.
Chodzi o to żeby dorobić pole tekstowe w które będzie się wpisywać wartości a strzałka się będzie przesuwać - tak by nie trzeba było tego robić w pliku edytowalnym za pomocą notatnika.
Nie potrafię sobie z tym poradzić - bardzo proszę o pomoc.

<?php
if (! $size > 0)
{
$size = 300;
}

$radius = floor($size / 2);

header("content-Type: image/gif");
header("refresh: 1");
$img = ImageCreate($size, $size);
$color_alpha = ImageColorAllocate($img, 254, 254, 254);
$color_white = ImageColorAllocate($img, 255, 255, 255);
$color_black = ImageColorAllocate($img, 0, 0, 0);
$color_gray = ImageColorAllocate($img, 192, 192, 192);
$color_red = ImageColorAllocate($img, 255, 0, 0);
$color_blue = ImageColorAllocate($img, 0, 0, 255);
ImageColorTransparent($img, $color_alpha);
ImageArc($img,$radius, $radius, $size, $size, 180, 360, $color_black);
ImageFill($img, $radius, $radius, $color_white);
$min = 15;
while($min++ < 44 ) {
if ($min %45 == 0)
$len = $radius /10;
elseif ($min%5 == 0)
$len = $radius / 10;
else
$len = $radius / 30;

$ang = (2 * M_PI * $min) / 60;
$x1 = sin($ang) * ($radius - $len) + $radius;
$y1 = cos($ang) * ($radius - $len) + $radius;
$x2 = (1 + sin($ang)) * $radius ;
$y2 = (1 + cos($ang)) * $radius;
ImageLine($img, $x1, $y1, $x2, $y2, $color_black);
}

$xm = intval(($min * M_PI/1 - M_PI/1));


ImageLine($img, $radius, $radius, $xm-300, $ym, $color_blue); // tu mamy w kazda strone po 360

stopni od srodka wiec jesli chcemy ustawic np polowe od 0 do 50 to ustawiamy - 180 jesli chcemy

polowe do setki to 180





imageline($img, $radius /222 , $radius, $radius * 16, $radius, $color_black);

ImageArc($img, $radius, $radius, $radius / 8, $radius / 8, 1, 360, $color_red);
ImageFillToBorder($img, $radius, $radius, $color_red, $color_red);

//MOJE DANE
$text = '0';
$font = 'arial.ttf';
$text2 = '100';
$text3 = '50';

imagettftext($img, $radius/6, $radius/180, $xm-130, $ym+160, $color_red, $font, $text);
imagettftext($img, $radius/6, $radius/180, $xm+100, $ym+160, $color_red, $font, $text2);
imagettftext($img, $radius/6, $radius/180, $xm-10, $ym+30, $color_red, $font, $text3);

ImagePNG($img);
ImageDestroy($img);
?>

Pacio
Musisz uzyc $_GET, zeby przekazac odpowiednia liczbe do skryptu, w tej linijce zmien:
  1. ImageLine($img, $radius, $radius, $xm-300, $ym, $color_blue);
na:
  1. ImageLine($img, $radius, $radius, $xm-$_GET['wartosc'], $ym, $color_blue);

zapisz skrypt jako np. tarcza.php i utworz plik index.php w ktorym musisz utworzyc formularz i obrazek z parametrem otrzymywanym z formularza:
  1. <img src="tarcza.php?wartosc=<?php echo $_POST['wartosc']; ?>" alt="" />
  2. <form action="" method="post">
  3. <input type="text" name="wartosc" />
  4. <input type="submit" value="Zmień wartość" />
  5. </form>


Teraz za kazdym razem jak wpiszesz jakas wartosc do okienka i zatwierdzisz formularz, strona sie odswiezy, pokaze sie obrazek z tarcza.
dslr
Bardzo dziękuję za pomoc smile.gif
Czyli musze mieć utworzone 2 pliki ?
Blame
Nie, formularz możesz umieścić w tym samym pliku co skrypt generujący tarczę.
dslr
Panowie działa - pieknie dziękuję.
Ale poproszę o jeszcze jedną pomoc smile.gif
Czy da się zrobić tak by to przeliczało jeszcze konty na konkretną wartość ?
Czyli wpisuje np. 40 - pokazuje wartość 40 itp ?

Bardzo proszę o tę informację smile.gif
Pacio
Powyzej modyfikowana linie z ImageLine zmien na nastepujacy kod:
  1. $kat = $_GET['wartosc'] * 1.8;
  2. $xLinii = $radius+$radius*sin(deg2rad( $kat - 90 ));
  3. $yLinii = $radius-$radius*cos(deg2rad( $kat - 90 ));
  4.  
  5. ImageLine($img, $radius, $radius, $xLinii, $yLinii, $color_blue);

Teraz jesli $_GET['wartosc'] bedzie rowne 50, wtedy na tarczy zostanie narysowana linia wskazujaca na 50, dla 25 bedzie 25 itd.
dslr
Pięknie dziękuję winksmiley.jpg
pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.