GD Trapezium?
Ik wil het volgende in GD gaan tekenen, maar ik weet niet hoe het werkt (beetje nieuw met GD).
Ik heb vier variabelen: Hoogte links, Hoogte rechts, Breedte Boven, Breedte onder.
Die vier variabelen wil ik visualiseren, zodat je een soort trapezium vorm krijgt.
Iemand een idee?
Hoe kan ik dat dan het beste doen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
#vier variabelen: Hoogte links, Hoogte rechts, Breedte Boven, Breedte onder.
#Trapezium.
$hoogtelinks = 150;
$hoogterechts = 150;
$breedteboven = 120;
$breedteonder = 200;
// set up array of points for polygon
$values = array(
24+(($breedteonder-$breedteboven)/2), 240-$hoogtelinks, // Point 1 (x, y)
24+$breedteboven+(($breedteonder-$breedteboven)/2), 240-$hoogterechts, // Point 2 (x, y)
24+$breedteonder, 240, // Point 3 (x, y)
24, 240 // Point 4 (x, y)
);
// create image
$image = imagecreatetruecolor(250, 250);
// allocate colors
$bg = imagecolorallocate($image, 200, 200, 200);
$blue = imagecolorallocate($image, 0, 0, 255);
// fill the background
imagefilledrectangle($image, 0, 0, 249, 249, $bg);
// draw a polygon
imagefilledpolygon($image, $values, 4, $blue);
// flush image
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
#vier variabelen: Hoogte links, Hoogte rechts, Breedte Boven, Breedte onder.
#Trapezium.
$hoogtelinks = 150;
$hoogterechts = 150;
$breedteboven = 120;
$breedteonder = 200;
// set up array of points for polygon
$values = array(
24+(($breedteonder-$breedteboven)/2), 240-$hoogtelinks, // Point 1 (x, y)
24+$breedteboven+(($breedteonder-$breedteboven)/2), 240-$hoogterechts, // Point 2 (x, y)
24+$breedteonder, 240, // Point 3 (x, y)
24, 240 // Point 4 (x, y)
);
// create image
$image = imagecreatetruecolor(250, 250);
// allocate colors
$bg = imagecolorallocate($image, 200, 200, 200);
$blue = imagecolorallocate($image, 0, 0, 255);
// fill the background
imagefilledrectangle($image, 0, 0, 249, 249, $bg);
// draw a polygon
imagefilledpolygon($image, $values, 4, $blue);
// flush image
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
Moet je zelf nog maar aanpassen e.d.
Dank, ik denk dat ik er zo wel uitkom!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
#vier variabelen: Hoogte links, Hoogte rechts, Breedte Boven, Breedte onder.
#Trapezium.
$hoogtelinks = $_GET['hl'];
$hoogterechts = $_GET['hr'];
$breedteboven = $_GET['bb'];
$breedteonder = $_GET['bo'];
// Het aanmaken van de afbeelding
$image = imagecreate(350, 350);
// Kleuren toekennen
$bg = imagecolorallocate($image, 255, 255, 204);
$blue = imagecolorallocate($image, 123, 0, 0);
// We gaan nu wat ingewikkelde berekeningen doen,
// om ervoor te zorgen dat het plaatje niet groter wordt dan 500 bij 500
// En dat de verhoudingen in verhouding blijven :P
$max = max($hoogtelinks, $hoogterechts, $breedteboven, $breedteonder);
$factor = floor($max/300);
if($factor >= 1)
{
$hoogtelinks = floor($hoogtelinks/$factor);
if($hoogtelinks == 0)
{
die("Verhoudingen zijn niet Oke!");
}
$hoogterechts = floor($hoogterechts/$factor);
if($hoogterechts == 0)
{
die("Verhoudingen zijn niet Oke!");
}
$breedteboven = floor($breedteboven/$factor);
if($breedteboven == 0)
{
die("Verhoudingen zijn niet Oke!");
}
$breedteonder = floor($breedteonder/$factor);
if($breedteonder == 0)
{
die("Verhoudingen zijn niet Oke!");
}
}
$p1x = ceil((350-$breedteboven)/2);
$p2x = ceil(($p1x+$breedteboven));
$p1y = ceil((350-$hoogtelinks));
$p2y = ceil((350-$hoogterechts));
$p3x = ceil((350-$breedteonder)/2);
$p3y = 345;
$p4x = floor(($p3x+$breedteonder));
$p4y = 345;
// Punten instellen
$values = array(
$p1x, $p1y, // Point 1 (x, y)
$p3x, $p3y, // Point 2 (x, y)
$p4x, $p4y, // Point 3 (x, y)
$p2x, $p2y // Point 4 (x, y)
);
// Achtergrond kleurtje
imagefilledrectangle($image, 0, 0, 350, 350, $bg);
// Trapeze achtig iets printen
imagefilledpolygon($image, $values, 4, $blue);
// Hupsakee, de browser verwacht wat
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
#vier variabelen: Hoogte links, Hoogte rechts, Breedte Boven, Breedte onder.
#Trapezium.
$hoogtelinks = $_GET['hl'];
$hoogterechts = $_GET['hr'];
$breedteboven = $_GET['bb'];
$breedteonder = $_GET['bo'];
// Het aanmaken van de afbeelding
$image = imagecreate(350, 350);
// Kleuren toekennen
$bg = imagecolorallocate($image, 255, 255, 204);
$blue = imagecolorallocate($image, 123, 0, 0);
// We gaan nu wat ingewikkelde berekeningen doen,
// om ervoor te zorgen dat het plaatje niet groter wordt dan 500 bij 500
// En dat de verhoudingen in verhouding blijven :P
$max = max($hoogtelinks, $hoogterechts, $breedteboven, $breedteonder);
$factor = floor($max/300);
if($factor >= 1)
{
$hoogtelinks = floor($hoogtelinks/$factor);
if($hoogtelinks == 0)
{
die("Verhoudingen zijn niet Oke!");
}
$hoogterechts = floor($hoogterechts/$factor);
if($hoogterechts == 0)
{
die("Verhoudingen zijn niet Oke!");
}
$breedteboven = floor($breedteboven/$factor);
if($breedteboven == 0)
{
die("Verhoudingen zijn niet Oke!");
}
$breedteonder = floor($breedteonder/$factor);
if($breedteonder == 0)
{
die("Verhoudingen zijn niet Oke!");
}
}
$p1x = ceil((350-$breedteboven)/2);
$p2x = ceil(($p1x+$breedteboven));
$p1y = ceil((350-$hoogtelinks));
$p2y = ceil((350-$hoogterechts));
$p3x = ceil((350-$breedteonder)/2);
$p3y = 345;
$p4x = floor(($p3x+$breedteonder));
$p4y = 345;
// Punten instellen
$values = array(
$p1x, $p1y, // Point 1 (x, y)
$p3x, $p3y, // Point 2 (x, y)
$p4x, $p4y, // Point 3 (x, y)
$p2x, $p2y // Point 4 (x, y)
);
// Achtergrond kleurtje
imagefilledrectangle($image, 0, 0, 350, 350, $bg);
// Trapeze achtig iets printen
imagefilledpolygon($image, $values, 4, $blue);
// Hupsakee, de browser verwacht wat
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>