Screenshot Linux (gdk_image)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
computerkranker
Beiträge: 66
Registriert: 12.10.2004 21:21

Screenshot Linux (gdk_image)

Beitrag 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
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
computerkranker
Beiträge: 66
Registriert: 12.10.2004 21:21

Beitrag 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
Antworten