(Résolu) Fonction Point(x,y) et Alpha
Publié : lun. 05/avr./2021 19:08
bsr à tous
voilà, j'ai écris un ptit bout de code pour tester Point(x, y) avec l'Alpha,
après un click Gauche dans la fenêtre les couleurs sont bien identiques,
quand on demande à point(x, y) la valeur des couleurs de la Box supérieure
pour mettre la couleur obtenue dans la box d'en bas, c'est ok..
maintenant je n'ai pas trouvé le calcul pour obtenir des valeurs RGBA
identique à la couleur d'origine depuis Point(x,Y)
si quelqu'un connait l'astuce...
merci
Cordialement
voilà, j'ai écris un ptit bout de code pour tester Point(x, y) avec l'Alpha,
après un click Gauche dans la fenêtre les couleurs sont bien identiques,
quand on demande à point(x, y) la valeur des couleurs de la Box supérieure
pour mettre la couleur obtenue dans la box d'en bas, c'est ok..
maintenant je n'ai pas trouvé le calcul pour obtenir des valeurs RGBA
identique à la couleur d'origine depuis Point(x,Y)
si quelqu'un connait l'astuce...

Cordialement
ps: Pour obtenir une couleurs = avec 32 bits (256*256*256*256)-1 hex = $FFFFFFFF, dec = 4294967295
je pense qu' il manque à la valeur négative points() 16bits en hex = $0000FFFF, dec = 65535
c'est probablement pour cela que cette valeur est négative![]()
Code : Tout sélectionner
Procedure Affiche_image(x, y,Rouge$, Vert$, Bleu$, Lux$ )
Protected *couleur
If StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_AlphaBlend)
; Affiche box d'en haut de la fenetre avec Alpha
Box(0, 0, 400, 150, RGBA(Val(Rouge$), Val(Vert$), Val(Bleu$), Val(Lux$))) ; Box supérieure couleur aléatoire
;affiche box d'en bas de la fenetre avec Alpha à 255
Box(0, 340, 400, 150, RGBA(Val(Rouge$), Val(Vert$), Val(Bleu$), 255)) ; Box supérieure couleur aléatoire
; Affiche dans debug la valeur globale de la couleur
Debug "Point() : " + Point(50, 50)
; Remarque importante la valeur retour de Point() est toujours négative
couleur.l = Point(50, 50) ; Récupère la couleur supérieure
; Affiche box du milieu de la fenetre avec Alpha depuis la valeur capturée par point()
Box(0, 170, 400, 150, couleur) ;Affiche la Box du mileu avec la couleur de la box d'en haut
Debug "ARGB : $" + RSet(Right(Hex(@couleur), SizeOf(integer)*2), 8, "0")
StopDrawing()
ImageGadget(0, 0, 0, 400, 490, ImageID(0))
SetGadgetState(0, ImageID(0))
EndIf
; Couleurs de retour avec la valeur de Point(x, y) avec les fonctions couleurs red() Green() Blue() Alpha()
Red$ = Right("00" + Str(Red(Couleur)),3)
Green$ = Right("00" + Str(Green(Couleur)),3)
Blue$ = Right("00" + Str(Blue(Couleur)),3)
Alpha$ = Right("00" + Str(Alpha(couleur)),3)
; Semble pas être la bonne formule pour car on récupère pas les couleurs RGBA envoyée au départ
Debug "----------------------------------------"
Debug "Origine RGBA : ( " + Rouge$ + ", " + Vert$ + ", " + Bleu$ + ", " + Lux$ +" )"
capture$ = "Retour Point() : ( " + Red$ + ", " + Green$ + ", " + Blue$ + ", " + Alpha$ +" )"
Debug capture$
Debug "========================="
SetWindowTitle(0, "Points click Fenêtre Couieur " + "( " + Red$ + ", " + Green$ + ", " + Blue$ + ", " + Alpha$ +" )")
EndProcedure
If OpenWindow(0, 0, 0, 400, 490, "Points click Fenêtre", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateImage(0, 400, 490,32,#White)
ImageGadget(0, 0, 0, 400, 490, ImageID(0))
Repeat
event = WaitWindowEvent()
x = WindowMouseX(0)
y = WindowMouseY(0)
Select Event
Case #PB_Event_Gadget
Select EventType()
Case #PB_EventType_LeftClick
Rouge$ = Right("00" + Str(Random(255)), 3)
Vert$ = Right("00" + Str(Random(255)), 3)
Bleu$ = Right("00" + Str(Random(255)), 3)
Lux$ = Right("00" + Str(Random(255)), 3)
;Affiche_image(x, y, "001", "001", "001", "255") ; Point() affichera une valeur noire négative de -16711423
Affiche_image(x, y, Rouge$, Vert$, Bleu$, Lux$)
EndSelect
EndSelect
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf