如何在DrawingArea上用cairo画bmp图
因为我的DRAWINGAREA要放置视频,所以在上面放入图片比较麻烦,我想用cairo来做,可我的图像是BMP的,而cairo_image_surface_create_from_png用的是PNG的,我不知道该怎么弄了?有什么什么方法可以取得BMP中的RGB数据?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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=%dn",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);