Gnocanvas.canvas在Lablgtk2中的窗口上进行坐标

时间:2014-07-30 08:32:12

标签: window gtk ocaml

我正在使用Lablgtk2。 我想通过使用GnoCanvas模块显示500x400窗口,所以我写如下。

let window = GWindow.window ~show:true ~width:500 ~height:400 () in
let canvas = GnoCanvas.canvas ~width:500 ~height:400 () in
ignore(GnoCanvas.rect 
         ~props:[`FILL_COLOR "#ffffff";`X1 0.;`Y1 0.;`X2 500.;`Y2 400.]
                                                           canvas#root); 

window#add (canvas#coerce);
window#show ();
GMain.Main.main ()

我认为显示了500x400的白色窗口,但是显示500x400窗口,右下方有300x250的白色矩形。 我认为画布的坐标(0,0)是窗口处的坐标(200,150)。 我无法理解为什么它应该如此以及代码有什么问题。 请告诉我收集代码。

1 个答案:

答案 0 :(得分:1)

Gnome canvas使用three coordinate systems。为了确保世界坐标系与像素一一对应,请考虑使用这两种画布方法:set_pixels_per_unitset_scroll_region。我没有对它进行测试,但执行以下操作可以提供帮助:

canvas#set_pixels_per_unit 1.0;
canvas#set_scroll_region 0 0 500 400;