2010-09-23 54 views
2

這是我的第一個問題,希望我會不夠清楚......比較C中的真彩色像素

我有這個結構提供

typedef struct COLORTRIPLE 
{ 
    byte blue; 
    byte green; 
    byte red; 
} 

它包含在另一個結構類似:

struct color_temp 
{ 
    COLORTRIPLE color; 
    int temp; 
}; 

和(EDIT)

#define PIXEL(image, row, column) \ 
    image.pixel [(row) * image.width + (column)] 

是一個宏。

所以會有PIXEL(bmpin,row,column).red, PIXEL(bmpin,row,column).green and PIXEL(bmpin,row,column).blue

我需要逐個像素地掃描位圖文件,並檢查當前像素是否等於color_temp結構的一種顏色。

我想是這樣的:

if ((PIXEL(bmpin,row,column))==(map[n].color)) 
{...} 

其中

struct color_temp map[] 

是color_temp的載體。

但是cygwin的GCC說:

error:request for member 'color' in something not a struct or a union 

有什麼建議?

感謝

馬克

+0

它是C還是C++?你知道有一個區別。 – 2010-09-23 10:18:42

+1

歡迎來到Stackoverflow。下次請使用編輯框上方的'101010'按鈕來設置代碼的格式,因爲Naveen已經爲您完成了。另外,如果這是一個家庭作業問題,請添加'作業'標籤。 (它會提示人們張貼可幫助您學習的答案,而不是您可以自己翻閱的代碼片段。)然後,確定您的代碼和問題是C還是C++。除了一些語法上的相似之外,這兩者的共同點很少。如果您回覆評論,請不要忘記正確填寫@address人員,因此答覆會顯示在他們的「Aswers」標籤中。並請閱讀常見問題解答。 – sbi 2010-09-23 10:20:38

+0

如果'PIXEL(...)'是一個指針,那麼'PIXEL(...)。red'是壞代碼。什麼是'PIXEL',一個宏? – 2010-09-23 10:25:23

回答

2

試試這個:

int is_pixels_equal (COLORTRIPLE a, COLORTRIPLE b) { 
    return (a.red == b.red && a.green == b.green && a.blue == b.blue); 
} 
+1

不應該是「are_pixels_equal()」嗎? – unwind 2010-09-23 11:07:00

+0

@unwind:無論如何。 P: – 2010-09-28 17:58:40

0

不能直接在C比較結構,它並沒有定義這樣的操作。因此,您必須自己實施它,正如Williham Totland所建議的那樣。有關更多討論,請參閱this question

+0

好吧,我不明白之前:)現在我會嘗試。謝謝! – Madrac 2010-09-23 11:14:33