graphics - OCaml 图形的窗口大小不正确
问题描述
问题说明
使用 OCaml Graphics 模块时,我经常得到一个大小错误的窗口;这不是可预测的行为。显示的窗口始终具有所需的大小,但由于未知原因,OCaml 有时认为它实际上具有不同的大小,从而影响绘图。
可能和窗口系统有关;我在 OS X 上使用 X11 (XQuartz)。
问题的证据
考虑以下顺序:
open Graphics
let f () =
Printf.printf "size_x = %d, size_y = %d\n" (size_x ()) (size_y ())
let () =
open_graph "";
resize_window 500 500;
f ();
Unix.sleepf 0.01
f ();
Unix.sleepf 0.1
f ()
预期结果是一个恒定大小 500x500 的窗口,即:
size_x = 500, size_y = 500
size_x = 500, size_y = 500
size_x = 500, size_y = 500
但我有时也会得到(很有可能)
size_x = 500, size_y = 500
size_x = 600, size_y = 450
size_x = 500, size_y = 500
或者
size_x = 600, size_y = 450
size_x = 500, size_y = 500
size_x = 500, size_y = 500
或者
size_x = 600, size_y = 450
size_x = 600, size_y = 450
size_x = 500, size_y = 500
换句话说,这是一种可变行为,似乎只在窗户打开后的十分之几秒内发生。
无论我打开选项是真还是假auto_synchronize
,结果都是一样的。display_mode
解决方法
我确保至少(或何时关闭)resize_window
遵循所有说明;当然,这不是一个非常令人满意的解决方案……</p>
Unix.sleepf 0.1
synchronize (); Unix.sleepf 0.1
auto_synchronize
解决方案
推荐阅读
- javascript - 如果@ char 在使用javascript的字符串中的大括号内,如何不显示下拉菜单或做出反应?
- python - 从 Pandas 中删除依赖于其他行中的多个值的行
- javascript - 运行 Firebase Firestore 事务,包括异步 React Native 函数中的循环
- python - 在python中使用openCV调整图像大小
- javascript - 如何通过修改 .npmrc 文件在 Travis 上运行 lerna publish?
- machine-learning - 如何使用八度 fminunc 函数优化 theta
- c++ - 为用户定义的文件名指定路径
- c# - C# 创建通用项列表以传递给采用基类的函数
- c# - 使用 dicom Leadtools 读取嵌套元素/序列
- c - 错误:*(int **,int,int,int)' 与 'int ()' 的间接级别不同,我该如何解决?