以下gtk+编程例子是来自书籍《实用技术:开发Linux应用——用GTK+和GDK开发Linux图形用户界面应用》第92页的内容——框架
设置框架标签居中的坐标是0.5,0,这个知识没有太大难度,容易理解 从网上搜索关于中国水电站的图片统一修改成400X300的格式 gimp——文件——打开——找到hydroelectric01.jpg gimp——图像——缩放图像——高度输入300后马上回车,注意是高度高度——缩放 gimp——图像——画布大小——单击宽度输入框右旁边的圆形针图标让它上下开裂,意思是不锁定宽高的比例——宽度输入400后马上回车,注意是宽度宽度——单击按住中间图片左右拖动,选取合适满意的部分——改变大小 gimp——图像——平整图像 gimp——文件——保存——保存 注意是先缩放图像改变高度,再画布大小改变宽度,最后平整图像,一定要按着这个顺序修改
在openSUSE-Leap-15.3-DVD-x86_64的gnome3.34.7桌面环境下编译的,其中pkg-config --cflags --libs gtk±3.0两边有反引号括起来的 ruhong@localhost:~/gtk> gcc page92.c -o page92 pkg-config --cflags --libs gtk±3.0 ruhong@localhost:~/gtk> ./page92
#include <gtk/gtk.h>
int main( int argc, char *argv[] )
{
GtkWidget *window;
GtkWidget *hbox;
GtkWidget *frame1;
GtkWidget *image1;
GtkWidget *frame2;
GtkWidget *image2;
GtkWidget *frame3;
GtkWidget *image3;
GtkWidget *frame4;
GtkWidget *image4;
GtkWidget *frame5;
GtkWidget *image5;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "水电站hydroelectric station");
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 50);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add (GTK_CONTAINER (window), hbox);
frame1 = gtk_frame_new ("向家坝水电站");
gtk_frame_set_label_align (GTK_FRAME (frame1), 0, 0);
gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_IN);
image1 = gtk_image_new_from_file("./hydroelectric01.jpeg");
gtk_container_add (GTK_CONTAINER (frame1), image1);
gtk_box_pack_start (GTK_BOX (hbox), frame1, FALSE, FALSE, 10);
frame2 = gtk_frame_new ("乌东德水电站");
gtk_frame_set_label_align (GTK_FRAME (frame2), 0, 0);
gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_OUT);
image2 = gtk_image_new_from_file("./hydroelectric02.jpeg");
gtk_container_add (GTK_CONTAINER (frame2), image2);
gtk_box_pack_start (GTK_BOX (hbox), frame2, FALSE, FALSE, 10);
frame3 = gtk_frame_new ("白鹤滩水电站");
gtk_frame_set_label_align (GTK_FRAME (frame3), 0.5, 0);
gtk_frame_set_shadow_type (GTK_FRAME (frame3), GTK_SHADOW_IN);
image3 = gtk_image_new_from_file("./hydroelectric03.jpeg");
gtk_container_add (GTK_CONTAINER (frame3), image3);
gtk_box_pack_start (GTK_BOX (hbox), frame3, FALSE, FALSE, 10);
frame4 = gtk_frame_new ("溪洛渡水电站");
gtk_frame_set_label_align (GTK_FRAME (frame4), 1, 0);
gtk_frame_set_shadow_type (GTK_FRAME (frame4), GTK_SHADOW_OUT);
image4 = gtk_image_new_from_file("./hydroelectric04.jpeg");
gtk_container_add (GTK_CONTAINER (frame4), image4);
gtk_box_pack_start (GTK_BOX (hbox), frame4, FALSE, FALSE, 10);
frame5 = gtk_frame_new ("三峡水电站");
gtk_frame_set_label_align (GTK_FRAME (frame5), 1, 0);
gtk_frame_set_shadow_type (GTK_FRAME (frame5), GTK_SHADOW_NONE);
image5 = gtk_image_new_from_file("./hydroelectric05.jpeg");
gtk_container_add (GTK_CONTAINER (frame5), image5);
gtk_box_pack_start (GTK_BOX (hbox), frame5, FALSE, FALSE, 10);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
效果图如下
|