【发布时间】:2011-03-23 19:51:11
【问题描述】:
我有一个应用程序,可以将数据逐行绘制到 X11 显示器上,其中每一行实际上由不同颜色的像素组成。
我通过使用XCreateImage 将数据数组映射到XImage* 来做到这一点。然后在处理数据时,我用红色、绿色和蓝色值填充XColor 变量,并调用XAllocColor 来分配颜色。然后我将像素值分配给数据数组中的相应元素。设置完所有数据后,我使用XPutImage 绘制线条。
在 Linux 上运行显示器时,一切看起来都很棒,完全符合预期。但是,当我通过 ssh 将 X11 显示转发到 Windows 时,颜色都乱了。
有什么想法吗?
编辑
如果我不使用XCreateImage 和XPutImage 并使用我想要的前景色创建GC,并使用XDrawPoint,它就可以正常工作。似乎是XImage 的问题,或者使用GC 时问题会自动解决。
【问题讨论】:
-
您会说您的图像看起来像Wikipedia 中的“不正确的调色板”示例吗?
-
不,据我所知不是索引问题。颜色图是完整的 32 位。此外,就混乱而言,仅显示绿色,蓝色和黑色,但没有红色,根本没有,甚至没有混合(例如也没有紫色)
-
不要放弃 Windows X 服务器中存在错误的可能性。不妨试试不同的 X 服务器软件进行比较。
-
很好地找到它 :) 我建议将解决方案写成答案并选择它,这样将来它会在其他人眼中脱颖而出。
-
我可以按照我在编辑中提到的方式进行操作,但是,这会对性能造成很大影响,所以我尽量避免这样做。
标签: windows linux x11 x11-forwarding