GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2009-Oct-28

Title: 2D Darstellung
Post by: WPShadow on 2009-Oct-28
Hi,

hätte eine Frage: gibt es einen Weg eine Graphik (Sprite) nicht zu verschmälern, sondern die Größe beizubehalten und einfach nur z.b. 60% des Bildes darzustellen? Ist etwas blöd erklärt, aber ich meine damit z.B. einen Balken von rot nach grün zeichnen und dann nur einen Teil davon aktiv darzustellen, den Teil, den man also nicht braucht, einfach wegzuschneiden, ohne die Graphik zu zoomen, o.ä.

Hat da jemand eine Idee?

Gruß

W.
Title: Re: 2D Darstellung
Post by: Schranz0r on 2009-Oct-28
Polyvector ;)
Title: Re: 2D Darstellung
Post by: WPShadow on 2009-Oct-28
Hab ich schon versucht, aber k.A. wo ich anfange...  :'(

UPDATE:

Normalerweise müßten die Texturkoordinaten so gerechnet werden:

     
     0.5,0
       |
0,0    |    1,0
   - - | - -
  |    |     |
  |    |     |
  |    |     |
   - - | - -
0,1    |    1,1
       |
     0.5,1


Habe ich das soweit richtig verstanden, oder rechne ich da jetzt falsch?
Title: Re: 2D Darstellung
Post by: Quentin on 2009-Oct-28
meintest du so etwas in der Art?

Code: (glbasic) [Select]
// sample graphic for progress bar
DRAWRECT 0, 0, 440, 30, RGB(0, 255, 0)
PRINT "progress bar for WPShadow ..............", 10, 5
GRABSPRITE 0, 0, 0, 440, 30
col = RGB(255, 255, 255)

// initialize
startx = 100
starty = 100
endy = 130
endx = 540
width = startx
delay = 10

timer = GETTIMERALL() + delay
GETSPRITESIZE 0, sx, sy

WHILE TRUE
STARTPOLY 0
POLYVECTOR startx, starty, 0, 0, col
POLYVECTOR startx, endy, 0, sy, col
POLYVECTOR width, endy, width-startx, sy, col
POLYVECTOR width, starty, width-startx, 0, col
  ENDPOLY
  IF width < endx
IF timer < GETTIMERALL()
INC width, 1
timer = GETTIMERALL() + delay
ENDIF
ELSE
    PRINT "Finito!", 300, endy + 10
  ENDIF
  SHOWSCREEN
WEND
Title: Re: 2D Darstellung
Post by: WPShadow on 2009-Oct-28
Genau das habe ich gemeint!  :good:

Super Beispiel! Danke!!! *freu*

PS.: So in der Art hatte ich mir das gedacht, war mir aber nicht sicher...  :whistle: