- 论坛徽章:
- 0
|
回复 #1 AllenYao 的帖子
我在red hat linux 9 gtk+1.2下实现了:
用LZ提到的第二中方法:PNG图片加eventbox
但记住要刷新一次,就行了:
先把原来的数据删除,再填上去,就可以透明了。
//////刷新方法如下
GdkPixmap * gdk_pixmap1 = NULL;
GdkBitmap * mask1;
GtkWidget * pixmap1 =NULL;
GtkWidget *eventbox1;
void chang_button()
{
GtkWidget *oldImage;
GtkWidget *newImage;
GdkBitmap * newMask;
//备份一下原来的
oldImage=GTK_WIDGET(gtk_container_children(GTK_CONTAINER(eventbox1))->data);
newImage=oldImage;
gtk_object_ref( GTK_OBJECT(oldImage) );
//删除
gtk_container_remove(GTK_CONTAINER(eventbox1), oldImage);
//从新加入
gtk_container_add(GTK_CONTAINER(eventbox1), newImage);
//去边框
gtk_widget_shape_combine_mask( eventbox1, mask1, 0, 0 );
//显示
gtk_widget_show(newImage);
} |
|