作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近在我正在开发的一个程序中发现了一些奇怪的行为。
该程序有一个 X11 状态窗口,其中使用写入大量文本
XDrawImageString(d, w, DefaultGC(d, s), x, y, str_to_draw, strlen(str_to_draw));
在一个循环中。没有检查 y 是否离开窗口底部,我一直认为从窗口边缘绘制的东西会被简单地忽略,但是我发现如果尝试将东西绘制到距窗口底部太远的位置窗口,它不会被忽略,而是可以环绕并再次在窗口顶部开始绘制。
可以通过在循环开始时调用 XGetGeometry()
并检查坐标是否超出窗口的尺寸来防止这种行为,更令人担忧的是看来这种环绕不仅会导致屏幕损坏,还会导致偶尔的核心转储。不完全确定核心转储位,但我遇到了一个,我暂时将其归因于此。
问题:
对于传递给 XDrawImageString()
的坐标需要多小心?
对于传递的字符串的长度需要多小心?如果底部有问题,就会引出一个问题:如果您沿右手方向离开边缘,会发生什么。
这个问题的答案在多大程度上依赖于 X11 的实现?
最佳答案
X11 坐标实际上是 16 位,因此如果在任一维度上超过 65535,就会出现环绕(并在处理过程中浪费大量资源)。
关于坐标传递给 XDrawImageString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24325638/
我最近在我正在开发的一个程序中发现了一些奇怪的行为。 该程序有一个 X11 状态窗口,其中使用写入大量文本 XDrawImageString(d, w, DefaultGC(d, s), x, y,
我是一名优秀的程序员,十分优秀!