それは非常に単純であることが判明しました:
には、スクロールされたウィンドウが使用する必要があるGtkScrolledWindow
を設定するために使用できる別のコンストラクタがあります。GtkAdjustments
//These adjustments will be attached to the scrollbars.
prvt->hAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 0, 0, 0, 0));
prvt->vAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 0, 0, 0, 0));
GtkWidget* scrolledTree = gtk_scrolled_window_new(prvt->hAdjustment, prvt->vAdjustment);
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolledTree), drawing_area);
GTKAdjustments
これで、図面のサイズが変更されるたびに、変更をシミュレートするために を変更するだけで済みます。実際に描画領域のサイズを変更する必要はありません。
gtk_adjustment_set_lower(prvt->hAdjustment, 0);
gtk_adjustment_set_step_increment(prvt->hAdjustment, 1);
gtk_adjustment_set_page_increment(prvt->hAdjustment, 10);
gtk_adjustment_set_upper(prvt->hAdjustment, picture_width);
gtk_adjustment_set_page_size(prvt->hAdjustment, scrollArea_width);
gtk_adjustment_changed(prvt->hAdjustment);
最後に電話gtk_adjustment_changed
することに注意してください。これは重要です。そうしScrolledWindow
ないと、スクロールバーが更新されません。
最後に、 のvalue_changed
コールバックをGtkAdjustmens
使用して、スクロール イベントをキャッチし、描画を調整できます。
GtkScrolledWindow
編集:スクロールイベントも受け取り、画像を移動するため、これは正しく機能しません:(