2012-11-13 80 views
11

Điều tôi có là R: 255 G: 181 B: 178 và tôi đang làm việc trong C# (đối với WP8, cụ thể hơn)Chuyển đổi từ RGB int sang Hex

Tôi muốn chuyển đổi điều này thành số hex để sử dụng làm màu (để đặt màu pixel của WriteableBitmap). Những gì tôi đang làm là như sau:

int hex = (255 << 24) | ((byte)R << 16) | ((byte)G << 8) | ((Byte)B<<0); 

Nhưng khi tôi làm điều này, tôi chỉ có màu xanh dương.

Bất kỳ ý tưởng nào tôi đang làm sai?

Ngoài ra, để hoàn tác này, để kiểm tra các giá trị RGB, tôi sẽ:

int r = ((byte)(hex >> 16)); // = 0 
int g = ((byte)(hex >> 8)); // = 0 
int b = ((byte)(hex >> 0)); // = 255 
+0

Có định dạng thập lục phân của một màu được sử dụng trong CSS chẳng hạn. Bạn có nghĩa là? Ví dụ White -> FFFFFF, Blue -> 0000FF? –

+0

Ý bạn là "chỉ nhận được màu xanh" - hiển thị những gì bạn mong đợi và những gì bạn nhận được ... (nghĩa là mã và giá trị hiện tại của bạn sẽ cho FFFFB5B2) –

+0

Ý tôi là, thay vì nhận được màu nào: r: 255, g: 181, b: 178 nên (màu hồng nhạt), tôi chỉ nhận được 0000FF (màu xanh) – Toadums

Trả lời

25
Color myColor = Color.FromArgb(255, 181, 178); 

string hex = myColor.R.ToString("X2") + myColor.G.ToString("X2") + myColor.B.ToString("X2"); 
+1

Hoặc chỉ sử dụng phần ToString ("X2") trên byte – NoPyGod

+0

Bạn nói "chuyển đổi số này thành số hex" nhưng HEX không phải là số, đó là chuỗi được sử dụng để biểu thị số. – NoPyGod

+0

Oh..xin lỗi tôi đoán hex chỉ được sử dụng để làm cho nó dễ dàng hơn cho người sử dụng để xem. Nhưng mảng pixel của bitmap là int [], vì vậy tôi cần số là int (ví dụ: tìm hiểu cách thêm R, G, B) – Toadums

1

Bạn có thể sử dụng một định dạng chuỗi ngắn hơn để tránh concatenations chuỗi.

string.Format("{0:X2}{1:X2}{2:X2}", r, g, b) 
Các vấn đề liên quan