[英]Color issues when forwarding X11 display to Windows
我有一個應用程序,可以逐行地將數據繪制到X11顯示器上,其中每行實際上由不同的顏色像素組成。
我通過使用XCreateImage
將數據數組映射到XImage*
來做到這XCreateImage
。 然后,在處理數據時,我用紅色,綠色和藍色值填充XColor
變量,並調用XAllocColor
分配顏色。 然后,將像素值分配給數據數組中的相應元素。 設置完所有數據后,我使用XPutImage
繪制線。
在Linux上運行顯示器時,一切看起來都很好,完全符合預期。 但是,當我通過ssh將X11顯示器轉發到Windows時,顏色都弄亂了。
有任何想法嗎?
編輯
如果我不使用XCreateImage
和XPutImage
並使用XCreateImage
XPutImage
創建GC
,並使用XDrawPoint
,則效果很好。 似乎與XImage
或者使用GC
時,該問題已自動解決。
我找到了解決方案。 問題似乎源於Windows與Linux相比如何着色。 Windows存儲BGR和BGRA顏色,而Linux存儲RGB和ARGB顏色。 因此,無論何時將顯示器轉到Windows,我都需要在調用XAllocColor
之前交換Red和Blue值,之后,我需要將XColor
的pixel
元素乘以256,以將顏色移到alpha分量之外。
有一些與此相關的問題:
因此,我實際上是在做一些修改后在“ 編輯”中建議的方法。 主要是,我為初始化期間計划使用的每種顏色創建一個GC
,因此我可以根據需要查找它們,而不必每次都創建它們。 與使用XImage
相比,這可以合理地保持性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.