PureBasic

Forums PureBasic
Nous sommes le Sam 24/Oct/2020 4:45

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 8 messages ] 
Auteur Message
 Sujet du message: Copier le contenu d'un canvasgadget dans le presse papier
MessagePosté: Jeu 13/Juin/2019 15:13 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2009 13:28
Messages: 65
Bonjour

Je souhaite copier le contenu (graphique) du canvasgadget vers le presse papier.

Code:
   If EventType()= #PB_EventType_LeftDoubleClick      ; copie presse papier
     SetClipboardImage(#canvas_carte) 
     MessageRequester("Information","Image copiée dans le presse papier");


Toutefois, ça ne semble pas aussi simple....

Quelqu'un a t il une idée ?

Merci d'avance

_________________
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Copier le contenu d'un canvasgadget dans le presse papie
MessagePosté: Jeu 13/Juin/2019 15:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6872
Localisation: IDF (Yvelines)
GetGadgetAttribute(toncanvas, #PB_Canvas_Image) donne l'image id de ton canvas

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Copier le contenu d'un canvasgadget dans le presse papie
MessagePosté: Jeu 13/Juin/2019 15:33 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6872
Localisation: IDF (Yvelines)
Petit code de vérification
Code:
;Plan de l'application
Declare Start()
Declare CopyClipboardImage()
Declare Exit()

Start()

Procedure Start()
  Protected font = LoadFont(#PB_Any, "", 30)
 
  OpenWindow(0, 0, 0, 800, 600, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 
  CanvasGadget(0, 0, 0, 800, 600)
 
  StartDrawing(CanvasOutput(0))
  Box(0, 0, 800, 600, RGB(128, 128, 128))
 
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawingFont(FontID(font))
  DrawText(100, 100, "Test copy image")
  StopDrawing()
   
 
  ;Triggers
  BindGadgetEvent(0, @CopyClipboardImage(), #PB_EventType_RightClick)
 
  BindEvent(#PB_Event_CloseWindow, @Exit())
 
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

Procedure CopyClipboardImage()
  Protected imageId = GetGadgetAttribute(0, #PB_Canvas_Image)
 
  Protected image = CreateImage(#PB_Any, GadgetWidth(0), GadgetHeight(0))
 
  StartDrawing(ImageOutput(image))
    DrawImage(imageId, 0, 0)
  StopDrawing()
 
  SetClipboardImage(image)
  Debug "copie effectuée "
EndProcedure

Procedure Exit() 
  End
EndProcedure

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Copier le contenu d'un canvasgadget dans le presse papie
MessagePosté: Jeu 13/Juin/2019 15:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2009 13:28
Messages: 65
Merci Falsam,

Code:
   If EventType()= #PB_EventType_LeftDoubleClick      ; copie presse papier
     GetGadgetAttribute(#canvas_carte, #PB_Canvas_Image)
     
     SetClipboardImage( #PB_Canvas_Image) 
     MessageRequester("Information","Image copiée dans le presse papier");


J'ai procédé de cette façon, mais ça ne marche pas .... :cry:

Si tu as une idée....

Phil

_________________
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Copier le contenu d'un canvasgadget dans le presse papie
MessagePosté: Jeu 13/Juin/2019 15:34 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3673
Localisation: Encore ?
Bonjour, ceci devrait faire l'affaire :
Code:
If StartDrawing(CanvasOutput(CanvasNumero) )
   W = OutputWidth()
   H = OutputHeight()
   Image = GrabDrawingImage(#Pb_Any, 0, 0, W, H)
   StopDrawing()
   SetClipboardImage(Image)
   FreeImage(Image)
EndIf
(Et désolé Falsam : le sujet était vide quand j'ai répondu, bande de TGV !)


Dernière édition par Ollivier le Jeu 13/Juin/2019 15:37, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Copier le contenu d'un canvasgadget dans le presse papie
MessagePosté: Jeu 13/Juin/2019 15:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6872
Localisation: IDF (Yvelines)
Philippe_GEORGES a écrit:
J'ai procédé de cette façon, mais ça ne marche pas ....

Si tu as une idée....
Voir mon code de vérification
viewtopic.php?p=204196#p204196

Je récupére bien l'image dans mon logiciel de traitement d'image

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Copier le contenu d'un canvasgadget dans le presse papie
MessagePosté: Jeu 13/Juin/2019 15:39 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6872
Localisation: IDF (Yvelines)
La solution d'olivier est bonne aussi
Code:
;Plan de l'application
Declare Start()
Declare CopyClipboardImage()
Declare Exit()

Start()

Procedure Start()
  Protected font = LoadFont(#PB_Any, "", 30)
 
  OpenWindow(0, 0, 0, 800, 600, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 
  CanvasGadget(0, 0, 0, 800, 600)
 
  StartDrawing(CanvasOutput(0))
  Box(0, 0, 800, 600, RGB(128, 128, 128))
 
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawingFont(FontID(font))
  DrawText(100, 100, "Test copie image")
  StopDrawing()
   
 
  ;Triggers
  BindGadgetEvent(0, @CopyClipboardImage(), #PB_EventType_RightClick)
 
  BindEvent(#PB_Event_CloseWindow, @Exit())
 
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

Procedure CopyClipboardImage()
  If StartDrawing(CanvasOutput(0) )
    W = OutputWidth()
    H = OutputHeight()
    Image = GrabDrawingImage(#PB_Any, 0, 0, W, H)
    StopDrawing()
    SetClipboardImage(Image)
    FreeImage(Image)
  EndIf
  Debug "copy effectuée "
EndProcedure

Procedure Exit() 
  End
EndProcedure

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Copier le contenu d'un canvasgadget dans le presse papie
MessagePosté: Jeu 13/Juin/2019 15:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2009 13:28
Messages: 65
Falsam,

Ton message s'est croisé avec le mien !!

ça marche grâce à ton exemple.... Inutile de te dire à quel point je me trouve bête !

Code:
   If EventType()= #PB_EventType_LeftDoubleClick      ; copie presse papier
    imageId = GetGadgetAttribute(#canvas_carte, #PB_Canvas_Image)
    image = CreateImage(#PB_Any, GadgetWidth(#canvas_carte), GadgetHeight(#canvas_carte))
    StartDrawing(ImageOutput(image))
    DrawImage(imageId, 0, 0)
    StopDrawing() 
    SetClipboardImage(image)   
    MessageRequester("Information","Image copiée dans le presse papier");
  EndIf


Grand merci de ton aide,

Phil

_________________
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com


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

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 8 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 à:  

 


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