Seite 1 von 1

Screenshot Linux (gdk_image)

Verfasst: 31.12.2007 14:15
von computerkranker
Hallo,

vielleicht kann mir jemand helfen. Ich habe ein gdk_image und brauche es als purebasic_image.

Code: Alles auswählen

CreateImage(0,512,256,#PB_Image_DisplayFormat)

linuxScreen=gdk_screen_get_root_window_(gdk_screen_get_default_())
myid=gdk_drawable_get_image_(linuxScreen,0,0,512,256)
   
OpenWindow(0, 0, 0,512, 256,"Titel", #PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
ImageGadget(0, 0, 0, 512, 256, 0)
gtk_image_set_(GadgetID(0), myid,0)

;SOWEIT GEHT ES
;Ich hätte aber gern das gdk_image als purebasic_image zur Weiterverarbeitung

;zum Testen: so gehts nicht
;ImageGadget(0, 0, 0, 512, 256, myid)
    
Repeat     
  Event = WaitWindowEvent()
  Delay(10)
Until Event = #PB_Event_CloseWindow

Verfasst: 31.12.2007 14:27
von DarkDragon
Vielleicht geht es mit

Code: Alles auswählen

Image = CreateImage(#PB_Any, 512, 256)
StartDrawing(ImageOutput(Image))
DrawImage(myid, 0, 0, 512, 256)
StopDrawing()
(ungetestet)

Als Alternative kann ich dir das hier anbieten:
http://www.purebasic.fr/german/viewtopi ... +win+linux

Verfasst: 31.12.2007 14:44
von computerkranker
Image = Create....
StopDrawing()
ist kein schlechter Ansatz, damit habe ich es hinbekommen. Auch wenn nur über den Umweg "pixbuf". Ein direktes "gdk_draw_drawable_" bekomme ich leider nicht hin. Vielleicht weis ja jemand warum.

Code: Alles auswählen

CreateImage(0,512,256,#PB_Image_DisplayFormat)
OpenWindow(0, 0, 0,512, 256,"Titel", #PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))

linuxScreen=gdk_screen_get_root_window_(gdk_screen_get_default_())
hc=StartDrawing(ImageOutput(0))
  ; geht
  pixbuf=gdk_pixbuf_get_from_drawable_(0,linuxScreen,gdk_drawable_get_colormap_(linuxScreen),0,0,0,0,512,256)
  gdk_draw_pixbuf_(hc,0,pixbuf,0,0,0,0,512,256,0,0,0)
  ; geht leider nicht
  ;gdk_draw_drawable_(hc,gdk_gc_new_(linuxScreen),linuxScreen,0,0,0,0,512,256);
StopDrawing()

ImageGadget(0, 0, 0, 512, 256,ImageID(0))
 
Repeat     
  Event = WaitWindowEvent()
  Delay(10)
Until Event = #PB_Event_CloseWindow