 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
mvg
Anmeldungsdatum: 26.07.2009 Beiträge: 14
|
Verfasst am: 09.09.2009, 14:01 Titel: grafik drehen |
|
|
Hallo
Hat jemand ein winziges Beispiel wie ich mit DRAW oder sonst einem Befehl eine Grafik bzw. eine in einem Buffer gespeicherte Grafik drehen kann, Ich komm mit dem Befehl TAn nich klar
Danke im Vorraus, Michael |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
|
Nach oben |
|
 |
mvg
Anmeldungsdatum: 26.07.2009 Beiträge: 14
|
Verfasst am: 09.09.2009, 14:55 Titel: Grafik drehen |
|
|
Heißt das das der Draw-Befehl mit der Option TAn nicht in der aktuellen freebasic version implementiert ist?
Michael |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 09.09.2009, 15:07 Titel: |
|
|
Das weiss ich nicht, mit Draw hab ich mich nie wirklich auseinandergesetzt... aber zumindest kann man mit dieser rotozoom-funktion bestehende buffer drehen... Das hilft in den meisten fällen ja schon... |
|
Nach oben |
|
 |
mvg
Anmeldungsdatum: 26.07.2009 Beiträge: 14
|
Verfasst am: 09.09.2009, 15:16 Titel: Draw |
|
|
Genau das soll draw auch machen, man gibt mit n den Winkel an und das wars.
Michael |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.09.2009, 19:21 Titel: |
|
|
das kann draw. wenn die gewünschte option nicht dabei ist, musste halt selbst mit sin/cos arbeiten. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 565 Wohnort: Jüterbog
|
Verfasst am: 09.09.2009, 19:43 Titel: |
|
|
das TA Kommando bezieht sich auf die Grafikcursorbefehle
von DRAW und ist nicht dafür da ein Image zu drehen, glaub ich jedenfalls
Code: |
DIM Stern AS STRING
SCREEN 18
'TA-10 dreht die auf ihm folgenden Grafik-Befehle im String um 10 grd im Uhrzeigersinn
Stern = "TA-10 BF25 C14 NU20 NR20 ND20 NL20 C4 NE10 NF10 NG10 NH10 "
DRAW Stern
SLEEP
|
Mutton |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 10.09.2009, 10:33 Titel: |
|
|
Jepp, TA dient nur dazu, dass die folgenden Befehle gedreht werden, also ein R10 nicht einfach 10 nach rechts geht, sondern das ganze entsprechend gedreht.
Du kannst natürlich deine Grafik als String ohne TA speichern und dann mit TA diese Grafik drehen.
Code: | Stern = "BF25 C14 NU20 NR20 ND20 NL20 C4 NE10 NF10 NG10 NH10 "
DRAW "TA-10" & Stern |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
mvg
Anmeldungsdatum: 26.07.2009 Beiträge: 14
|
Verfasst am: 10.09.2009, 11:05 Titel: TA Befehl |
|
|
den TA befehl als ersten zu verwenden hatte ich noch nicht probiert. Ich hatte ihn so wie ich es in einem alten Quick-Basic Buch gesehen habe hinten angefügt und das funktioniert nicht. Werde ich aber gleich versuchen. Ein riesiges Dankeschön.
Michael |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 10.09.2009, 11:21 Titel: |
|
|
Aus eigener Erfahrung: Wenn du auch mit Füllen arbeiten möchtest, würde ich auf Drehung oder Skalierung verzichten; ist nicht immer exakt genug, um alle Lücken zu schließen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
mvg
Anmeldungsdatum: 26.07.2009 Beiträge: 14
|
Verfasst am: 10.09.2009, 15:14 Titel: Grafik drehen |
|
|
Also ich habs ausprobiert und beide Methoden gehen damit bewegen sich die Zeiger meiner Analoganzeigen mit Messwerten aus einer über serielle Leitung verbundenen Hardware mit Atmega 16. Zum Löschen des Zeigers hab ich etwas später im Programm den gleichen Zeiger nochmal mit Hintergrundfarbe gezeichnet. Das Beispiel wo dieses mit einem Buffer mit XOR Verknüpfung gemacht wurde läßt sich wohl nur mit PUT und nicht mit DRAW verwenden. Spielt aber keine große Rolle da es nur mehr code bedeutet.
Letzes fehlendes Element um mein Vorhaben zu realisieren ist es in einen gezeichneten Schalter mit der Maus zu fahren und mit einem Mausklick ein Bit in einer Variablen zu setzen. Das Senden und Empfangen der Variablen geht schon problemlos.
Nochmals vielen Dank für die Unterstüzung. Michael |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 19.09.2009, 23:13 Titel: |
|
|
Entweder hier im Forum oder bei den englischen Kollegen wurde mal die Routine Multiput vorgestellt. Die nimmt einen Bildpuffer von GET, und bringt ihn auf den Bildschirm, allerdings mit etlichen Parametern. Darunter Drehwinkel, Zoomfaktor, Spiegelung.
==> Forensuche.
Wenn der Code nicht mehr gefunden werden kann, poste ich ihn. Hab das ganze auf meiner Festplatte gespeichert, leider aber ohne Credits, weswegen ich den geneigten Progger zu eigenen Recherchen motivieren will
Have a nice day
Ciao
Dusky_Joe _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 23.09.2009, 15:04 Titel: |
|
|
Ha! Joshy war's!
Hab den oben angesprochenen Code bei mir auf der Festplatte nochmal angeschaut, und festgestellt, dass der gute damals schon so schlau war, seinen Code mit Credits zu versehen.
In dem Sinne also viel Spaß!
Code: | ' by D.J.Peters (Joshy)
' a put, scale, rotate hack for the new ImageHeader format.
'MultiPut [destination],[xmidpos],[ymidpos],source,[xScale],[yScale],[Mirror],[Flip],[Trans],[Custom],[Param]
' Small changes/additions by counting_pine (2007/04/27)
' Mirror and Flip parameters added by Cleber de Mattos Casali (2008/08/18)
#define UseRad 'if not then Rotate are in degrees
Sub MultiPut(Byval lpTarget As Any Ptr= 0, _
Byval xMidPos As Integer= 0, _
Byval yMidPos As Integer= 0, _
Byval lpSource As Any Ptr , _
Byval xScale As Single = 1, _
Byval yScale As Single = 1, _
Byval Rotate As Single = 0, _
Byval Mirror As Integer = 0, _
Byval Flipp As Integer = 0, _
Byval Trans As Integer= 0, _
Byval Custom As Function(Byval Src As Uinteger, Byval Dest As Uinteger, Byval Param As Any Ptr = 0) As Uinteger = 0, _
Byval Param As Any Ptr = 0)
If (screenptr=0) Or (lpSource=0) Then Exit Sub
If xScale < 0.001 Then xScale=0.001
If yScale < 0.001 Then yScale=0.001
Dim As Integer MustLock,MustRotate
If lpTarget= 0 Then MustLock =1
If Rotate <>0 Then MustRotate=1
Dim As Integer TargetWidth,TargetHeight,TargetBytes,TargetPitch
If MustLock Then
screeninfo _
TargetWidth , _
TargetHeight, _
TargetBytes ,,_
TargetPitch
TargetBytes Shr=3
lpTarget=screenptr
Else
TargetBytes = cptr(Uinteger Ptr,lpTarget)[1]
TargetWidth = cptr(Uinteger Ptr,lpTarget)[2]
TargetHeight = cptr(Uinteger Ptr,lpTarget)[3]
TargetPitch = cptr(Uinteger Ptr,lpTarget)[4]
lpTarget += 32
End If
If (TargetWidth<4) Or (TargetHeight<4) Then Exit Sub
Dim As Integer SourceWidth,SourceHeight,SourceBytes,SourcePitch
If cptr(Integer Ptr,lpSource)[0] = 7 Then
SourceBytes = cptr(Uinteger Ptr,lpSource)[1]
SourceWidth = cptr(Uinteger Ptr,lpSource)[2]
SourceHeight = cptr(Uinteger Ptr,lpSource)[3]
SourcePitch = cptr(Uinteger Ptr,lpSource)[4]
lpSource += 32
Else
SourceBytes = cptr(Ushort Ptr,lpSource)[0] And 7
SourceWidth = cptr(Ushort Ptr,lpSource)[0] Shr 3
SourceHeight = cptr(Ushort Ptr,lpSource)[1]
SourcePitch = SourceWidth * SourceBytes
lpSource += 4
End If
#if 0
? TargetWidth & "x" & TargetHeight & "x" & TargetBytes,TargetPitch
? SourceWidth & "x" & SourceHeight & "x" & SourceBytes,SourcePitch
? MustLock,Trans
Sleep:End
#endif
If (SourceWidth<2) Or (SourceHeight<2) Then Exit Sub
If (TargetBytes<>SourceBytes) Then Exit Sub
#define xs 0 'screen
#define ys 1
#define xt 2 'texture
#define yt 3
Dim As Single Points(3,3)
points(0,xs)=-SourceWidth/2 * xScale
points(1,xs)= SourceWidth/2 * xScale
points(2,xs)= points(1,xs)
points(3,xs)= points(0,xs)
points(0,ys)=-SourceHeight/2 * yScale
points(1,ys)= points(0,ys)
points(2,ys)= SourceHeight/2 * yScale
points(3,ys)= points(2,ys)
points(1,xt)= SourceWidth-1
points(2,xt)= points(1,xt)
points(2,yt)= SourceHeight-1
points(3,yt)= points(2,yt)
If Mirror Then Swap points(0,xt),points(1,xt) :Swap points(2,xt),points(3,xt)
If Flipp Then Swap points(0,yt),points(3,yt) :Swap points(2,yt),points(1,yt)
'if Mirror then swap points(1,xt),points(2,xt)
'if Flipp then swap points(2,yt),points(3,yt)
Dim As Uinteger i
Dim As Single x,y
If MustRotate Then
#ifndef UseRad
Rotate*=Atn(1)/45 'degree 2 rad
#endif
While Rotate< 0 :rotate+=8*Atn(1):Wend
While Rotate>=8*Atn(1):rotate-=8*Atn(1):Wend
For i=0 To 3
x=points(i,xs)*Cos(Rotate) - points(i,ys)*Sin(Rotate)
y=points(i,xs)*Sin(Rotate) + points(i,ys)*Cos(Rotate)
points(i,xs)=x:points(i,ys)=y
Next
End If
Dim As Integer yStart,yEnd,xStart,xEnd
yStart=100000:yEnd=-yStart:xStart=yStart:xEnd=yEnd
#define LI 0 'LeftIndex
#define RI 1 'RightIndex
#define IND 0 'Index
#define NIND 1 'NextIndex
Dim As Integer CNS(1,1) 'Counters
For i=0 To 3
points(i,xs)=Int(points(i,xs)+xMidPos)
points(i,ys)=Int(points(i,ys)+yMidPos)
If points(i,ys)<yStart Then yStart=points(i,ys):CNS(LI,IND)=i
If points(i,ys)>yEnd Then yEnd =points(i,ys)
If points(i,xs)<xStart Then xStart=points(i,xs)
If points(i,xs)>xEnd Then xEnd =points(i,xs)
Next
If yStart =yEnd Then Exit Sub
If yStart>=TargetHeight Then Exit Sub
If yEnd <0 Then Exit Sub
If xStart = xEnd Then Exit Sub
If xStart>=TargetWidth Then Exit Sub
If xEnd <0 Then Exit Sub
Dim As Ubyte Ptr t1,s1
Dim As Ushort Ptr t2,s2
Dim As Uinteger t2c, s2c
Dim As Uinteger Ptr t4,s4
#define ADD 0
#define CMP 1
#define SET 2
Dim As Integer ACS(1,2) 'add compare and set
ACS(LI,ADD)=-1:ACS(LI,CMP)=-1:ACS(LI,SET)=3
ACS(RI,ADD)= 1:ACS(RI,CMP)= 4:ACS(RI,SET)=0
#define EX 0
#define EU 1
#define EV 2
#define EXS 3
#define EUS 4
#define EVS 5
Dim As Single E(2,6),S(6),Length,uSlope,vSlope
Dim As Integer U,UV,UA,UN,V,VV,VA,VN
' share the same highest point
CNS(RI,IND)=CNS(LI,IND)
If MustLock Then screenlock
' loop from Top to Bottom
While yStart<yEnd
'Scan Left and Right sides together
For i=LI To RI
' bad to read but fast and short ;-)
If yStart=points(CNS(i,IND),ys) Then
CNS(i,NIND)=CNS(i,IND)+ACS(i,Add)
If CNS(i,NIND)=ACS(i,CMP) Then CNS(i,NIND)=ACS(i,SET)
While points(CNS(i,IND),ys) = points(CNS(i,NIND),ys)
CNS(i, IND)=CNS(i,NIND)
CNS(i,NIND)=CNS(i, IND)+ACS(i,Add)
If CNS(i,NIND)=ACS(i,CMP) Then CNS(i,NIND)=ACS(i,SET)
Wend
E(i,EX) = points(CNS(i, IND),xs)
E(i,EU) = points(CNS(i, IND),xt)
E(i,EV) = points(CNS(i, IND),yt)
Length = points(CNS(i,NIND),ys)
Length -= points(CNS(i, IND),ys)
If Length <> 0.0 Then
E(i,EXS) = points(CNS(i, NIND),xs)-E(i,EX):E(i,EXS)/=Length
E(i,EUS) = points(CNS(i, NIND),xt)-E(i,EU):E(i,EUS)/=Length
E(i,EVS) = points(CNS(i, NIND),yt)-E(i,EV):E(i,EVS)/=Length
End If
CNS(i,IND)=CNS(i,NIND)
End If
Next
If (yStart<0) Then Goto SkipScanLine
xStart=E(LI,EX)+0.5:If xStart>=TargetWidth Then Goto SkipScanLine
xEnd =E(RI,EX)-0.5:If xEnd < 0 Then Goto SkipScanLine
If (xStart=xEnd) Then Goto SkipScanLine
'if xEnd <xStart then goto SkipScanLine
Length=xEnd-xStart
uSlope=E(RI,EU)-E(LI,EU):uSlope/=Length
vSlope=E(RI,EV)-E(LI,EV):vSlope/=Length
If xstart<0 Then
Length=Abs(xStart)
U=Int(E(LI,EU)+uSlope*Length)
V=Int(E(LI,EV)+vSlope*Length)
xStart = 0
Else
U=Int(E(LI,EU)):V=Int(E(LI,EV))
End If
If xEnd>=TargetWidth Then xEnd=TargetWidth-1
UV=Int(uSlope):UA=(uSlope-UV)*100000:UN=0
VV=Int(vSlope):VA=(vSlope-VV)*100000:VN=0
xEnd-=xStart
Select Case TargetBytes
Case 1
t1=cptr(Ubyte Ptr,lpTarget)
t1+=yStart*TargetPitch+xStart:xStart=0
If Custom Then
While xStart<xEnd
s1=lpSource+V*SourcePitch+U
*t1=Custom(*s1,*t1,Param)
U+=UV:UN+=UA:If UN>=100000 Then U+=1:UN-=100000
V+=VV:VN+=VA:If VN>=100000 Then V+=1:VN-=100000
If u<0 Then u=0
If v<0 Then v=0
xStart+=1:t1+=1
Wend
Elseif Trans=0 Then
While xStart<xEnd
s1=lpSource+V*SourcePitch+U
*t1=*s1
U+=UV:UN+=UA:If UN>=100000 Then U+=1:UN-=100000
V+=VV:VN+=VA:If VN>=100000 Then V+=1:VN-=100000
If u<0 Then u=0
If v<0 Then v=0
xStart+=1:t1+=1
Wend
Else
While xStart<xEnd
s1=lpSource+V*SourcePitch+U
If *s1 Then *t1=*s1
U+=UV:UN+=UA:If UN>=100000 Then U+=1:UN-=100000
V+=VV:VN+=VA:If VN>=100000 Then V+=1:VN-=100000
If u<0 Then u=0
If v<0 Then v=0
xStart+=1:t1+=1
Wend
End If
Case 2
t2=cptr(Short Ptr,lpTarget)
t2+=yStart*(TargetPitch Shr 1)+xStart:xStart=0
If Custom Then
While xStart<xEnd
s2=cptr(Short Ptr,lpSource)+V*(SourcePitch Shr 1)+U
s2c=*s2
t2c=*t2
s2c=(s2c And &H001F) Shl 3 Or (s2c Shr 2 And &H000007) Or _
(s2c And &H07E0) Shl 5 Or (s2c Shr 1 And &H000300) Or _
(s2c And &HF800) Shl 8 Or (s2c Shl 3 And &H070000) Or &HFF000000
t2c=(t2c And &H001F) Shl 3 Or (s2c Shr 2 And &H000007) Or _
(t2c And &H07E0) Shl 5 Or (s2c Shr 1 And &H000300) Or _
(t2c And &HF800) Shl 8 Or (s2c Shl 3 And &H070000) Or &HFF000000
t2c=Custom(s2c,t2c,Param)
*t2=(t2c Shr 3 And &H001F) Or _
(t2c Shr 5 And &H07E0) Or _
(t2c Shr 8 And &HF800)
U+=UV:UN+=UA:If UN>=100000 Then U+=1:UN-=100000
V+=VV:VN+=VA:If VN>=100000 Then V+=1:VN-=100000
If u<0 Then u=0
If v<0 Then v=0
xStart+=1:t2+=1
Wend
Elseif Trans=0 Then
While xStart<xEnd
s2=cptr(Short Ptr,lpSource)+V*(SourcePitch Shr 1)+U
*t2=*s2
U+=UV:UN+=UA:If UN>=100000 Then U+=1:UN-=100000
V+=VV:VN+=VA:If VN>=100000 Then V+=1:VN-=100000
If u<0 Then u=0
If v<0 Then v=0
xStart+=1:t2+=1
Wend
Else
While xStart<xEnd
s2=cptr(Short Ptr,lpSource)+V*(SourcePitch Shr 1)+U
If *s2<>&HF81F Then *t2=*s2
U+=UV:UN+=UA:If UN>=100000 Then U+=1:UN-=100000
V+=VV:VN+=VA:If VN>=100000 Then V+=1:VN-=100000
If u<0 Then u=0
If v<0 Then v=0
xStart+=1:t2+=1
Wend
End If
Case 4
t4=cptr(Integer Ptr,lpTarget)+yStart*(TargetPitch Shr 2)+xStart:xStart=0
If Custom Then
While xStart<xEnd
s4=cptr(Integer Ptr,lpSource)+V*(SourcePitch Shr 2)+U
*t4=Custom(*s4, *t4, Param)
U+=UV:UN+=UA:If UN>=100000 Then U+=1:UN-=100000
V+=VV:VN+=VA:If VN>=100000 Then V+=1:VN-=100000
If u<0 Then u=0
If v<0 Then v=0
xStart+=1:t4+=1
Wend
Elseif Trans=0 Then
While xStart<xEnd
s4=cptr(Integer Ptr,lpSource)+V*(SourcePitch Shr 2)+U
*t4=*s4
U+=UV:UN+=UA:If UN>=100000 Then U+=1:UN-=100000
V+=VV:VN+=VA:If VN>=100000 Then V+=1:VN-=100000
If u<0 Then u=0
If v<0 Then v=0
xStart+=1:t4+=1
Wend
Else
While xStart<xEnd
's4=cptr(Integer Ptr,lpSource):s4+=V*(SourcePitch shr 2):s4+=U
s4=cptr(Integer Ptr,lpSource)+V*(SourcePitch Shr 2)+U
If (*s4 And &HFFFFFF)<>&HFF00FF Then *t4=*s4
U+=UV:UN+=UA:If UN>=100000 Then U+=1:UN-=100000
V+=VV:VN+=VA:If VN>=100000 Then V+=1:VN-=100000
If u<0 Then u=0
If v<0 Then v=0
xStart+=1:t4+=1
Wend
End If
End Select
SkipScanLine:
E(LI,EX)+=E(LI,EXS):E(LI,EU)+=E(LI,EUS):E(LI,EV)+=E(LI,EVS)
E(RI,EX)+=E(RI,EXS):E(RI,EU)+=E(RI,EUS):E(RI,EV)+=E(RI,EVS)
yStart+=1:If yStart=TargetHeight Then yStart=yEnd 'exit loop
Wend
If MustLock Then screenunlock
End Sub
Function Trans(Byval Src As Uinteger, Byval Dest As Uinteger, Byval Param As Any Ptr = 0) As Uinteger
If (Src And &HFFFFFF) = &HFF00FF Then Return Dest Else Return Src
End Function
'
' main
'
#define scr_w 320 'change it
#define scr_h 200
Dim As Any Ptr Sprite
Dim As Single xZoom,yZoom,Rotate
Dim As Integer x,y,b,counter
#define wh scr_w\2
#define hh scr_h\2
'screenres scr_w,scr_h,8
'screenres scr_w,scr_h,15
'screenres scr_w,scr_h,16
'screenres scr_w,scr_h,24
'screenres scr_w,scr_h,32,,0
screenres scr_w,scr_h,32
'create an sprite
screeninfo ,,b
If b=8 Then
Line (0,0)-(100,100),0,BF 'trans rectangle
Circle (50,50),50,14,,,,F
Circle (25,30),12,15,,,,F
Circle (75,30),12,15,,,,F
Circle (25,30), 7, 0,,,,F
Circle (75,30), 7, 0,,,,F
Circle (50,50),28, 0,1.57*2,1.57*4
Else
Line (0,0)-(100,100),rgb(255,0,255),BF 'trans rectangle
Circle (50,50),50,rgb(255,255, 0),,,,F
Circle (25,30),12,rgb(255,255,255),,,,F
Circle (75,30),12,rgb(255,255,255),,,,F
Circle (25,30), 7,rgb( 0, 0, 0),,,,F
Circle (75,30), 7,rgb( 0, 0, 0),,,,F
Circle (50,50),28,rgb( 0, 0, 0),1.57*2,1.57*4
End If
Sprite=ImageCreate(101,101)
Locate 12,2:? "press a key"
getkey
Get (0,0)-(100,100),Sprite
Cls
'rotate=3.14
rotate=0
While Len(Inkey)=0
Cls
xZoom=Cos(Rotate*2)*2+2.1
yZoom=Sin(Rotate*3)*2+2.1
MultiPut(,wh,hh,Sprite,xZoom,yZoom,Rotate,1,0,0, @trans) ',1=trans
Sleep 20
Rotate+=0.01
Wend
imagedestroy Sprite |
_________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 26.10.2010, 21:30 Titel: |
|
|
Drehen einer Grafik geht folgendermasen:
Du ermittelst von deinm Screen den Mittelpunkt der x und y Achse.
Anschliessend ermittelst du, bei was für einem Winkel sich alle möglichen Pixel befinden und dessen Radius zum Mittelpunkt der x und y Achse.
Da du jetzt den Radius aller möglichen Pixel zum Mittelpunkt der x und y Achse hast, als auch dessen Winkel, kannst du nun mit circle die Kreisbahn festlegen und dann den jeweiligen Pixel "mit dem Bogenmaß" anfangs und Endpunk, dann noch die Farbe des Pixel festlegen fertig
Zum Anfangs und Endpunkt "das ist ja dann der Winkel", wo der Punkt gesetzt wird.
Hier kannste addieren bzw. subtrahieren.
Also so hatte ich es gemacht
Edit: Hier ein Beispiel, wie Du vom Mittelpunkt aus, vom jeweiligen Pixel den Radius und Winkel bekommst http://andybos.an.funpic.de/Radius_Winkel/index.html |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|