J'ai tenté de reproduire cette texture, mais il me manque encore pas mal de choses pour réaliser ce code. Il faudrait corriger la fin du code. Je ne suis pas certain non plus que ca marche. Quand je le faisais c'était bien plus simple, ligne par ligne, le deuxieme dégradé était en inverse vidéo avec transparence. C'est franchement presque pareil #PB_2DDrawing_XOr en ce qui concerne le cercle, je ne comprend pas trop pourquoi ca ne le fait pas avec les lignes . Edit: il y a quand même une "perte" importante en nombre de couleur dans ce nouveau dégradé une fois xorré.
Code : Tout sélectionner
InitSprite()
InitKeyboard()
OpenScreen(640,480,32,"S")
Repeat
StartDrawing (ScreenOutput ())
; Premier dégradé horizontal
DrawingMode(#PB_2DDrawing_Default)
For y = 0 To 480
LineXY(0, y, 640, y , RGB(y % 255,0,0))
Next y
; ---------- Ne marche pas, l'effet escompté était un inverse video (avec transparence) J'ai aussi essayé de voir avec box pour faire une ligne.
; car j'ai vu qu'avec un rond en XOR que le dégradé apparaissait en transparence. (Remplacer le if 0 par 1 pour voir)
; un dégradé de ligne verticale écrase le premier dégradé...
If 0
DrawingMode(#PB_2DDrawing_XOr )
For x = 0 To 640 Step 2
Box(x,20,2, 430 ,RGB(x % 255,x % 255,0))
Next x
Circle(100,100,250,255)
EndIf
; ----------
; ### Tentative de créer l'effet XOR pixel par pixel.
For y = 0 To 479
For x = 0 To 639
;(c'est notre couleur dans le prmier dégradé, inutile d'aller le grabber)
oldcolor = y % 255
newcolor = x % 255
oldcolor$ = Bin(oldcolor)
newcolor$ = Bin(newcolor)
; Ayant deux jours de Purebasic, je ne peux que donner l'idée avec un pseudo code:
; XORcouleur = newcolor$ XOR oldcolor$
; note, on doit pouvoir le faire aussi avec "AND"
; Plot(x,y,XORcouleur)
Next x
Next y
StopDrawing ()
FlipBuffers ()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
# Dernier Edit
Avec des gros cercles, on voit clairement apparaitre ce nouveau dégradé xorré. Ce même cercle de la taille d'un pixel avec un step de 1 en x et y et la texture que l'on voit sur l'image doit apparaitre. Il en est rien ;(
Code : Tout sélectionner
InitSprite()
InitKeyboard()
OpenScreen(640,480,32,"S")
Repeat
StartDrawing (ScreenOutput ())
; Premier dégradé horizontal
DrawingMode(#PB_2DDrawing_Default)
For y = 0 To 480
LineXY(0, y, 640, y , RGB(0,0,y % 255))
Next y
DrawingMode(#PB_2DDrawing_XOr )
For y = 0 To 479 Step 20
For x = 0 To 639 Step 20
Circle(x,y,8,x % 255)
Next x
Next y
StopDrawing ()
FlipBuffers ()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)