Re: [lazarus] Converting a GdkPixbuf into a TBitmap
On 5/27/06, Mattias Gaertner <[EMAIL PROTECTED]> wrote: Thanks for the trick. I added it to the gtk2 interface. You can now take a screenshot with: MyBitmap:=TBitmap.Create; ScreenDC:=GetDC(0); MyBitmap.LoadFromDevice(ScreenDC); ReleaseDC(ScreenDC); Thank you very much. This just eliminated ImageMagick dependency for the magnifier, and also improved the performance dramatically. -- Felipe Monteiro de Carvalho _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
Re: [lazarus] Converting a GdkPixbuf into a TBitmap
On Thu, 18 May 2006 10:25:23 -0300 "Felipe Monteiro de Carvalho" <[EMAIL PROTECTED]> wrote: > Hello, > > I am testing some gdk functions, and I'd like to connect them to LCL. > > My current gtk code is this one: > > Pixbuf := gdk_pixbuf_get_from_drawable(nil, > gdk_screen_get_root_window(gdk_screen_get_default), >gdk_window_get_colormap(gdk_screen_get_root_window(gdk_screen_get_defa >ult)), 0, 0, 0, 0, CXScreen - 1, CYScreen -1); Thanks for the trick. I added it to the gtk2 interface. You can now take a screenshot with: MyBitmap:=TBitmap.Create; ScreenDC:=GetDC(0); MyBitmap.LoadFromDevice(ScreenDC); ReleaseDC(ScreenDC); Mattias > > gdk_pixbuf_save(Pixbuf, '/home/felipe/tmp/tmp.png', 'png', nil); > > This takes a screenshot of the screen. This works. > > Now, I'd like to save that Pixbuf into a TBitmap, so I can display it > in a lazarus form. How can I do that? Do I need to manually copy the > memory of the image into the TBitmap? Or just using gtk functions is > enougth? > > I attempted to draw the pixbuf into a created, but empty TBitmap: > > GDIObject := PgdiObject(bmpDisplay.Handle); > > gdk_draw_pixbuf(GDIObject^.GDIPixmapObject, nil, Pixbuf, 0, 0, 0, 0, >CXScreen - 1, CYScreen -1, GDK_RGB_DITHER_NONE, 0, 0); > > But this doesn't work. > > In case anyone wants to test this, I declared my own gdk functions, > because they are Gtk2.2+ specific. > > uses gdk2, gtkdef, gdk2pixbuf, gtk2, glib2; > > procedure gdk_display_get_pointer(display : PGdkDisplay; screen > :PGdkScreen; x :Pgint; y : Pgint; mask : PGdkModifierType); cdecl; > external gdklib; > function gdk_display_get_default:PGdkDisplay; cdecl; external gdklib; > > procedure gdk_draw_pixbuf(drawable : PGdkDrawable; gc : PGdkGC; pixbuf > : PGdkPixbuf; src_x, src_y, dest_x, dest_y, width, height : gint; > dither : TGdkRgbDither; > x_dither, y_dither : gint); cdecl; external gdklib; > > function gdk_screen_get_default: PGdkScreen; cdecl; external gdklib; > > > thanks, _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
[lazarus] Converting a GdkPixbuf into a TBitmap
Hello, I am testing some gdk functions, and I'd like to connect them to LCL. My current gtk code is this one: Pixbuf := gdk_pixbuf_get_from_drawable(nil, gdk_screen_get_root_window(gdk_screen_get_default), gdk_window_get_colormap(gdk_screen_get_root_window(gdk_screen_get_default)), 0, 0, 0, 0, CXScreen - 1, CYScreen -1); gdk_pixbuf_save(Pixbuf, '/home/felipe/tmp/tmp.png', 'png', nil); This takes a screenshot of the screen. This works. Now, I'd like to save that Pixbuf into a TBitmap, so I can display it in a lazarus form. How can I do that? Do I need to manually copy the memory of the image into the TBitmap? Or just using gtk functions is enougth? I attempted to draw the pixbuf into a created, but empty TBitmap: GDIObject := PgdiObject(bmpDisplay.Handle); gdk_draw_pixbuf(GDIObject^.GDIPixmapObject, nil, Pixbuf, 0, 0, 0, 0, CXScreen - 1, CYScreen -1, GDK_RGB_DITHER_NONE, 0, 0); But this doesn't work. In case anyone wants to test this, I declared my own gdk functions, because they are Gtk2.2+ specific. uses gdk2, gtkdef, gdk2pixbuf, gtk2, glib2; procedure gdk_display_get_pointer(display : PGdkDisplay; screen :PGdkScreen; x :Pgint; y : Pgint; mask : PGdkModifierType); cdecl; external gdklib; function gdk_display_get_default:PGdkDisplay; cdecl; external gdklib; procedure gdk_draw_pixbuf(drawable : PGdkDrawable; gc : PGdkGC; pixbuf : PGdkPixbuf; src_x, src_y, dest_x, dest_y, width, height : gint; dither : TGdkRgbDither; x_dither, y_dither : gint); cdecl; external gdklib; function gdk_screen_get_default: PGdkScreen; cdecl; external gdklib; thanks, -- Felipe Monteiro de Carvalho _ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives