The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

GTK+ 2.0 Tutorial

<<< Previous

Container Widgets

Next >>>


Пропорциональная рамка

Пропорциональная рамка очень похожа на виджет рамка, за исключением того, что стороны виджета имеют определенную пропорцию соотношения ширины и высоты рамки. Это может пригодится при просмотре изображений.  Размер предварительного просмотра должен измениться, когда пользователь изменяет размеры окна, но соотношение сторон должно всегда соответствовать оригинальному изображению.

Создание аспект рамки:

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

xalign и yalign определяют выравнивание как в Alignment widgets. Если obey_child равен TRUE, то пропорции дочернего виджета будут соответствовать коэффициенту сжатия идеального размера. Иначе будет использовано отношение сторон.

Установки можно изменить функцией:

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 ();
    /* При размере она в 200x200, рамка имеет размер 200x100
     * потому, что соотношение установлено в 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 >>>

Frames

Up

Paned Window Widgets






Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру