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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

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

Message 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.
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.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message 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()
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

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

Message 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

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.
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

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

Message 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
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

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

Message par Shadow »

J'ai réussi à contourner ce problème ennuyant.
Mais ton exemple parle de lui même et est utile, merci :wink:
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.
Répondre