Linkki:http://cbkk.systec.fi/koodi.php?id=142
Värkkäsin koodin kanssa ja tein pyörivän tekstin.Elikkä tässä on functiot format_rotate_text,rotate_text.
rotate_text:
Kuvaus:
Tekee pyörivän tekstin.
Käyttö:
rotate_text(x,y,txt$="",speed=1)
x=Tekstin x sijaintiy=Tekstin y sijaintitxt$=Pyörivä teksti
speed=nopeus oletus on 1(hidas)
Tarvittavat määrittelyt:
Liitä nämä koodin alkuun:
Code: Select all
Type Text360Img
Field id 'numero, jolla tekstiin voidaan viitata
Field img 'kuva, johon teksti on piirretty oikeassa kulmassa
Field x '|koordinaatit, joihin kuvan keskipisteen tulee osua
Field y '|
End Type
Global luku
luku=0
Code: Select all
Function rotate_text(x,y,txt$="",speed=1)
//Päivitetään kääntyvyys
luku=luku+speed
angle=luku
//Itse teksti
If y=0 And txt="" And angle=0.0 Then 'tarkistetaan, syöttääkö käyttäjä jo luodun tekstin id:n vaiko kokonaan uuden tekstin
t.Text360Img = ConvertToType(x)
DrawImage t\img, t\x,t\y 'piirretään vanha teksti
Else
t.Text360Img = New(Text360Img) 'luodaan uusi teksti
w = TextWidth(txt)
h = TextHeight(txt)
img = MakeImage(w,h)
DrawToImage img 'teksti piirretään ensin kuvaan, joka...
Text 0,0, txt
DrawToScreen
RotateImage img, angle '...käännetään oikeaan kulmaan
t\id = ConvertToInteger(t)
t\img = img
t\x = x+Cos(angle)*ImageWidth(img)/2 '|lasketaan koordinaatit, joihin kuvan keskipisteen
t\y = y+Sin(angle)*ImageHeight(img)/2 '|tulee osua.
DrawImage img, t\x,t\y
EndIf
EndFunction //Lopetetaan functio
Code: Select all
//Type ja muuttuja määrittelyt
Type Text360Img
Field id 'numero, jolla tekstiin voidaan viitata
Field img 'kuva, johon teksti on piirretty oikeassa kulmassa
Field x '|koordinaatit, joihin kuvan keskipisteen tulee osua
Field y '|
End Type
Global luku
luku=0
//Esimerkkiohjelma
FrameLimit 15
big=LoadFont("arial black",40)
lit=LoadFont("arial black",25)
format_rotate_text()
Color 255,0,0
nopeus=0
Repeat
nopeus+1
SetFont big
rotate_text(ScreenWidth()/2,ScreenHeight()/2,"Testi1",nopeus)
SetFont lit
rotate_text(75,75,"Testi2",nopeus/3)
DrawScreen
Until nopeus=85
Function format_rotate_text(soft=1)
If soft=1 Then Smooth2D ON
If soft=0 Then Smooth2D OFF
EndFunction
Function rotate_text(x,y,txt$="",speed=1)
//Päivitetään kääntuvyys
luku=luku+speed
angle=luku
//Itse teksti
If y=0 And txt="" And angle=0.0 Then 'tarkistetaan, syöttääkö käyttäjä jo luodun tekstin id:n vaiko kokonaan uuden tekstin
t.Text360Img = ConvertToType(x)
DrawImage t\img, t\x,t\y 'piirretään vanha teksti
Else
t.Text360Img = New(Text360Img) 'luodaan uusi teksti
w = TextWidth(txt)
h = TextHeight(txt)
img = MakeImage(w,h)
DrawToImage img 'teksti piirretään ensin kuvaan, joka...
Text 0,0, txt
DrawToScreen
RotateImage img, angle '...käännetään oikeaan kulmaan
t\id = ConvertToInteger(t)
t\img = img
t\x = x+Cos(angle)*ImageWidth(img)/2 '|lasketaan koordinaatit, joihin kuvan keskipisteen
t\y = y+Sin(angle)*ImageHeight(img)/2 '|tulee osua.
DrawImage img, t\x,t\y
EndIf
EndFunction //Lopetetaan functio
Kuvaus:
Alustaa Pyöritettävät tekstit
Kannattaa käyttää muuten tekstistä tulee huonolaatuista
Käyttö:
format_rotate_text(soft=1)
soft=Pehmennetäänkö tekstiä jos 1 niin pehmennetään(oletus)(suositus) jos 0 ei pehmennetä
Functio:
Code: Select all
Function format_rotate_text(soft=1)
If soft=1 Then Smooth2D ON
If soft=0 Then Smooth2D OFF
EndFunction
katso rotate_text function esimerkki
Uutta versiota ollaan tekemässä.
Uusi versio on valmis.Ohjeet löytyvät koodista.
Code: Select all
Const MaxRotateTexts=10 //Maksimissaan pyöriviä tekstejä(huom yksi enemmän kuin vakio on).Muuta tarpeen mukaan.
Dim RotateTexts(360,MaxRotateTexts) //Taulukko muhin pyörivät tekstit tallennetaan.
Dim RotateTextsData(MaxRotateTexts,1) //Taulukko mihin tallenneetaan tiedot pyörivistä teksteistä.
//Tämä funktio luo pyörivän tekstin.Tekstin väriksi tulee nykyinen piirtoväri.
//HUOM BUGI!Jos tekstistä jää osa pois niin pane perään välilyöntejä.
//Parametrit:
//id=ID jolle teksti halutaan luoda.ID:n pitää olla nollan ja vakion MaxRotateText välillä(tai jompi kumpi).
//_text$=Teksti.Merkkijono.
//speed=Oletus nopeus.
//offset=Kohta mistä teksti lähtee pyörimään.Oletuksena 0.
//br,bg,bb=Tausta värin RGB komponentit(tai värivakio).Oletuksena on musta(0,0,0).
//mr,mg,mb=Maskivärin RGB komponentit(tai värivakio).Oletuksena on musta(0,0,0).
Function CreateRotateText(id,_text$,speed,offset=0,br=0,bg=0,bb=0,mr=0,mg=0,mb=0)
img=MakeImage(TextWidth(_text$),TextHeight(_text$))
DrawToImage img
oldr=getRGB(RED)
oldg=getRGB(GREEN)
oldb=getRGB(BLUE)
Color br,bg,bb
Box 0,0,TextWidth(_text$),TextHeight(_text$)
Color oldr,oldg,oldb
Text 0,0,_text$
DrawToScreen
MaskImage img,mr,mg,mb
HotSpot img,TextWidth(_text$)/2,TextHeight(_text$)/2
RotateTexts(0,id)=img
RotateTextsData(id,0)=speed
RotateTextsData(id,1)=offset
For i=1 To 360
RotateTexts(i,id)=CloneImage(img)
angle#=i
If angle#=90 Or 180 Or 270 Then angle#=angle#+0.1
RotateImage RotateTexts(i,id),angle#
MaskImage RotateTexts(i,id),mr,mg,mb
Next i
EndFunction
//Tämä funktio päivittää pyörivän tekstin(ja piirtää).
//Parametrit:
//id=Tekstin id.
//x,y=X ja Y koordinaatit.
//speed=Nopeus.Jos on 0 niin käytetään funktiolle annettua(oletuksena on).
Function UpdateRotateText(id,x,y,speed=0)
If speed=0 Then speed=RotateTextsData(id,0)
RotateTextsData(id,1)=Int(WrapAngle(RotateTextsData(id,1)+speed))
DrawImage RotateTexts(RotateTextsData(id,1),id),x,y
EndFunction
//Esimerkki
Print "Ladataan"
SetFont LoadFont("arial",26,ON)
Color 0,255,0
CreateRotateText(0,"Tämä teksti pyörii. ",3)
Color cbCyan
SetFont LoadFont("arial",16,ON)
CreateRotateText(1,"No kokeileppa saman tien hiiren rullaa.",1,0,0,0,255)
Repeat
UpdateRotateText(0,200,150)
UpdateRotateText(1,MouseX(),MouseY(),MouseZ())
DrawScreen
Forever