js_of_ocaml中带有水平滚动条的画布

mms*_*sss 5 ocaml canvas js-of-ocaml

我在js_of_ocaml中创建一个画布,如下所示.

(* create document *) 
let document = Dom_html.window##document

(* function to create canvas *)
let create_canvas () =
let canvas = Dom_html.createCanvas document in
canvas##width  <- 500;
canvas##height <- 500;
canvas

(* create canvas *)
let canvas = create_canvas ()

let start _ =
  let main = get_main () in 
  Dom.appendChild main canvas;
  Js._false in

Dom_html.window##onload <- Dom_html.handler start
Run Code Online (Sandbox Code Playgroud)

我只能看到一个白色的屏幕.
现在,我想在画布上添加一个水平滚动条.
我想我必须制作一个带有水平滚动条的盒子,它比白色画布小,并且白色画布在盒子里.
我怎样才能做到这一点?

ali*_*rat 4

您可以将画布放入宽度小于画布宽度的div中。检查以下代码:

module Html = Dom_html 

let doc = Html.window##document

let create_div () = 
   let div = Html.createDiv doc in 
   div##style##width <- Js.string "500px";
   div##style##overflowX <- Js.string "scroll";
   div 


let create_canvas () =
   let canvas = Dom_html.createCanvas document in
   canvas##width  <- 900;
   canvas##height <- 900;
   canvas

let start _ =
  let main = get_main () in 
  let wrapper = create_div () in 
  let canvas = create_canvas () in 
  Dom.appendChild wrapper canvas; 
  Dom.appendChild main wrapper;
  Js._false in

Dom_html.window##onload <- Dom_html.handler start
Run Code Online (Sandbox Code Playgroud)

此代码是以下 jsfiddle 的 js_of_ocaml 的翻译:https ://jsfiddle.net/pre1wacc/