免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4876 | 回复: 1
打印 上一主题 下一主题

如何在DrawingArea上用cairo画bmp图 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-20 15:11 |只看该作者 |倒序浏览
因为我的DRAWINGAREA要放置视频,所以在上面放入图片比较麻烦,我想用cairo来做,可我的图像是BMP的,而cairo_image_surface_create_from_png用的是PNG的,我不知道该怎么弄了?有什么什么方法可以取得BMP中的RGB数据?

论坛徽章:
0
2 [报告]
发表于 2007-12-20 15:39 |只看该作者
GtkWidget *image;
        GdkPixbuf *pixbuf;
        char *data;
        int width,height,stride,bpp;

        cairo_t *cr;
        cairo_surface_t *surface;

        image = gtk_image_new_from_file("f11.bmp");
        pixbuf = gtk_image_get_pixbuf(image);
        data = gdk_pixbuf_get_pixels(pixbuf);
        width = gdk_pixbuf_get_width(pixbuf);
        height = gdk_pixbuf_get_height(pixbuf);
        stride = gdk_pixbuf_get_rowstride(pixbuf);
        bpp = gdk_pixbuf_get_bits_per_sample(pixbuf);

        dprintk("width=%d,height=%d,stride=%d,bpp=%d\n",width,height,stride,bpp);

        cr = gdk_cairo_create(wbus->drawingarea->window);
        surface = cairo_image_surface_create_for_data(data,CAIRO_FORMAT_A8,width,height,stride);

        cairo_set_source_surface (cr, surface, 100, 300);
        cairo_paint_with_alpha(cr,1);       
        //cairo_paint(cr);

        cairo_destroy(cr);
        cairo_surface_destroy(surface);
        gtk_widget_destroy(image);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP