比例框架 Aspect Frames@GTK+ 2.0 中文教程连载

比例框架 Aspect Frames

比 例框架构件(The aspect frame widget)和框架构件(frame widget)差不多,除了它还会使子构件的外观比例(也就是宽和长的比例)保持一定值,如果需要,还会在构件中增加额外的可用空间。这很有用,例如,想 预览一个大的图片。当用户改变窗口的尺寸时,预览器的尺寸应该随之改变,但是外观比例要与原来图片的尺寸保持一致。

用下面的函数创建一个新的比例框架:

GtkWidget *gtk_aspect_frame_new( const gchar *label,
gfloat xalign,
gfloat yalign,
gfloat ratio,
gboolean obey_child);

xalignyalign 参数的作用和创建对齐构件(Alignment widgets)时的一样。如果obey_child 参数设置为 TRUE,子构件的长宽比例会和它所请求的理想长宽比例相匹配。否则,比例值由ratio 参数指定。

用以下函数可以改变已有比例框架构件的选项:

void gtk_aspect_frame_set( GtkAspectFrame *aspect_frame,
gfloat xalign,
gfloat yalign,
gfloat ratio,
gboolean obey_child);

在下面的示例中,程序用一个比例框架构件显示一个绘图区,纵横比例总是 2:1,而不管用户如何改变顶级窗口的尺寸。

#include <gtk/gtk.h>

int main( int argc,
char *argv[] )
{
GtkWidget *window;
GtkWidget *aspect_frame;
GtkWidget *drawing_area;
gtk_init (&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Aspect Frame");
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (gtk_main_quit), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);

/* 创建一个比例框架,将它添加到顶级窗口中 */

aspect_frame = gtk_aspect_frame_new ("2x1", /* label */
0.5, /* center x */
0.5, /* center y */
2, /* xsize/ysize = 2 */
FALSE /* ignore child's aspect */);

gtk_container_add (GTK_CONTAINER (window), aspect_frame);
gtk_widget_show (aspect_frame);

/* 添加一个子构件到比例框架中 */

drawing_area = gtk_drawing_area_new ();

/* 要求一个200×200的窗口,但是比例框架会给出一个200×100
* 的窗口,因为我们已经指定了2×1的比例值 */
gtk_widget_set_size_request (drawing_area, 200, 200);
gtk_container_add (GTK_CONTAINER (aspect_frame), drawing_area);
gtk_widget_show (drawing_area);

gtk_widget_show (window);
gtk_main ();
return 0;
}

<<< Previous Home Next >>>
框架 FramesUp 分栏窗口构件 Paned Window Widgets
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值