2009-04-24 10 views

답변

35

경우 자사의 HTML 페이지에 대한 문자열로 #RRGGBB 태그를 저장하는 것은 아마 충분하다.

그것의 .NET 용, 그것의 ARGB 값

System.Drawing.Color c = System.Drawing.Color.FromArgb(int); 

int x = c.ToArgb(); 

그래서 당신은 단지 저장할 수있는 INT에서 색상을 작성을 지원합니다.

+1

주목해야 할 것은 System.Drawing.Color에는 해당되지만 System.Windows.Media.Color에는 해당하지 않습니다. ToArgb() 메서드가 없습니다. I는 각 구성 요소에 대해 별개의 바이트 값을 예상하고 그 FromArgb() 메소드에 전달 된 값을 얻기 위해 toString() 메서드에서 #AARRGGBB 값을 저장하고, 각 부에 byte.Parse (값 NumberStyles.HexNumber)을 이용하여 결국 . – Zannjaminderson

13

아마도 색상 값이 가장 좋을 것입니다. #FFFFFF 또는 # FF0000

+11

하거나 FFFFFF 또는 FF0000의 # 모든 색상 문자열 # 당신의 불필요한 데이터를 저장하는 의미로 시작됩니다 DB에 가지 불필요한입니다. – BenAlabaster

0

색상이 웹 색상으로 제한되어 있다면 16 진수 표기법을 사용하겠습니다.

예 : 파란색은 # 0000FF입니다. 여기

상세 정보 : http://en.wikipedia.org/wiki/Web_colors

12

HTML/CSS와 같이 색상을 # FF00CC와 같이 24 또는 32 비트 정수로 저장하지만 문자열이 아닌 정수로 변환됩니다.

정수는 문자열 (특히 VCHAR)보다 적은 공간을 차지합니다. int로

사용 ToArgb 및 FromArgb 등

+14

공간이 너무 작아서 인간이 읽을 수 있지만 약간 큰 방식으로 계속 쓰려는 경향이 있습니다. – ceejayoz

+1

