Hallo zusammen,
ich will eine Healthanzeige für meine Enemies machen, und dachte mir ich mache mir ein Health Image also ein kleines Bild, das einen Farbverlauf von links nach rechts, von grün nach rot hat. Dann lasse ich vom health abhängig einen bestimmten Teil des Bildes anzeigen, doch es wird einfach resized.
Habt ihr eine Idee?
Also es wäre schon gut zu wissen, wie du das Bild überhaupt darstellst. Benutzt du dafür ein JLabel ?
Reden wir hier überhaupt noch von einer Graphischen Oberfläche oder zeichnest du alles direkt selbst ?
Ob man für einen Farbverlauf wirklich ein Bild verwenden sollte (und nicht einfach einen GradientPaint) weiß ich nicht (sofern der Farbverlauf im Bild nicht doch irgendwie "fancier" ist, als ein reiner Verlauf), aber mit Graphics (Java Platform SE 6) sollte man malen können, was man will und wohin man will...
Ja das stimmt, daran hatte ich auch gedacht, doch hat es mich interessiert ob es auch mit einem Bild möglich ist (;
Ich benutze drawImage() um das Bild zu zeichnen!
Die von mir oben velinkte Methode bietet die Möglichkiet, anzugeben, welcher ausschnitt des Bildes in welchen Berecih des Fensters gerendert werden soll. Natürlich kommt man mit g.drawImage(image,0,0,null) da nicht weit, aber mit den zusätzlichen Parametern kann man angeben, was man braucht.
Vielleicht könntest du auch einfach nur mit Hilfe der Clipping-Region deines Graphics Objektes innerhalb deiner Zeichenroutine die Anzeige des Bildes manipulieren....
Java:
g.clipRect(int x,int y,int width,int height);// int x und und int y = StartPunkt der Clipping Region// int width und int height sind die Höhe und die Breite deines Bildes
Wenn du jetzt jeweils die X-Koordinate entsprechend anpasst an den Gesundheitszustand, dann solltest du dein gewünschtes Ergebnis erzielen...
Also:
Spieler/Gegner hat 100% Energie, dann
Java:
g.clipRect((Gesamtbreite des Bildes/100)*100,0,100,20);// Vorausgesetzt dein Bild ist 100 pixel breit und 20 pixel hoch
Spieler/Gegner hat nur noch 75% Energie, dann
Java:
g.clipRect((Gesamtbreite des Bildes/100)*25,0,100,20);// Vorausgesetzt dein Bild ist 100 pixel breit und 20 pixel hoch
Spieler/Gegner hat nur noch 50% Energie, dann
Java:
g.clipRect((Gesamtbreite des Bildes/100)*50,0,100,20);// Vorausgesetzt dein Bild ist 100 pixel breit und 20 pixel hoch
Super danke es hat geklappt, musste zwar ein paar andere Berechnung benutzen, da meine healthbar 25 pixel lang ist aber von der Grundidee hat es geklappt!