위에서 단축기 c를 누를때마다 마우스를 대고 있는 곳의 색깔을 리스트박스에 아이템을 추가해서 Hexcode를 나타내도록 해놓았는데 추가할때마다 해당 아이템의 배경 색을 저 hexcode에 맞춰서 바꾸고 싶은데 어떻게 바꾸나요??
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Color_Picker
{
public partial class mainForm : Form
{
public mainForm()
{
InitializeComponent();
screen_timer.Enabled = true;
Load += mainForm_Load;
FormClosing += mainForm_FormClosing;
KeyDown += mainForm_KeyDown;
}
private void screen_timer_Tick(object sender, EventArgs e)
{
Size size = new Size(screen.Width, screen.Height);
Bitmap bitmap = new Bitmap((int)(size.Width), (int)(size.Height));
Graphics graphics = Graphics.FromImage(bitmap);
graphics.CopyFromScreen(MousePosition.X -50, MousePosition.Y - 50, 0, 0, size, CopyPixelOperation.SourceCopy);
screen.Image = bitmap;
xPosition.Text = "X: " + MousePosition.X.ToString();
yPosition.Text = "Y: " + MousePosition.Y.ToString();
}
private void screen_Paint(object sender, PaintEventArgs e)
{
var g = e.Graphics;
g.DrawLine(Pens.Red, 50, 100, 50, 0);
g.DrawLine(Pens.Red, -50, 50, 100, 50);
g.DrawLine(Pens.Red, 0, 0, 100, 0);
g.DrawLine(Pens.Red, 0, 0, 0, 100);
g.DrawLine(Pens.Red, 0, 99, 99, 99);
g.DrawLine(Pens.Red, 99, 0, 99, 99);
}
private void screen_color_Paint(object sender, PaintEventArgs e)
{
var g = e.Graphics;
g.DrawLine(Pens.Red, 0, 0, 100, 0);
g.DrawLine(Pens.Red, 0, 0, 0, 100);
g.DrawLine(Pens.Red, 0, 49, 99, 49);
g.DrawLine(Pens.Red, 99, 0, 99, 99);
}
private delegate void SetColorDelegate(int x, int y, Color color);
private Thread thread;
private void mainForm_Load(object sender, EventArgs e)
{
this.thread = new Thread(new ThreadStart(ProcessThread));
this.thread.Start();
}
private void mainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (this.thread != null && this.thread.IsAlive)
{
this.thread.Abort();
}
}
private Color GetMousePointColor(Point mousePoint)
{
Size size = new Size(1, 1);
Bitmap bitmap = new Bitmap(1, 1);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.CopyFromScreen(mousePoint.X, mousePoint.Y, 0, 0, size);
return bitmap.GetPixel(0, 0);
}
private string GetHexadecimalString(int value)
{
byte[] byteArray = BitConverter.GetBytes(value);
int byteArrayLength = byteArray.Length;
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < byteArrayLength; i++)
{
stringBuilder.Append(byteArray[i].ToString("X2"));
}
return stringBuilder.ToString();
}
private void SetColor(int x, int y, Color color)
{
if (InvokeRequired)
{
SetColorDelegate setColorDelegate = new SetColorDelegate(SetColor);
Invoke(setColorDelegate, x, y, color);
}
else
{
this.rgb_R.Text = "R: " + color.R.ToString();
this.rgb_G.Text = "G: " + color.G.ToString();
this.rgb_B.Text = "B: " + color.B.ToString();
this.screen_color.BackColor = color;
this.hexcode.Text ="#" + GetHexadecimalString(color.R).Substring(0, 2) + GetHexadecimalString(color.G).Substring(0, 2) + GetHexadecimalString(color.B).Substring(0, 2);
}
}
private void ProcessThread()
{
while (true)
{
Point mousePoint = Control.MousePosition;
int x = mousePoint.X;
int y = mousePoint.Y;
Color color = GetMousePointColor(mousePoint);
SetColor(x, y, color);
}
}
private void mainForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.C)
{
color_list.Items.Add(hexcode.Text);
}
}
private void 화면모드ToolStripMenuItem_Click(object sender, EventArgs e)
{
if(화면모드ToolStripMenuItem.Checked == false)
{
화면모드ToolStripMenuItem.Checked = true;
this.BackColor = Color.FromArgb(50, 50, 50);
menuBar.BackColor = Color.FromArgb(50, 50, 50);
옵션ToolStripMenuItem.ForeColor = Color.White;
색목록ToolStripMenuItem.ForeColor = Color.White;
도움말ToolStripMenuItem.ForeColor = Color.White;
rgb_R.ForeColor = Color.White;
rgb_B.ForeColor = Color.White;
rgb_G.ForeColor = Color.White;
hexcode.ForeColor = Color.White;
xPosition.ForeColor = Color.White;
yPosition.ForeColor = Color.White;
}
else
{
화면모드ToolStripMenuItem.Checked = false;
this.BackColor = Color.White;
menuBar.BackColor = Color.FromArgb(240, 240, 240);
옵션ToolStripMenuItem.ForeColor = Color.Black;
색목록ToolStripMenuItem.ForeColor = Color.Black;
도움말ToolStripMenuItem.ForeColor = Color.Black;
rgb_R.ForeColor = Color.Black;
rgb_B.ForeColor = Color.Black;
rgb_G.ForeColor = Color.Black;
hexcode.ForeColor = Color.Black;
xPosition.ForeColor = Color.Black;
yPosition.ForeColor = Color.Black;
}
}
}
}