PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : button erstellen



fons
17-10-2003, 08:39
hallo forum,
ich will eine button erstellen.
das problem ist, ich will eine vorlage einbauen, d.h. ein linker rand, rechter rand, und die mitte.


grundlage sind 3 bilder: button_links.png (http://www.kifons.de/button/button_links.png) button_mitte.png (http://http://www.kifons.de/button/button_mitte.png) button_rechts.png (http://http://www.kifons.de/button/button_rechts.png)

dabei soll die mitte so breit sein, wie der text ist,

also meine frage, wie kann ich in ein bild, das mit imagecreate() erstellt worden ist, eine vorhandene bilddatei einfügen?

oder gibts bessere lösungsansätze?

danke schonmal

Christian_2
17-10-2003, 08:46
Hi,

mach es doch einfach so, dass du eine dreispaltige tabelle machst.
Linke und rechte spalte kommen die abrundenen bilder rein.
Der mittleren Spalte sagst du sie soll als BG das mittlere bild nehmen.
und dann fügst du in die mittlere spalte noch das eigentlich bild ein :)

gruss

fons
17-10-2003, 08:57
die idee ist auch gut, aber irgendwie gefällt mir die lösung eines ganzen bildes besser.
jetzt hab ich noch was gefunden, mit imagecopy() kann man das kopieren, ich weiß nicht wieso ich das immer übersehen hab.

fons
17-10-2003, 10:15
so habs geschrieben: siehe www.kifons.de/button/
-> button.html



<?php
# bild erstellen
header("Content-type: image/png");

if($_GET['text'])$text = $_GET['text'];
else $text = "aufrufen mit button.php?text=deintext";
$schriftart = "4";

#schriftfarbe
$rot = "123";
$gruen = "50";
$blau = "80";

# bilder
$links = imagecreatefrompng("button_links.png");
$weite['links'] = imagesx($links);

$rechts = imagecreatefrompng("button_rechts.png");
$weite['rechts'] = imagesx($rechts);

$mitte = imagecreatefrompng("button_mitte.png");
$hoehe = imagesy($mitte);

$weite['schrift'] = imagefontwidth($schriftart)*strlen($text);
$weite['button'] = $weite[schrift]+$weite[links]+$weite[rechts];

$im = imagecreate($weite[button], $hoehe);
imageinterlace($im,1); #bildaufbau
#hintergrund
$bg=imagecolorresolve($im,255,255,255);
imagecolortransparent($im,$bg);
#schriftfarbe
$schriftfarbe = imagecolorallocate($im, $rot, $gruen, $blau);

# button zusammenfügen
imagecopy($im, $links, 0, 0, 0, 0, $weite[links], $hoehe);
imagecopy($im, $rechts, ($weite[button]-$weite[rechts]), 0, 0, 0, $weite[rechts], $hoehe);
for($x=0;$x<$weite[schrift];$x++) imagecopy($im, $mitte, ($x+$weite[links]), 0, 0, 0, 1, $hoehe);

#text
ImageString($im, $schriftart, $weite[links], (($hoehe-imagefontheight($schriftart))/2), $text, $schriftfarbe);

#ausgabe
imagepng($im);
?>



verbesserungsvorschläge?

axeljaeger
17-10-2003, 10:20
Ich würd eher den Button vom Browser mit CSS beschriften, sonst geht dein Server in die Knie. Das geht nur nicht, wenn du besondere Schrifteffekte verwenden willst.

fons
17-10-2003, 10:26
wie kann ich einen browser per css beschriften?

axeljaeger
17-10-2003, 10:39
Einen Browser schlecht, einen Button schon eher. Du macht eine Klasse Link, display: block, das er eine feste Größe hat und nimmst deine Buttongrafik als Hintergrund

fons
17-10-2003, 10:47
oh sorry mein fehler.

hast du vielleicht ein konkretes beispiel?

axeljaeger
17-10-2003, 15:33
Hier ein Beispiel:
http://sourceforge.net/
oder meinst du richtige Buttons? Da muss ich erstmal ein bißchen coden gehen.