728x90
반응형
pictureBox1에 로드한 이미지에서 마우스 클릭 시 해당 포인트의 컬러를 lblColor의 배경색으로 변경해 주고, RGB 값과 HEX 값을 텍스트박스에 각각 입력해 주는 코드입니다.
bmp.GetPixel(x, y)
해당 Bitmap의 지정된 픽셀의 색을 가져옴
pointColor.R pointColor.G pointColor.B
컬러의 R, G, B 값을 가져옴
pointColor.Name
컬러의 HEX 값을 가져옴
(ex) ff4a4c4f
C# Color 구조체는 ARGB로 구성이 되어있기 때문에 Hex 값이 8자리입니다.
A(Alpha) 값은 투명도를 나타내는데, 투명도를 제외한 RGB Hex 값만 뿌려주도록 아래와 같이 앞의 두 자리를 제외하고 영문자는 대문자로 나타내도록 했습니다.
pointColor.Name.Substring(2, 6).ToUpper() : ff4a4c4f -> 4A4C4F
1 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
if (pictureBox1.BackgroundImage != null)
{
try
{
//Converting loaded image into bitmap
Bitmap bmp = new Bitmap(pictureBox1.BackgroundImage);
//Get the color at click point
//Get Ratio with PictureBox and Image
//(PictureBox Background Layout = Stretch)
int x = bmp.Width * e.X / pictureBox1.Width;
int y = bmp.Height * e.Y / pictureBox1.Height;
Color pointColor = bmp.GetPixel(x, y);
lblColor.BackColor = pointColor;
txtRgb.Text = $"({pointColor.R}, {pointColor.G}, {pointColor.B})";
txtHex.Text = $"#{pointColor.Name.Substring(2, 6).ToUpper()}";
//(ex) pointColor.Name.Substring(2, 6).ToUpper() : ff4a4c4f -> 4A4C4F
}
catch (Exception ex)
{
MessageBox.Show("Get Color Failed. : " + ex.ToString());
}
}
}
|
cs |
728x90
반응형
'IT > C#' 카테고리의 다른 글
[C#] 파일/폴더명에 입력하면 안되는 문자 제거 (KeyPress vs. Regex) (2) | 2024.03.08 |
---|---|
[C#] Color Converter 만들기. HEX to RGB & RGB to HEX. (39) | 2024.02.16 |
[C#] String 문자열끼리 비교하기. String 문자열 오름차순/내림차순 정렬. List<Struct> 구조체 리스트 오름차순/내림차순 정렬. (10) | 2024.01.26 |
[C#] ComboBox AutoComplete 기능 총정리. 콤보박스 아이템 추가하기+삭제하기+검색하기(자동완성 필터 기능 추가하기). (6) | 2024.01.11 |
[C#] ZedGraph 이용하여 그래프 그리기. NuGet Packages 설치하기. 실시간 그래프 그리기 예시. (0) | 2024.01.10 |