gdk编程
A. 软件编程专业术语
同学 问这问题 含义太广泛 太多了 软件编程 分 很多种 哦 每种 语言又分 很多 ,像 0 API Application Program Interface (应用程序接口)
1 GDK GIMP Drawing Kit (GIMP 绘图包)
2 GIMP GNU Image Manipulation Program (GNU 图象处理程序)
3 GNOME GNU Network Object Model Environment (GNU 网络对象模型环境)
4 GNU GNU's Not Unix (GNU 不是 Unix)
5 GTK object GTK 对象
6 GTK GIMP Toolkit (GIMP 工具包)
7 GUI Graphical User Interface (图形用户接口)
8 N-ary tree N 叉树
等 都 是专业计算机术语 哦~~
B. 各位大虾,用gtk编程如何让图片缩放,旋转
GTK编程:将图片文件按指定比例显示
/*File:SizeShow.c
*Date:MonMar2715:36:09HKT2015
*Describe:
*Autor:won
*/
#include
#include//指定显示分辨率
#definedest_width320
#definedest_height240
voidshowPic(char*filename)
{
GtkWidget*window;
GtkWidget*image;
constGdkPixbuf*src_pixbuf;
GdkPixbuf*dest_pixbuf;
//创建一个新窗口
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
//读取图片参数
src_pixbuf=gdk_pixbuf_new_from_file(filename,NULL);
//将src_pixbuf设置成屏幕大小
dest_pixbuf=gdk_pixbuf_scale_simple(src_pixbuf,dest_width,dest_height,GDK_INTERP_HYPER);
//从dest_pixbuf中读取图片存于image中
image=gtk_image_new_from_pixbuf(dest_pixbuf);
//设置窗口大小
gtk_window_set_default_size(GTK_WINDOW(window),dest_width,dest_height);
//将图片image加入window容器中
gtk_container_add(GTK_CONTAINER(window),image);
//设置窗口边框宽度
gtk_container_set_border_width(GTK_CONTAINER(window),0);
//显示窗口gtk_widget_show_all(window);
}
intmain(intargc,char*argv[])
{
gtk_init(&argc,&argv);
showPic(argv[1]);
gtk_main();return0;
}
C. GTK+编程用什么函数实现窗口的最大化\最小化控制
自定义调函数捕捉化化信号用自函数进行处理行 #include #include gtk.h> void callback(gpointer data) { GtkWidget *window=GTK_WIDGET(data); switch(gdk_window_get_state(GDK_WINDOW(window->window))) { case 一<<0/* GDK_WINDOW_STATE_WITHDRAWN*/: printf("GDK_WINDOW_STATE_WITHDRAWN:the window is not shown.\n");break; case 一<<一/* GDK_WINDOW_STATE_ICONIFIED*/: printf("GDK_WINDOW_STATE_ICONIFIED:the window is minimized.\n");break;//化处理 case 一<<二/* GDK_WINDOW_STATE_MAXIMIZED*/: printf("GDK_WINDOW_STATE_MAXIMIZED:the window is maximized.\n");break;//化处理 case 一<<三/* GDK_WINDOW_STATE_STICKY*/: printf("GDK_WINDOW_STATE_STICKY:the window is sticky.\n");break; case 一<<四/* GDK_WINDOW_STATE_FULLSCREEN*/: printf("GDK_WINDOW_STATE_FULLSCREEN:the window is maximized without decorations.\n");break; case 一<<5/* GDK_WINDOW_STATE_ABOVE*/: printf("GDK_WINDOW_STATE_ABOVE:the window is kept above other windows. \n");break; case 一<<陆/* GDK_WINDOW_STATE_BELOW*/: printf("GDK_WINDOW_STATE_BELOW:the window is kept below other windows. \n");break; default:break; } } int main(int argc,char *argv[]) { gtk_init(&argc,&argv); GtkWidget *window; window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show(window); g_signal_connect_swapped(window,"window_state_event", G_CALLBACK(callback),window); gtk_main(); return 一; }
D. gtk拖放打开文件 在下想用Gtk实现类似于vc编程里的WM_DROPFILES功能,请G
我不清楚VC是如何的,拖放文件打开,是从GNOME的文件管理器naulitus中拖的吗。
我实现了一个简单的,不知道是不是你要的。
这个程序可以从naulitus中拖一个文件到窗口的GtkEntry中,

源代码如下,如果有什么问题再问吧。
#include <gtk/gtk.h>
/* 必须有这个,不然on_drag_data_received会调用两次
* 具体为什么我也不清楚,暂时就用这个方法来屏蔽掉一次
*/
static gboolean on_drag_drop()
{
return TRUE;
}
static void on_drag_data_received(GtkWidget *widget,
GdkDragContext *context,
gint x,gint y,
GtkSelectionData *data,
guint info,
guint time,
gpointer user_data)
{
GdkAtom atom=gtk_selection_data_get_data_type(data);
if(gtk_targets_include_uri(&atom,1)){
gchar **uris=gtk_selection_data_get_uris(data);
gint i=0;
while(uris[i]!=NULL){
g_printf("%s
",uris[i]);
i++;
}
gtk_entry_set_text(GTK_ENTRY(widget),uris[0]);
/* 使用默认程序打开 */
g_app_info_launch_default_for_uri(uris[0],NULL,NULL);
g_strfreev(uris);
}
gtk_drag_finish(context,TRUE,TRUE,time);
}
int main(int argc,char *argv[])
{
gtk_init(&argc,&argv);
GtkWidget *window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window),380,160);
g_signal_connect(G_OBJECT(window),"destroy",
G_CALLBACK(gtk_main_quit),NULL);
GtkWidget *entry=gtk_entry_new();
GtkTargetEntry targets={
"text/uri-list",
GTK_TARGET_OTHER_APP,
1
};
gtk_drag_dest_set(entry,
GTK_DEST_DEFAULT_DROP,
&targets,1,
GDK_ACTION_COPY);
g_signal_connect(G_OBJECT(entry),"drag-data-received",
G_CALLBACK(on_drag_data_received),NULL);
g_signal_connect(G_OBJECT(entry),"drag-drop",
G_CALLBACK(on_drag_drop),NULL);
gtk_container_add(GTK_CONTAINER(window),entry);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
