GetClipboardImage()

Syntaxe

Resultat = GetClipboardImage(#Image [, Profondeur])
Description
Crée une nouvelle image à partir d'une image contenue dans le presse-papier (si elle existe).

Arguments

#Image Numéro de la nouvelle image.

PB_Any# peut être utilisé pour générer automatiquement ce numéro.
Profondeur (optionnel) La profondeur de couleur de l'image.

Les valeurs valides sont 24 bits (par défaut) ou 32 bits.

Valeur de retour

Renvoie une valeur non nulle en cas de succès, zéro sinon.

Si #PB_Any est utilisé pour le paramètre '#Image', le numéro de la nouvelle image sera renvoyé dans 'Resultat'.

Remarques

Sous Windows, il se peut que la transparence ne soit pas détectée une fois l'image du presse-papier collée dans un logiciel tiers. (L'enregistrement de cette image au format png conserve la transparence.) Il s'agit d'un problème lié au format BMP et à la façon dont Windows le gère. Il est possible d'avoir une image bitmap 32 bits sans canal alpha. Dans ce cas, toutes les valeurs alpha sont 0 mais l'image est censée être opaque. Étant donné que les images dans GetClipboardImage() peuvent provenir de l'extérieur de PB, nous ne pouvons pas savoir si l'image est censée être entièrement transparente ou entièrement opaque. C'est pourquoi nous n'utilisons le canal alpha que s'il y a au moins un pixel avec une valeur autre que 0. Sinon, nous la traitons comme une image opaque.

L'image ainsi obtenue peut être détruite à l'aide de la commande FreeImage().

Pour plus d'information sur les images, voir la bibliothèque Image ou le gadget ImageGadget().

Exemple

  If CreateImage(0,26,20)
    StartDrawing(ImageOutput(0))
      Box(0,0,26,20,RGB(255,255,255))
      Circle(13,10,5,RGB(255,0,0))
    StopDrawing()
    SetClipboardImage(0)
  EndIf
  
  If OpenWindow(0, 0, 0, 220, 100, "Presse-papier", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   If StartDrawing(WindowOutput(0))
     DrawImage(GetClipboardImage(0), 10,10) 
     DrawImage(GetClipboardImage(0), 100, 30, 65, 50) 
      StopDrawing()
   EndIf

   Repeat
     Event = WaitWindowEvent()
   Until Event = #PB_Event_CloseWindow
 EndIf
 
  ; Vous pouvez aussi ouvrir un logiciel de dessin (par exemple 'Paint') 
  ; et collez le contenu du presse-papier (Edition puis Coller), 
  ; et vous verrez le drapeau japonais ;-)

Exemple: avec transparence

  #Shift= 10
  Global ImageSource.s

  CreateImage(0,200,200,32,#PB_Image_Transparent)
  StartDrawing(ImageOutput(0))
  DrawingMode(#PB_2DDrawing_AlphaChannel) 
  Box(0, 0, 100, 50, $00000000)
  DrawingMode(#PB_2DDrawing_AlphaBlend)
  DrawText(10,50,"PUREBASIC", RGBA(255, 255, 0, 255), RGBA(0, 0, 0, 0))
  Circle(100,100, 50,RGBA(255, 255, 255,128))
  StopDrawing() 
  SetClipboardImage(0)
  GetClipboardImage(1,32)


  CreateImage(0,200,200,32,#Blue)
  StartDrawing(ImageOutput(0))
  DrawingMode(#PB_2DDrawing_AlphaBlend)
  DrawImage(ImageID(1),#Shift,-#Shift)
  StopDrawing()

  OpenWindow(0,0,0,200,200,Str(ImageDepth(1)))
    ImageGadget(0,0,0,200,200,ImageID(0))
  Repeat : Select WaitWindowEvent() : Case #PB_Event_CloseWindow : End : EndSelect : ForEver

Voir aussi

SetClipboardImage(), GetClipboardText()

OS Supportés

Tous

<- ClearClipboard() - Clipboard Index - GetClipboardText() ->