PureBasic

Forums PureBasic
Nous sommes le Jeu 24/Oct/2019 3:28

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 9 messages ] 
Auteur Message
 Sujet du message: Petit effet de cercle style intro/demo
MessagePosté: Dim 29/Avr/2018 11:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1630
Bonjour,

Comme c'est un peu la mode des intro/demo, je me suis décider de faire un petit effet de cercle et cela donne :

Image
Code:
EnableExplicit

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

#_OBJET3D_DEF_SINCOS = 359

Global Dim _Sin.f(#_OBJET3D_DEF_SINCOS)
Global Dim _Cos.f(#_OBJET3D_DEF_SINCOS)

Define.i i
For i=0 To #_OBJET3D_DEF_SINCOS
  _Sin(i) = Sin((i / 180) * #PI)
  _Cos(i) = Cos((i / 180) * #PI)
Next i

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

Procedure _CIRCLE_ANTIALISING(x.i, y.i, radius.d, antilenh.d, color.i)
  ;
  ;
  ;
  Define.c cR, cG, cB
  Define.d dNormal, dValue

  If radius <= 0
    radius = 0.00001
  EndIf
  If antilenh <= 0
    antilenh = 0.00001
  EndIf

  ResetGradientColors()
  DrawingMode(#PB_2DDrawing_AlphaBlend | #PB_2DDrawing_Gradient)

  cR      = Red  (color)
  cG      = Green(color)
  cB      = Blue (color)
  dNormal = 1 / radius
  dValue  = 1 - antilenh * dNormal

  GradientColor(   0  , RGBA(cR, cG, cB, 255))
  GradientColor(dValue, RGBA(cR, cG, cB, 255))
  GradientColor(   1  , RGBA(cR, cG, cB, 0  ))

  CircularGradient(x, y, radius)
  Circle          (x, y, radius)
 
EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

Define.i j, event, px, py
;
Define.i hWnd = OpenWindow(0, 0, 0, 800, 600, "Intro", #PB_Window_SystemMenu)
If hWnd <> 0
  CanvasGadget(1, 0, 0, 800, 600)
  ;
  i     = 0
  px    = 400
  py    = 200
  ;
  Repeat
    event   = WindowEvent()
    ;
    If StartDrawing(CanvasOutput(1))
      DrawingMode(#PB_2DDrawing_AlphaBlend)
      Box(0, 0, 800, 600, RGBA(0, 0, 0, 10))
      ;
      i = (i + 1) % 359
      j = (j + 2) % 359
      ;
      _CIRCLE_ANTIALISING(px + _cos(i) * 120 + _sin(j) * 160, (py + 100) + _Cos(j) * 100 - _Sin(i) * 120, 60 + _Sin(i) * _sin(j) * 60, 120, RGBA(200, 0, 0, 40 ) )
      _CIRCLE_ANTIALISING(px + _cos(i) * 180 - _cos(j) * 160, (py + 100) - _sin(j) * 120 + _Sin(i) * 120, 60 - _Sin(i) * _sin(j) * 60, 120, RGBA(0, 200, 0, 40 ) )
      _CIRCLE_ANTIALISING(px - _cos(i) * 120 + _sin(j) * 160, (py + 100) + _Cos(j) * 140 + _Sin(i) * 120, 60 + _cos(i) * _sin(j) * 60, 120, RGBA(0, 0, 200, 40 ) )
      _CIRCLE_ANTIALISING(px - _cos(i) * 120 - _sin(j) * 160, (py + 100) - _Cos(j) * 140 + _Sin(i) * 120, 60 - _cos(i) * _sin(j) * 60, 120, RGBA(200, 0, 200, 40))
      _CIRCLE_ANTIALISING(px + _cos(i) * 180 + _sin(j) * 160, (py + 100) + _Cos(j) * 120 + _Sin(i) * 120, 60 + _cos(i) * _sin(j) * 60, 120, RGBA(200, 200, 0, 40))
      _CIRCLE_ANTIALISING(px + _cos(i) * 120 - _sin(j) * 160, (py + 100) - _Cos(j) * 120 + _Sin(i) * 120, 60 - _cos(i) * _sin(j) * 60, 120, RGBA(0, 200, 200, 40))
      ;           
      StopDrawing()
    EndIf
    ;
  Until event = #PB_Event_CloseWindow
  ; 
EndIf

Cordialement,
GallyHC

_________________
Image

Image

Image Official site of PureBasic
Image Official site of SpiderBasic

Configuration : Tower: Windows 7 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.62 (x86 et x64)


Dernière édition par GallyHC le Dim 29/Avr/2018 17:31, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Petit effet de cercle style intro/demo
MessagePosté: Dim 29/Avr/2018 15:19 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2190
Localisation: 50200 Coutances
Jolis effets, j'adore, merci pour le partage.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Petit effet de cercle style intro/demo
MessagePosté: Dim 29/Avr/2018 15:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6658
Localisation: Isere
Oui... super joli effet et en peu de lignes 8O
C'est OPTIC 2000 qui t'as inspiré ?
Car quant on le regarde un peu longtemps, on a l'impression d'avoir besoin de nouvelles lunettes avec l'effet flou :lol:
Merci du partage 8)

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Petit effet de cercle style intro/demo
MessagePosté: Dim 29/Avr/2018 17:26 
Hors ligne

Inscription: Mer 04/Nov/2015 17:39
Messages: 1025
Très sympa GallyHC :)
Peut être moyen de choisir la vitesse de tourniqué ?

_________________
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Petit effet de cercle style intro/demo
MessagePosté: Dim 29/Avr/2018 17:39 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3702
J'aime bien aussi, bonne démo.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Petit effet de cercle style intro/demo
MessagePosté: Lun 30/Avr/2018 8:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1630
Merci pour les commentaires.

@"shadow" > une version ou l'on peu modifier la vitesse (en modifiant les valeurs de "i" et "j") :

Code:
EnableExplicit

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

Procedure _CIRCLE_ANTIALISING(x.i, y.i, radius.d, antilenh.d, color.i)
  ;
  ;
  ;
  Define.c cR, cG, cB
  Define.d dNormal, dValue

  If radius <= 0
    radius = 0.00001
  EndIf
  If antilenh <= 0
    antilenh = 0.00001
  EndIf

  ResetGradientColors()
  DrawingMode(#PB_2DDrawing_AlphaBlend | #PB_2DDrawing_Gradient)

  cR      = Red  (color)
  cG      = Green(color)
  cB      = Blue (color)
  dNormal = 1 / radius
  dValue  = 1 - antilenh * dNormal

  GradientColor(   0  , RGBA(cR, cG, cB, 255))
  GradientColor(dValue, RGBA(cR, cG, cB, 255))
  GradientColor(   1  , RGBA(cR, cG, cB, 0  ))

  CircularGradient(x, y, radius)
  Circle          (x, y, radius)
 
EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

Define.f i, j
Define.i event, px, py
;
Define.i hWnd = OpenWindow(0, 0, 0, 800, 600, "Intro", #PB_Window_SystemMenu)
If hWnd <> 0
  CanvasGadget(1, 0, 0, 800, 600)
  ;
  i     = 0
  px    = 400
  py    = 200
  ;
  Repeat
    event   = WindowEvent()
    ;
    If StartDrawing(CanvasOutput(1))
      DrawingMode(#PB_2DDrawing_AlphaBlend)
      Box(0, 0, 800, 600, RGBA(0, 0, 0, 10))
      ;
      i + 0.008
      j + 0.004
      ;
      _CIRCLE_ANTIALISING(px + Cos(i) * 120 + Sin(j) * 160, (py + 100) + Cos(j) * 100 - Sin(i) * 120, 60 + Sin(i) * Sin(j) * 60, 120, RGBA(200, 0, 0, 40 ) )
      _CIRCLE_ANTIALISING(px + Cos(i) * 180 - Cos(j) * 160, (py + 100) - Sin(j) * 120 + Sin(i) * 120, 60 - Sin(i) * Sin(j) * 60, 120, RGBA(0, 200, 0, 40 ) )
      _CIRCLE_ANTIALISING(px - Cos(i) * 120 + Sin(j) * 160, (py + 100) + Cos(j) * 140 + Sin(i) * 120, 60 + Cos(i) * Sin(j) * 60, 120, RGBA(0, 0, 200, 40 ) )
      _CIRCLE_ANTIALISING(px - Cos(i) * 120 - Sin(j) * 160, (py + 100) - Cos(j) * 140 + Sin(i) * 120, 60 - Cos(i) * Sin(j) * 60, 120, RGBA(200, 0, 200, 40))
      _CIRCLE_ANTIALISING(px + Cos(i) * 180 + Sin(j) * 160, (py + 100) + Cos(j) * 120 + Sin(i) * 120, 60 + Cos(i) * Sin(j) * 60, 120, RGBA(200, 200, 0, 40))
      _CIRCLE_ANTIALISING(px + Cos(i) * 120 - Sin(j) * 160, (py + 100) - Cos(j) * 120 + Sin(i) * 120, 60 - Cos(i) * Sin(j) * 60, 120, RGBA(0, 200, 200, 40))
      ;           
      StopDrawing()
    EndIf
    ;
  Until event = #PB_Event_CloseWindow
  ; 
EndIf


Cordialement,
GallyHC

_________________
Image

Image

Image Official site of PureBasic
Image Official site of SpiderBasic

Configuration : Tower: Windows 7 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.62 (x86 et x64)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Petit effet de cercle style intro/demo
MessagePosté: Lun 30/Avr/2018 9:16 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8769
Fluide et jolie.
Merci pour le partage.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Petit effet de cercle style intro/demo
MessagePosté: Lun 30/Avr/2018 11:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6856
Localisation: IDF (Yvelines)
Bien cet effet Gally. Par contre tu devrais le faire avec une fenêtre plein écran. Bravo.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Petit effet de cercle style intro/demo
MessagePosté: Lun 30/Avr/2018 17:18 
Hors ligne

Inscription: Mer 04/Nov/2015 17:39
Messages: 1025
Merci Gally !

_________________
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 9 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye