Page 1 sur 1

Comment récupéré l'image (Numero) d'un Canva ?

Publié : sam. 01/avr./2017 19:49
par Shadow
Salut,

Quand j'applique une image à un Canva (Ici MonImage), que se soit avec un SetGadgetAttribute
ou manuellement avec StartDrawing, par la suite impossible de récupérer cette même image !

Par la suite je fais une comparaison du style:

Code : Tout sélectionner

If GetGadgetAttribute(Gadget, #PB_Canvas_Image) <> MonImage)
Mais ça marche pas et quand je fais:

Code : Tout sélectionner

Debug GetGadgetAttribute(Gadget, #PB_Canvas_Image)
Debug ImageID(MonImage)
Debug MonImage
Toutes les valeurs son différente et pour ImageID(MonImage) et MonImage
normale mais pour GetGadgetAttribute, alors jme demande à quoi il sert ici :?

J'ai besoin de savoir si l'image que je lui est donner la première fois est identique a la seconde
que je vais lui mettre, si t'elle est le cas, je fais rien (Si les deux images sont pareil)
mais si elle sont différente alors j'applique la nouvelle image au Canva.

Bha j'y arrive pas :|

Sa éviterais de faire des changement inutile.

Re: Comment récupéré l'image (Numero) d'un Canva ?

Publié : sam. 01/avr./2017 20:13
par Ar-S
J'ai pas compris grand chose..

Dans la commande LoadImage(#image1,"" etc..)
Le numéro de l'image est #image1
L'ID(entifiant) de l'image est ImageID(#Image1)

Lorsque tu tu interviens sur le canvas, soit tu ecris sur ton image

Code : Tout sélectionner

StartDrawing(imageoutput(#image1))
;Tu dessines sur ton image
Stopdrawing()
;Puis tu redessines ton image modifiée dans le canvas
StartDrawing (canvasOutput(#TonCanvas))
Drawimage(ImageId(#Image1),x,y)
StopDrawing()
Soit si ton #image1 est déjà affichée dans le canvas, tu dessines directement dedans

Code : Tout sélectionner

StartDrawing(CanvasOutput(#Canvas))
;;Tu redessines les modifiant le canvas sur l'image
; Mais tu devras ensuite copier cette nouvelle image.
; ça te permet de ne pas perdre ton image originale.
StopDrawing()

Re: Comment récupéré l'image (Numero) d'un Canva ?

Publié : sam. 01/avr./2017 20:38
par Shadow
Voilà de quoi comprendre:

Code : Tout sélectionner

Enumeration 1
  
  #Fenetre
  #Canva
  #MonImageCharger
  #MonImageCreer
  
EndEnumeration

DataSection
  
  Piece_d_or:
  ; size : 684 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1100000011000000,$476D3B0000000608,$474B6206000000FA,$A0FF00FF00FF0044,$700900000093A7BD,$00130B0000735948,$189C9A0001130B00,$454D497407000000
  Data.q $120B1B171408E007,$4939020000CC9D16,$3194ADCB38544144,$724FFFC718511A68,$D04F155A82292742,$A97493A1D9ED06E5,$4B240D6388643A04,$C1A86249926866C6,$43B10B17474B8845,$D2E34BA2E8648706
  Data.q $34AA152DE0EA5E0C,$0EBE42F51D520346,$B86E0FB1D4F4EF2F,$BEFBFFFF7BF7DEFB,$62C64AD5611118FB,$899B95B1A68A814B,$2AAA6D2AAA6CF2C8,$11110CBD268CF2B5,$C5B11233CAD40351,$EC5D00DC9980259C
  Data.q $0580D401CFB57449,$462C649D84C79F36,$1CC50824A13FF7B9,$75E01FFB0849F1E0,$E8CA6E307688E005,$EFBBD00575E177DD,$82A2DECCE5F5FD22,$92A346795A893D8B,$7A4D00D44C92A34C,$A6C92A3432F49A19
  Data.q $DDC4D68A987DABAA,$FD84301FA88F8728,$CF5EBC20386D3CCC,$74E080E182767DA0,$14229E22ED5E98F3,$8EEF4C6C26D73C6A,$778804C00090D7F1,$C3FEA19BA7002BAF,$C58C906F6F8FB05A,$3B3ED0824A0006C8
  Data.q $3FAFC0005E579BC1,$B818EC6C6444886B,$0AEBC0ED11C2CD3E,$9283D1BDF093E3C0,$8949EA788655E820,$239A7114FC070EA0,$D6B3DD380CBD41DA,$7A98192E781ADFE8,$FED9BEC5B6451632,$038E62818EC6C19C
  Data.q $9BFC825195990494,$2440CBD4865D9FBD,$329B8C59FBDA37C2,$97E701CC55B72094,$0FC788EB6869531D,$C69A2A413F2F511F,$1C1957A4B4D5350A,$01ADFE866E9C0ED1,$29E39BE412824F8F,$54D428C777A62A98
  Data.q $3B2FCE76998D3454,$4DD841252066A788,$897E6E9C03FF6103,$7D6CF0CABD0CA6E3,$7D8E964B33A7D71B,$2AF4079A6EC1BA17,$023ADA1ECA2BCB33,$6AB6B7C590F97C00,$0948058BFF9B2C76,$789F17F60AA2E972
  Data.q $9600B0DFF4180EE5,$C912C4C04023F320,$1FE4F31FFB0246AB,$6EE9E4CC506B93A8,$444E454900000000
  Data.b $AE,$42,$60,$82
  
EndDataSection

UsePNGImageDecoder()

If OpenWindow(#Fenetre, 327, 177, 500, 300, "fenêtre windows",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar)
  CanvasGadget(#Canva, 10, 10, 150, 50)
  
  MonImageIDCharger = CatchImage(#MonImageCharger, ?Piece_d_or)
  
  MonImageCreerID = CreateImage(#MonImageCreer, 25, 25, 32)
  
  StartDrawing(ImageOutput(#MonImageCreer))
  Box(0, 0, 25, 25, RGB(255, 0, 0))
  DrawAlphaImage(MonImageIDCharger, 4, 4, 255)
  StopDrawing()
  
  Debug "Mon ImageID Charger = " + Str(MonImageIDCharger)
  Debug "Mon ImageID Créé = " + Str(MonImageCreerID)
  
  SetGadgetAttribute(#Canva, #PB_Canvas_Image, MonImageCreerID)
  
  Debug "Mon ImageID Canva 1 = " + Str(GetGadgetAttribute(#Canva, #PB_Canvas_Image))
  
  StartDrawing(CanvasOutput(#Canva))
  DrawImage(MonImageCreerID, 26, 0)
  StopDrawing()
  
  Debug "Mon ImageID Canva 2 = " + Str(GetGadgetAttribute(#Canva, #PB_Canvas_Image))
  
  
  Repeat ; Départ des évènements de boucle.
    
    Event = WaitWindowEvent(1) ; Cette ligne attend pendent (Minuteur) qu'un évènement soit recus par la fenêtre.
    EventGadget = EventGadget(); Pour savoir sur quel gadget c'est produis l'évènement.
    EventType = EventType()    ; Le type d'évènement qui c'est produis sur le gadget.
    
    Select Event 
        
      Case #PB_Event_Gadget
        
        Select EventGadget
            
          Case 0

        EndSelect
        
    EndSelect
    
  Until Event = #PB_Event_CloseWindow ; Fin des évènements de boucle.
  
EndIf


Re: Comment récupéré l'image (Numero) d'un Canva ?

Publié : dim. 02/avr./2017 0:11
par boby
Euhh je ne suis pas sur d'avoir bien compris ce que tu demande, un truc du genre ??
J'ai besoin de savoir si l'image que je lui est donner la première fois est identique a la seconde
que je vais lui mettre, si t'elle est le cas, je fais rien (Si les deux images sont pareil)
mais si elle sont différente alors j'applique la nouvelle image au Canva.

Code : Tout sélectionner

EnableExplicit
Global LastDrawedImage, image1, image2,window,canvas,button1,button2
Declare HandlerButton1()
Declare HandlerButton2()
image1 = CreateImage(#PB_Any,20,20)
image2 = CreateImage(#PB_Any,20,20)
StartDrawing(ImageOutput(image1))
Box(0,0,20,20,$FF0000)
StopDrawing()
StartDrawing(ImageOutput(image2))
Box(0,0,20,20,$0000FF)
StopDrawing()

window = OpenWindow(#PB_Any,0,0,100,100,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
canvas = CanvasGadget(#PB_Any,0,0,50,50)
button1 = ButtonGadget(#PB_Any,60,10,40,20,"img1")
button2 = ButtonGadget(#PB_Any,60,40,40,20,"img2")
BindGadgetEvent(button1,@HandlerButton1())
BindGadgetEvent(button2,@HandlerButton2())

Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow

Procedure HandlerButton1()
  If LastDrawedImage = image1
    Debug "Pas besoin de redessiner !!!"
  Else
    StartDrawing(CanvasOutput(canvas))
    DrawImage(ImageID(image1),5,5)
    StopDrawing()
    Debug "La j'ai redessiné !!!"
    LastDrawedImage = image1
  EndIf
EndProcedure

Procedure HandlerButton2()
  If LastDrawedImage = image2
    Debug "Pas besoin de redessiner !!!"
  Else
    StartDrawing(CanvasOutput(canvas))
    DrawImage(ImageID(image2),5,5)
    StopDrawing()
    Debug "La j'ai redessiné !!!"
    LastDrawedImage = image2
  EndIf
EndProcedure

Re: Comment récupéré l'image (Numero) d'un Canva ?

Publié : dim. 02/avr./2017 2:12
par Shadow
J'ai réussi à contourner ce problème ennuyant.
Mais ton exemple parle de lui même et est utile, merci :wink: