簡體   English   中英

將X11顯示器轉發到Windows時出現顏色問題

[英]Color issues when forwarding X11 display to Windows

我有一個應用程序,可以逐行地將數據繪制到X11顯示器上,其中每行實際上由不同的顏色像素組成。

我通過使用XCreateImage將數據數組映射到XImage*來做到這XCreateImage 然后,在處理數據時,我用紅色,綠色和藍色值填充XColor變量,並調用XAllocColor分配顏色。 然后,將像素值分配給數據數組中的相應元素。 設置完所有數據后,我使用XPutImage繪制線。

在Linux上運行顯示器時,一切看起來都很好,完全符合預期。 但是,當我通過ssh將X11顯示器轉發到Windows時,顏色都弄亂了。

有任何想法嗎?

編輯

如果我不使用XCreateImageXPutImage並使用XCreateImage XPutImage創建GC ,並使用XDrawPoint ,則效果很好。 似乎與XImage或者使用GC時,該問題已自動解決。

我找到解決方案。 問題似乎源於Windows與Linux相比如何着色。 Windows存儲BGR和BGRA顏色,而Linux存儲RGB和ARGB顏色。 因此,無論何時將顯示器轉到Windows,我都需要在調用XAllocColor之前交換Red和Blue值,之后,我需要將XColorpixel元素乘以256,以將顏色移到alpha分量之外。

有一些與此相關的問題:

  1. 該應用程序無法確定顯示是在Linux還是Windows上呈現的,因此我正在使用環境變量進行測試
  2. 這僅適用於Windows上的32位屏幕深度,如果深度僅為24位(小於我不知道的深度),則忽略乘以256

因此,我實際上是在做一些修改后在“ 編輯”中建議的方法。 主要是,我為初始化期間計划使用的每種顏色創建一個GC ,因此我可以根據需要查找它們,而不必每次都創建它們。 與使用XImage相比,這可以合理地保持性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM