2011-01-20 120 views
21

如何將紅色,綠色和藍色的整數字節值轉換爲十六進制字符串,然後可以將該字符串分配給用於呈現到HTML5畫布上的上下文?在JavaScript中將整數轉換爲十六進制字符串

例如,轉換青色,

var r = 0; 
var g = 255; 
var b = 255; 

爲十六進制的字符串分配到上下文填充顏色。

this.context.fillStyle = '#00FFFF'; 

或者還有更好的方法來完成這個嗎?

回答

16

只需使用RGB值,比如:

this.context.fillStyle = "rgb(0,255,255)"; 
+0

最好的答案總是最簡單的! – 2011-01-20 09:38:43

+0

但是,謝謝所有回答的人,他們都是有趣的答案,對我的知識和理解很有價值。每個+1。 – 2011-01-20 09:41:18

+0

這是跨瀏覽器兼容嗎? – 2011-01-20 09:50:23

0

你可以寫你自己的方法做這種轉換 -

// function to generate the hex code 
function getHex(dec) 
{ 
    var hexArray = new Array("0", "1", "2", "3", 
           "4", "5", "6", "7", 
           "8", "9", "A", "B", 
           "C", "D", "E", "F"); 

    var code1 = Math.floor(dec/16); 
    var code2 = dec - code1 * 16; 

    var decToHex = hexArray[code2]; 

    return (decToHex); 
} 

原始出處 - http://programming.top54u.com/post/Javascript-Convert-Decimal-to-Hex.aspx

1
function pad(number, length) { 
    var str = '' + number; 
    while (str.length < length) str = '0' + str; 
    return str; 
} 

function toRGBHex(r,g,b) { 
    return pad(r.toString(16),2) + pad(g.toString(16),2) + pad(b.toString(16),2); 
} 
24

要轉換數字爲十六進制,可以使用內置的toString(16)函數。 簡單代碼:

function convert(integer) { 
    var str = Number(integer).toString(16); 
    return str.length == 1 ? "0" + str : str; 
}; 

function to_rgb(r, g, b) { return "#" + convert(r) + convert(g) + convert(b); } 

var color = to_rgb(r, g, b); 
11

我認爲,最簡單的方法是:

 
var g = 255; 
g.toString(16); //gives "ff" 

使用,讓語言的功能。

1

若要將各個RGB值轉換爲十六進制顏色,可以使用此功能,但使用"rgb("+r+","+g+","+b+")"代替它更有意義。

function rgbToHex(r,g,b) { 
    return "#"+("00000"+(r<<16|g<<8|b).toString(16)).slice(-6); 
} 
相關問題