[Grafika] [WebTip] [Fotografování] [Galerie] [MujMac] [Printing]
  Redakce: info@builder.cz   Inzerce: reklama@grafika.cz
Diskuzní fóra
.Net (314)
ASP (745)
ActiveX (44)
Allegro (24)
Assembler (487)
C++ Builder (5852)
C/C++ (68)
Databáze (1780)
Delphi (5429)
DelphiX (476)
DirectX (147)
Java (2017)
JavaScript (1920)
OpenGL (24)
Php (12699)
PowerBuilder (1648)
Problémy a algoritmy (1502)
Programování v Linuxu (480)
Python (32)
Visual Basic (1494)
Visual C++ (1785)
Wap (60)
Web (2571)
Win32 (972)
Textová inzerce


Vybíráte si tiskárnu?

Se srovnávací tabulkou jednotlivých modelů Grafiky On-line získáte přehled...

Srovnávací tabulka


Služby Builder.cz
  • Bazar - koupím(20)
       - Koupím Delphi 5
       - Delphi 5 - personal/profesional
  • Bazar - prodám(41) Nový
       - Prodam knihu Myslime v jazyce Java 1. a 2. dil
       - Prodam 17'' Monitor
  • Hledám práci(54) Nový
       - Vývoj aplikací
       - Potrebujete naprogramovať software podľa požiadaviek?
  • Nabízíme práci(56) Nový
       - Progamátor C++
       - Programátor PB/Správce aplikačního frameworku
  • Projekty(22) Nový
       - Hledáme programátory pro vývoj 3D hry
       - Shanim programatory do tymu HER! Mate nekdo zajem?
  • Nejčtenější články!
    Okenní aplikace pod 20 kB ?!
    Učíme se Win API - 5.
    Allegro - Instalace a konfigurace (7. díl)
    Bezpečný Javascript
    RAM Disk
    Redakční systém: Fulltext - I.
    Učíme se Win API - 6.
    Jak vyzrát na kolize 2.díl - kolize v prostoru
    Fulltext - II
    Výstup grafů v PHP
    Učíme se Win API - 7.
    Nejnovější články!
    Tisk v Delphi 2. - grafika
    Visual Studio. NET z pohledu programátora v C++
    Vlastní výjimky
    Generování ohně
    Standardní algoritmy v C++ - dokončení
    Jak vyzrát na kolize 3.díl - Jak na to?
    Učíme se Win API - 8
    Tisk v Delphi 1. - obyčejný text
    Halda v C++
    Výstup grafů v PHP
    Výstup grafů v PHP
    Autor: Ivo Guderna
    Rubrika: PHP
    Publikováno: 21.02. 2002
      Tisk článku
    Poslat odkaz emailem
     

    Na svém webu http://guderna.oceany.cz/ jsem potřeboval graficky zobrazit počet návštěv. Proto jsem vytvořil třídu GudGraf.php, která toto usnadňuje. Výstup se provádí jako na virtuální plotr. Ve třídě jsou implementovány tyto metody:

    - konstruktor GudGraf($x,$y,$typ) : definice velikosti kreslící plochy
  • $x - šířka obrázku v pixlech
  • $y - výška obrázku v pixlech
  • $typ - formát obrázku: gif, jpg, png (string)

    - Scale($xmin,$ymin,$xmax,$ymax) : měřítko souřadnic
  • $xmin,$ymin - souřadnice levého spodního rohu
  • $xmax,$ymax - souřadnice pravého horního rohu

    - Move($x,$y) : přesun pisátka bez kreslení na novou pozici
  • $x,$y - souřadnice kam se přesune pisátko

    - Plot($x,$y) : spuštění pisátka a přesun na novou pozici
  • $x,$y - souřadnice kam se přesune pisátko

    - aMove($x,$y) : absolutní přesun pisátka bez kreslení na novou pozici, udává se v pixlech
  • $x,$y - souřadnice kam se přesune pisátko

    - aPlot($x,$y) : spuštění pisátka a přesun na novou absolutní pozici
  • $x,$y - souřadnice kam se přesune pisátko

    - PenColor($R,$G,$B) : barva pisátka v RGB
  • $x,$y - souřadnice kam se přesune pisátko

    - OutString($retez,$velikost) : výstup řetězce na aktuální pozici pisátka
  • $retez - vystupující znaky
  • $velikost - hodnota 1 - 5, udávající velikost písma

    - Paint() : ukončení kresby a zobrazení na strance HTML


    Modul testgud.php se vyvolá: <IMG src="testgud.php">

    <?
    include "GudGraf.php"; 
    $xmax=300; // velikost obrazku: 300x200 ( sirka x vyska )
    $ymax=200;
    
    // zvoleni grafickeho formatu podle nainstalovane knihovny v PHP
    if (ImageTypes() & IMG_PNG) 
    	$grafika=new GudGraf($xmax,$ymax,"png");
    else
    {
    	if (ImageTypes() & IMG_JPG) 
    		$grafika=new GudGraf($xmax,$ymax,"jpg");
    	else
    	{
    		if (ImageTypes() & IMG_GIF) 
    			$grafika=new GudGraf($xmax,$ymax,"gif");
    	}
    }
    $grafika->Scale(0,0,10,10); // urceni souradnic
    $grafika->PenColor(255,0,0); // cervene pisatko
    
    $grafika->Move(0,0);	// obdelnik 1
    $grafika->Plot(0,5);
    $grafika->Plot(5,5);
    $grafika->Plot(5,0);
    $grafika->Plot(0,0);
    
    $grafika->Move(5,5);	// obdelnik 2
    $grafika->Plot(5,10);
    $grafika->Plot(10,10);
    $grafika->Plot(10,5);
    $grafika->Plot(5,5);
    
    $grafika->Move(2,2.5); // popis
    $grafika->PenColor(0,0,200);
    $grafika->OutString("obdélník 1",2);
    
    $grafika->Move(7,7.5);
    $grafika->OutString("obdélník 2",2);
    
    // Vytvoreni barevnych sloupecku vlevo nahore
    imagefilledrectangle($grafika->im,10,10,20,30,
      ImageColorAllocate($grafika->im,255,0,0));
    imagefilledrectangle($grafika->im,20,10,30,30, 
      ImageColorAllocate($grafika->im,0,255,0));
    imagefilledrectangle($grafika->im,30,10,40,30, 
      ImageColorAllocate($grafika->im,0,0,255));
    
    $grafika->Paint();
    ?>
    

    Modul testsin.php se vyvolá: <IMG src="testsin.php">

    <?
    include "GudGraf.php"; 
    $xmax=300;
    $ymax=200;
    if (ImageTypes() & IMG_PNG) 
    	$grafika=new GudGraf($xmax,$ymax,"png");
    else
    {
    	if (ImageTypes() & IMG_JPG) 
    		$grafika=new GudGraf($xmax,$ymax,"jpg");
    	else
    	{
    	  if (ImageTypes() & IMG_GIF) 
    		$grafika=new GudGraf($xmax,$ymax,"gif");
    	}
    }
    $grafika->Scale(0,-1.1,6.28,1.1);
    $grafika->PenColor(0,0,0);
    $grafika->Move(6.3,0);
    $grafika->Plot(0,0);
    $grafika->PenColor(255,0,0);
    for ($i=0;$i<6.3;$i=$i+0.1) $grafika->Plot($i,sin($i));
    $grafika->aMove(40,50);
    $grafika->PenColor(0,0,200);
    $grafika->OutString("Funkce: y = sin(x)",2);
    
    $grafika->Paint();
    ?>

    Třída GudGraf.php

    <?
    class GudGraf{
    var $locx, $locy, $im, $loctyp,$xmin,$ymin,$xmax,$ymax,$kx,$ky,
     $lastx, $lasty, $R, $G, $B, $posunx, $posuny;
    function GudGraf($x,$y,$typ)
    {
    	$this->locx=$x;
    	$this->locy=$y;
    	$this->loctyp=$typ;
    	switch (StrToUpper($this->loctyp)) {
    	case "GIF":
    		header("Content-type: image/gif");
    		break;
    	case "JPG":
    		header("Content-type: image/jpeg");
    		break;
    	case "PNG":
    		header("Content-type: image/png");
    		break;
    	default:
    	}
    	$this->im = imagecreate($x,$y);	
    	imagefill($this->im, 0, $y-1,
              ImageColorAllocate ($this->im, 255,255,255));
    	$this->lastx=0;
    	$this->lasty=5;
    	$this->aPlot(0,$y);
    	$this->aPlot($x-5,$y);
    	$this->aPlot($x-5,5);
    	$this->aPlot(0,5);
    
    	$this->aMove(1,6);
    	$this->aPlot(1,$y-1);
    	$this->aPlot($x-6,$y-1);
    	$this->aPlot($x-6,6);
    	$this->aPlot(1,6);
    	imagerectangle($this->im, 5, $y-1,$x-1, $y-4, 
               ImageColorAllocate ($this->im, 170,170,170));
    	imagerectangle($this->im, 6, $y-2,$x-2, $y-3, 
               ImageColorAllocate ($this->im, 170,170,170));
    	ImageRectangle($this->im, $x-4, $y-1,$x-1, 5, 
               ImageColorAllocate ($this->im, 170,170,170));
    	ImageRectangle($this->im, $x-3, $y-2,$x-2, 6, 
               ImageColorAllocate ($this->im, 170,170,170));
    	$this->posunx=3;
    	$this->posuny=8;
    }
    
    function Scale($xmin,$ymin,$xmax,$ymax)
    {
    	$this->xmin=$xmin;
    	$this->ymin=$ymin;
    	$this->xmax=$xmax;
    	$this->ymax=$ymax;
    	$this->kx =
              ($this->locx-($this->posunx+$this->posuny)) / ($xmax - $xmin);
    	$this->ky = 
              ($this->locy-($this->posunx+$this->posuny)) / ($ymax - $ymin);
    	$this->lastx=(-$this->xmin)*$this->kx;
    	$this->lasty=(-$this->ymin)*$this->ky;
    }
    
    function Move($x,$y)
    {
    	$this->lastx=$this->posunx+($x-$this->xmin)*$this->kx;
    	$this->lasty=$this->posuny+($y-$this->ymin)*$this->ky;
    }
    
    function aMove($x,$y)
    {
    	$this->lastx=$x;
    	$this->lasty=$y;
    }
    
    function Plot($x,$y)
    {   
    	$xx=$this->posunx+($x-$this->xmin)*$this->kx;
    	$yy=$this->posuny+($y-$this->ymin)*$this->ky;
    	imageline($this->im,$this->lastx,$this->locy-$this->lasty,
             $xx,$this->locy-$yy, ImageColorAllocate ($this->im, $this->R, 
             $this->G, $this->B));
    	$this->lastx=$xx;
    	$this->lasty=$yy;
    }
    
    function aPlot($x,$y)
    {
    	imageline($this->im,$this->lastx,$this->locy-$this->lasty,
              $x,$this->locy-$y, ImageColorAllocate($this->im, $this->R,
              $this->G, $this->B));
    	$this->lastx=$x;
    	$this->lasty=$y;
    }
    
    function DejRozmer(&$x,&$y)
    {
    	$x=$this->locx;
    	$y=$this->locy;
    }
    
    function PenColor($R,$G,$B)
    {
    	$this->R=$R;
    	$this->G=$G;
    	$this->B=$B;
    }
    
    function OutString($retez,$velikost)
    {
    	ImageString($this->im,$velikost,$this->lastx,$this->locy-$this->
             lasty-imagefontheight($velikost), $retez,ImageColorAllocate($this->im, 
             $this->R, $this->G, $this->B));
    }
    
    function Paint()
    {
    	ImageString($this->im,1,$this->locx-130,$this->locy-15,
              "http://guderna.oceany.cz",ImageColorAllocate($this->im,100,150,250));
    	switch (StrToUpper($this->loctyp)) {
    	case "GIF":
    		imagegif($this->im);
    		break;
    	case "JPG":
    		imagejpeg($this->im);
    		break;
    	case "PNG":
    		imagepng($this->im);
    		break;
    	default:
    	}
    	ImageDestroy($this->im);
    }
    }?>

    Download skriptů a ukázek

    Více informací na http://guderna.oceany.cz/



    Hodnocení článku
    1 | 2 | 3 | 4 | 5
    Aktuální známka: 1.13
    (Počet známek: 24)

    Komentáře k článku
    Art 22.02.9:49 Autor - stranky
    Jan Podhajsky 22.02.11:38 RE: Autor - stranky
    František Augusztin 21.02.9:47 A co JPGraph
    Stanislav Hostomský 21.02.9:08 PHPlot
         






  • mailto:%20info@builder.cz
    Vydává Grafika Publishing, s.r.o.
    Copyright (c) 1997-2002 Všechna práva vyhrazena