21/11/20 18:30
Basso Livello
Se ci fosse la Silicon Valley in Italia, sarebbe capitanata da Barbara D'Urso.
#Region Module Attributes #ApplicationLabel: MiaPrimaApk #VersionCode: 1 #VersionName: #SupportedOrientations: unspecified #CanInstallToExternalStorage: False #End Region
#Region Module Attributes #ApplicationLabel: Linee by carlo ©2019 #VersionCode: 1 #VersionName: #SupportedOrientations: unspecified #CanInstallToExternalStorage: False #End Region #Region Activity Attributes #FullScreen: True #IncludeTitle: false #End Region Sub Process_Globals Dim Timer1 As Timer End Sub Sub Globals Dim CanvasGraph As Canvas Dim ImageGraph As ImageView Dim lblTitle As Label Dim Posizione As Float Dim Cont(7, 3) As Int Dim RigaFin As Float Dim RigaFinInc As Float Dim ColFin As Float Dim ColFinInc As Float Dim RigaIn As Float Dim RigaInInc As Float Dim ColIn As Float Dim ColInInc As Float Dim memo(6, 100) As Float Dim rosso As Short = 255 Dim verde As Short= 255 Dim blu As Short= 255 Dim RigaFin2 As Float Dim RigaFinInc2 As Float Dim ColFin2 As Float Dim ColFinInc2 As Float Dim RigaIn2 As Float Dim RigaInInc2 As Float Dim ColIn2 As Float Dim ColInInc2 As Float Dim memo2(6, 100) As Float Dim RigaMax As Float Dim ColMax As Float Dim RigheVisibili As Float Dim RigaAttuale As Float Dim riscrivi As Float Dim i As Short = 0 Dim n As Short = 0 End Sub Sub Activity_Create(FirstTime As Boolean) ImageGraph.Initialize("ImageGraph") Activity.AddView(ImageGraph,0,0,100%x,100%y) ' sequenza di operazioni sui colori Cont(0,0)=-1 Cont(0,1)= 0 Cont(0,2)= 0 Cont(1,0)= 1 Cont(1,1)=-1 Cont(1,2)= 0 Cont(2,0)= 0 Cont(2,1)= 1 Cont(2,2)=-1 Cont(3,0)=-1 Cont(3,1)=-1 Cont(3,2)= 1 Cont(4,0)= 1 Cont(4,1)= 0 Cont(4,2)=-1 Cont(5,0)=-1 Cont(5,1)= 1 Cont(5,2)= 0 Cont(6,0)= 1 Cont(6,1)= 0 Cont(6,2)= 1 RigheVisibili = 99 ColFinInc = 6 RigaFinInc = 6 RigaInInc = 8 ColInInc = 8 RigaFin = 200 ColIn = 100 RigaIn = 0 ColFin = 70 ColFinInc2 = 16 RigaFinInc2 = 10 RigaInInc2 = 18 ColInInc2 = 14 RigaFin2 = 500 ColIn2 = 600 RigaIn2 = 0 ColFin2 = 70 lblTitle.Initialize("lblTitle") lblTitle.Color = Colors.Transparent lblTitle.TextSize = 14 lblTitle.TextColor = Colors.White lblTitle.Gravity = Gravity.CENTER_HORIZONTAL + Gravity.CENTER_VERTICAL lblTitle.Text = "" lblTitle.Visible = False Activity.AddView(lblTitle, 0, 0, 100%x, 50dip) Timer1.Initialize("Timer1",40) Timer1.Enabled = True End Sub Sub Activity_Resume RigaMax = ImageGraph.Height ColMax = ImageGraph.Width Drawing End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub Sub Drawing CanvasGraph.Initialize(ImageGraph) CanvasGraph.DrawColor(Colors.Black) 'memo2 traccia anche righe scure, le disegno prima For riscrivi = RigaAttuale To RigaAttuale + RigheVisibili ' scrivo tutte le righe memorizzate Posizione = riscrivi Mod RigheVisibili + 1 CanvasGraph.DrawLine(memo2(1, Posizione), memo2(2, Posizione), memo2(3, Posizione), memo2(4, Posizione), memo2(5, Posizione) ,1.5dip) Next 'memo non traccia righe scure le disegno sopra alle righe di memo2 For riscrivi = RigaAttuale To RigaAttuale + RigheVisibili ' scrivo tutte le righe memorizzate Posizione = riscrivi Mod RigheVisibili + 1 CanvasGraph.DrawLine(memo(1, Posizione), memo(2, Posizione), memo(3, Posizione), memo(4, Posizione), memo(5, Posizione) ,1.5dip) Next End Sub Private Sub Timer1_Tick ' preparo le coordinate delle linee RigaAttuale = RigaAttuale + 1 If RigaAttuale > RigheVisibili Then RigaAttuale = 1 Posizione = RigaAttuale Mod RigheVisibili + 1 ' es: se le righe visibili sono 40, la posizione dell'indice della matrice ' deve andare sempre da 1 a 40 ma la RigaAttuale cambia da 1 a 40 e quando è 1 ' tutto e ok, quando è 2 ai arriva a 41 che deve essere trasformato in 1 come un anello ' infatti: ' ..... omiss ' 37 mod 41 = 37 ' 38 mod 41 = 38 ' 39 mod 41 = 39 ' 40 mod 41 = 40 ' 41 mod 41 = 0 ' 42 mod 41 = 1 ' 43 mod 41 = 2 ' 44 mod 41 = 3 ' ecc, ecc. ' magia di mod che da il resto della divisione. Così si può incrementare ' una variabile in modo lineare fino al massimo valore consentito ed avere ' come risultato dei valori sempre compresi nel range voluto ' con la programmazione occorrerebbero 1 variabile e 2 iff ' due sono i punti tra i quali si costruisce la riga che viaggiano rimbalzando sui bordi dello schermo -------------- ' i bordi sotto e destra, sono contenuti nelle variabili RigaMax e ColMax, aggiornate da Form_Resize RigaFin = RigaFin + RigaFinInc ' incrementa la riga (Y) ColFin = ColFin + ColFinInc ' incrementa la colonna (X) If RigaFin < 0 Then RigaFinInc = Rnd(12,20) ' tocca a destra l'incremento random diventa positivo If RigaFin > RigaMax Then RigaFinInc = Rnd(12,20) * -1 ' tocca a sinistra l'incremento random diventa negativo If ColFin > ColMax Then ColFinInc = Rnd(12,20) * -1 ' tocca giù l'incremento random diventa negativo If ColFin < 0 Then ColFinInc = Rnd(12,20) ' tocca su l'incremento random diventa positivo RigaIn = RigaIn + RigaInInc ' come sopra per l'altro punto ColIn = ColIn + ColInInc If RigaIn > RigaMax Then RigaInInc = Rnd(12,20) * -1 If RigaIn < 0 Then RigaInInc = Rnd(12,20) If ColIn > ColMax Then ColInInc = Rnd(12,20) * -1 If ColIn < 0 Then ColInInc = Rnd(12,20) '-------------------------------------------------------------------------------------------------------------------- ' memorizzo le coordinate dei 2 punti tra i quali disegnerò la riga memo(1, RigaAttuale) = ColIn memo(2, RigaAttuale) = RigaIn memo(3, RigaAttuale) = ColFin memo(4, RigaAttuale) = RigaFin RigaFin2 = RigaFin2 + RigaFinInc2 ' incrementa la riga (Y) ColFin2 = ColFin2 + ColFinInc2 ' incrementa la colonna (X) If RigaFin2 < 0 Then RigaFinInc2 = Rnd(8,18) ' tocca a destra l'incremento random diventa positivo If RigaFin2 > RigaMax Then RigaFinInc2 = Rnd(8,18) * -1 ' tocca a sinistra l'incremento random diventa negativo If ColFin2 > ColMax Then ColFinInc2 = Rnd(8,18) * -1 ' tocca giù l'incremento random diventa negativo If ColFin2 < 0 Then ColFinInc2 = Rnd(8,18) ' tocca su l'incremento random diventa positivo RigaIn2 = RigaIn2 + RigaInInc2 ' come sopra per l'altro punto ColIn2 = ColIn2 + ColInInc2 If RigaIn2 > RigaMax Then RigaInInc2 = Rnd(8,18) * -1 If RigaIn2 < 0 Then RigaInInc2 = Rnd(8,18) If ColIn2 > ColMax Then ColInInc2 = Rnd(8,18) * -1 If ColIn2 < 0 Then ColInInc2 = Rnd(8,18) '-------------------------------------------------------------------------------------------------------------------- ' memo2rizzo le coordinate dei 2 punti tra i quali disegnerò la riga memo2(1, RigaAttuale) = ColIn2 memo2(2, RigaAttuale) = RigaIn2 memo2(3, RigaAttuale) = ColFin2 memo2(4, RigaAttuale) = RigaFin2 ' i colori If i > 254 Then ' ciclo da 255 i = 0 : n = n + 1 If n > 6 Then n = 0 ' ciclo da 6 End If i = i + 1 ' il colore da incrementare/decrementare è deciso in matrice, si parte con R G e B a 255 rosso = rosso + Cont(n, 0) verde = verde + Cont(n, 1) blu = blu + Cont(n, 2) memo(5, RigaAttuale) = Colors.ARGB(255,rosso,verde,blu) memo2(5, RigaAttuale) = Colors.ARGB(200,blu,rosso,verde) If lblTitle.Visible Then lblTitle.Text = Application.LabelName & Chr(10) &" R" & rosso & " G" & verde & " B" & blu & " - R" & blu & " G" & rosso & " B" & verde End If Drawing End Sub Sub ImageGraph_click() If lblTitle.Visible Then lblTitle.SetVisibleAnimated(500,False) Else lblTitle.SetVisibleAnimated(500,True) End If End Sub Sub lblTitle_click If Timer1.Enabled Then Timer1.enabled = False Else Timer1.Enabled = True End If End Sub