2016-12-22 40 views
0

我正在創建C代碼,它必須在多個圖形窗口中以幾種顏色繪製線條和符號。諮詢www我知道我需要使用色彩地圖,但是我無法讓他們工作。 我發現的大部分代碼都是關於創建和填充一個新的色彩地圖,但是我只需要少量的顏色(黃色,紅色,洋紅色......),所以我認爲默認地圖就足夠了。 如何讀取默認顏色映射屏幕中的可用顏色 - > default_colormap? 是否有人能指出我創建一個窗口及其圖形上下文的基本示例,然後在其中繪製(例如)一個綠色圓圈或藍色方塊?xcb庫:如何繪製顏色

回答

0

以下代碼是從我正在處理的項目中提取的幾行代碼,其中我繪製了許多顏色。它適用於我 - 我不是故意說這是最好的,甚至是一個很好的方式,但我只是一個業餘愛好者試圖教我自己,並從我發現的稀少的例子中,這是我拼湊在一起。

check this manpage for: xcb_change_gc(etc.,);

我實際上保持的RGB值的一個簡單的陣列,存儲是uint32_ts,我與繪製。由於我只是爲了自己的滿意而編程,所以我不知道這是否非常便攜。此外,它花了一些試驗來發現顏色的編碼。我相信這是硬件依賴。我認爲色彩地圖的優勢在於它們是便攜的,如果您沒有真實色彩,色彩地圖將幫助您用正確的顏色進行繪製。我個人不需要知道。我只是喜歡用像素或填充矩形來繪製一些數學。

uint32_t rgb = 0xFFFFFFFF; // white on my system 

uint32_t mask = XCB_GC_FOREGROUND, 
      foreground_value = rgb; 

xcb_gcontext_t gc; 

gc = xcb_generate_id(connection); 
xcb_create_gc (connection, gc, drawing_buffer_pixmap, mask, &foreground_value); 

// below, the color of the gc is changed rather than making a new one 

xcb_change_gc(connection, *gc, mask, &foreground_value);