linux下显示不规则图片窗口

测试环境是ubuntu15.04,使用的图形库是gtk+。

图片格式采用的是X11的xpm格式,首先从网上找一个背景透明的png图片,然后用图形转换工具(比如gimp)转换为xpm格式。

程序代码如下:

#include <gtk/gtk.h>

void close_app(GtkWidget *widget,GdkEvent *event,gpointer data){
    gtk_main_quit();
}

int main(int argc,char **argv){
    GtkWidget *window,*pixmap,*fixed;
    GdkPixmap *gdk_pixmap;
    GdkBitmap *mask;
    GtkStyle *style;
    GdkGC *gc;

    gtk_init(&argc,&argv);
    window = gtk_window_new(GTK_WINDOW_POPUP);
    gtk_signal_connect(GTK_OBJECT(window),"delete_event",
        GTK_SIGNAL_FUNC(close_app),NULL);

    gtk_widget_set_events(window,gtk_widget_get_events(window)|GDK_BUTTON_PRESS_MASK);
    gtk_signal_connect(GTK_OBJECT(window),"button_press_event",
        GTK_SIGNAL_FUNC(close_app),NULL);
    gtk_widget_show(window);

    style = gtk_widget_get_default_style();
    gc = style->black_gc;
    gdk_pixmap = gdk_pixmap_create_from_xpm(window->window,&mask,
        &style->bg[GTK_STATE_NORMAL],"./start.xpm");
    pixmap = gtk_pixmap_new(gdk_pixmap,mask);
    gtk_widget_show(pixmap);
    fixed = gtk_fixed_new();
    gtk_widget_set_usize(fixed,256,256);
    gtk_fixed_put(GTK_FIXED(fixed),pixmap,0,0);
    gtk_container_add(GTK_CONTAINER(window),fixed);

gtk_widget_shape_combine_mask(window,mask,0,0);
    gtk_widget_set_uposition(window,20,400);
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}

编译命令:

clang `pkg-config --libs --cflags gtk+-2.0` -O3 -g0 -s -o pixmap pixmap.c

执行效果如下:

时间: 2024-09-18 10:23:59

linux下显示不规则图片窗口的相关文章

linux验证码-验证码在linux下显示红叉

问题描述 验证码在linux下显示红叉 验证码在windows下能正常显示,在linux下显示红叉,验证码用的是kaptcha2.3.2.jar,请问怎样才能让在linux环境下正常显示,谢谢! 解决方案 http://blog.csdn.net/baohuan_love/article/details/14226285 这里有篇文章你可以参考下,希望对你有所帮助!

[20140627]linux下显示那个进程使用swap

[20140627]linux下显示那个进程使用swap.txt --要了解linux下那个进程使用交换: for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less for file in /proc/*/status do     awk '/VmSwap|Name/{printf

linux下显示中文目录和文件名

  选择一个一劳永逸的方法,就是修改/etc/下的fstab文件,我的fstab内容如下: /dev/hda9 / ext2 defaults 1 1 /dev/hda8 /boot ext2 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/hda10 swap swap defaults 0 0 /dev

U盘在Linux下显示不正常的解决方法

  一般用这条命令:mount -o iocharset=utf8 /dev/sdb /tmp/fat 如若不行可试如下命令: mount /dev/sdb /mnt -t vfat -o codepage=936,iocharset=utf8 mount /dev/sdb /mnt -t vfat -o iocharset=utf8 mount /dev/sdb /mnt -t vfat -o codepage=936,iocharset=gb2312 mount /dev/sdb /mnt

nali一款linux下显示IP来源的小工具

nali,名字取自中文"哪里"的拼音.nali包含一组命令行程序,其主要功能就是把一些http://www.aliyun.com/zixun/aggregation/10849.html">网络工具的输出的IP字符串,附加上地理位置信息(使用纯真数据库).例如218.65.137.1会变成218.65.137.1[广西南宁市 电信].查询是在本地进行,并不会进行联网查询,所以效率方面不会有什么影响.目前包含以下几个命令: nalinali-dignali-nslooku

驱动程序-Linux下的虚拟串口类型ttyusb与ttyacm

问题描述 Linux下的虚拟串口类型ttyusb与ttyacm 基于NUC123的usb虚拟串口,在Linux下显示ttyacm,如何使得Linux识别为ttyusb,应该修改NUC123开发板程序设计还是Linux的驱动程序?

Linux下application中文显示为方块解决

  Linux下application中文显示为方块解决 Linux(我用的是ubuntu)下的java应用程序,UI处输入中文字符,会显示成方块,虽然最终 输出或生成文件时没有问题,但让应用中的输入无法正常显示. 原因是jdk中缺少中文包,我们可以下载fireflysung来解决这个问题. 在JRE目录下的 lib/fonts/下新建一目录fallback, 把fireflysung.ttf放到这个目录下. 重启你的应用,OK,问题解决了.^_^ fireflysung.rar (5.2 MB

在windows下使用Xming+Putty显示Linux下软件图形界面

From: http://www.blogjava.net/ivanwan/archive/2012/04/26/376670.html From: http://www.bubuko.com/infodetail-807886.html 安装Xming 和 Putty         看Wiki系统地了解了一下X Window System.X Window System(常被简称为X11或X),是一套基于X display protocol的windowing system,X GUI环境的

linux下多线程,运行显示connect:address already in use

问题描述 linux下多线程,运行显示connect:address already in use linux下多线程,运行显示connect:address already in use 什么情况-- 解决方案 报错信息为,端口被占用. 多线程访问的时候,记得及时的释放链接.并且你可以调一下链接数,调大一些.至少要比你线程数大. 解决方案二: Address already in use: connect解决 Address already in use: connect 的错误Tomcat报