또한 색상 문자열의 크기는 항상 7 자 (#RRGGBB)이므로 VARCHAR이 아닌 CHAR (7)을 사용하십시오. –

+6

왜 그것을 16 진수로 저장하고 #? 헥스 자체는 사람이 읽을 수있는 형태로 동일하며, 그들은 모두, 그래서 그냥 소프트웨어를 앞에 추가, 어쨌든 #으로 시작해야 ... – BenAlabaster

3

스토어는 설정 값을 얻을 수 있습니다.

-2

둘 다 사용하지 않는 이유는 무엇입니까? 테이블 구조는 키에 대해 Int ARGB가되고 이름에 대해 varchar가됩니다.

ARGB (Key), Name 
FFFFFFFF ,Black 
FF000000 ,White 
+4

... 일치하지 않는 값 (검은 색은 흰색, 검은 색은 흰색)으로 인해 문이 열리기 때문입니다. –

+2

정치가 또는 얼룩말에게 알리기 – MrTelly

1

는 I는 3 열 컬러 룩업 테이블을 갖는 제안 :

ID의 지능; 이름 varchar (40) null; ColorVal의 문자 (8) 또는 익명의 색상에 대한 INT (어떻게 표현하고 색상에 따라)

은 당신의 색상을 저장하기 위해 무엇을 찾고있다 형식

0

널 이름도 경기장을 떠나지? CMTK, RGB, Pantone? 다소 도움이 될 것입니다. 엄격하게 #RGB 16 진수 형식은 웹 색상이나 응용 프로그램에 적합하지만 페인트를 섞으려는 경우에는 그리 좋지 않습니다.

3

나는 그것이 달려 있다고 생각합니다. 색상을 저장하기 만하면 16 진수 표기법을 사용하면됩니다. 특정 색상 채널에 대해 검색어를 수행해야하는 경우 각 색상 채널 (RGB, ARGB, CYMK 등)에 대해 작은 입력란을 원할 수 있습니다.

간단한 저장을 위해 간단하게 유지하십시오. 분석을 수행해야하는 경우 문제 도메인에서 지시 한 대체 옵션을 고려해야합니다.

0

나는 char (9)로 저장한다.

  • 는 '#'를 포함 - 기호를 내가 코드를 붙일 즉시 대신 NCHAR
  • 를 저장, 투명성
0

으로의

  • 일반 문자를 사용하지 않도록 데이터베이스에 색상을 저장 : 또한

     //Save this int value in database 
        int argb = colorDialog1.Color.ToArgb(); 
    

    및 데이터베이스 사용에서 그것을 retireve하기 :

    //argb is the value of color stored in database in prev. section 
        Color.FromArgb(argb) 
    
  • 8

    이상적인 저장 형식은 데이터베이스 사용 계획에 따라 다릅니다.

    가장 간단한 해결책은 물론 모든 형식을 지원하지 않고 모든 것을 RGB 색상의 6 바이트 ASCII 16 진수 문자열로 저장합니다. 나중에 추가 형식을 지원하려는 경우 문제가 발생할 수 있습니다.

    가독성, 유연성 및 액세스 용이성을 위해 일반 문자열을 사용하는을 사용하는 것이 좋습니다. 대부분의 경우 16 진수 색상 문자열과 원시 정수 사이의 저장 공간 차이는 무시할 수 있습니다. 속도 향상을 위해 색인을 생성 할 색상 필드를 설정할 수 있습니다. 그리고 유연성을 위해, 당신은 다음과 같은 기능 중 하나 이상을 추가 할 수 있습니다 : NULL, 빈, 무효

  • 가 FF 가정, 선택적 후행 알파 바이트 00-FF에 동의하면

    • 는 상황에 맞는 기본 색상을 가정 (불투명 지원
    • 지원은 일반적인 옵션 #로 자리를) 생략하는 경우
    • 전체 (AABBCC 모두 수락)의 절반 크기 속기 (ABC) 구문을 빠르게 입력 할 수 및 CSS
    • 지원 원시 문자열, "rgba (255,255,255,1)"또는 "red"와 같은 CSS 지원을 보유합니다.
    • "cmyk(), hsv(), hsl(), lab()"등과 같은 사용자 정의 색상 모드 문자열 지원
    • #으로 시작하거나 길이가 3 인 경우 RGB (A) , 4, 6, 8은 포함 [0-9A-FA-F]

    을 검색하고 정렬 속도뿐만 아니라 디스크의 사용을 최적화 부호없는 정수로 저장하는 갈 방법이며 . 이는 하나의 숫자가 문자열보다 검색이 빠르며 내부적으로 몇 비트만큼 저장할 수 있고 FromArgb() 및 유사한 기능을 사용하여 쿼리의 색상 채널을 기준으로 필터링 할 수 있기 때문입니다. 단점은 코드가 모든 쿼리에서 모든 색상 필드에 대해 앞뒤로 물건을 끊임없이 변환해야한다는 것입니다. 따라서 실제로 데이터베이스 속도를 상쇄 할 수 있습니다.

    하이브리드 접근 방식은 살펴볼 가치가 있습니다. 예를 들어, id, rgbhex, cssname, cmyk, hsl, hsv, lab, rgb 등의 필드로 구성되는 모든 가능한 8 비트/채널 RGB 값의 테이블을 생각해보십시오. 그러한 테이블의 생성은 너무 커서 (16777216 개 항목). 테이블에 16MB 이상을 추가 할 수 있지만이 솔루션의 장점은 모든 색상 값이 색상 조회 테이블에 외래 키와 연결된 단일 정수 ID 필드 일 뿐이라는 것입니다. 빠른 정렬 및 검색, 변환없이 필요한 모든 색상 데이터 및 확장 성이 뛰어납니다.테이블을 자체 데이터베이스 파일에 보관하여 응용 프로그램의 다른 데이터베이스 나 스크립트와 공유 할 수도 있습니다. 틀림없이이 솔루션은 대부분의 경우 과잉입니다. 이 양식에 저장하는 경우로

  • 관련 문제