Project Source Download: http://download.csdn.net/detail/mostone/6360007
- public partial class FormMain : Form
- {
- Bitmap bmpZoom = null;
- Bitmap bmpSrc = null;
- public FormMain()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- try
- {
- DialogResult isDone = openFileDialog1.ShowDialog();
- if (isDone == DialogResult.OK)
- {
- pictureBox1.Image = null;
- pictureBox2.Image = null;
- bmpSrc = null;
- bmpZoom = null;
- Image img = Bitmap.FromFile(openFileDialog1.FileName);
- pictureBox1.Image = img;
- bmpSrc = new Bitmap(img);
- }
- }
- catch (Exception ex)
- {
- pictureBox1.Image = null;
- bmpSrc = null;
- MessageBox.Show(ex.Message);
- }
- }
- private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
- {
- const int zoomSize = 8;
- if (this.bmpSrc == null)
- {
- return;
- }
- bmpZoom = null;
- bmpZoom = new Bitmap(pictureBox2.Width, pictureBox2.Height);
- Graphics grpDst = Graphics.FromImage(bmpZoom);
- // zoom to 8x
- int width = pictureBox2.Width / zoomSize;
- int height = pictureBox2.Height / zoomSize;
- int offsetX = width / 2;
- int offsetY = height / 2;
- int x = e.X - offsetX;
- int y = e.Y - offsetY;
- if (offsetX + e.X >= bmpSrc.Width)
- {
- x = bmpSrc.Width - offsetX * 2;
- }
- else if (x < 0)
- {
- x = 0;
- }
- if (offsetY + e.Y >= bmpSrc.Height)
- {
- y = bmpSrc.Height - offsetY * 2;
- }
- else if (y < 0)
- {
- y = 0;
- }
- Color color;
- int oriX = x;
- for (int row = 0; row < pictureBox2.Height; row += zoomSize)
- {
- if (y >= bmpSrc.Height) break;
- for (int col = 0; col < pictureBox2.Width; col += zoomSize)
- {
- if (x >= bmpSrc.Width) break;
- // get pixel color
- color = bmpSrc.GetPixel(x, y);
- // draw zoom block
- grpDst.FillRectangle(new SolidBrush(color), col, row, zoomSize, zoomSize);
- x++;
- }
- x = oriX;
- y++;
- }
- pictureBox2.Image = bmpZoom;
- }
- private void pictureBox2_MouseClick(object sender, MouseEventArgs e)
- {
- if (bmpZoom == null) return;
- Color color = bmpZoom.GetPixel(e.X, e.Y);
- labelColor.BackColor = color;
- String val = color.ToArgb().ToString("X");
- textBox1.Text = "#" + val.Substring(2);
- textBox2.Text = "#" + rgb565FromColor(color).ToString("X");
- textBox3.Text = "#" + rgb565PFromColor(color).ToString("X");
- }
- private int rgb565FromColor(Color color)
- {
- int val = color.B >> 3 << 11;
- val |= color.G >> 2 << 5;
- val |= color.R >> 3;
- return val;
- }
- private int rgb565PFromColor(Color color)
- {
- int val = color.R >> 3 << 11;
- val |= color.G >> 2 << 5;
- val |= color.B >> 3;
- return val;
- }
- private void button2_Click(object sender, EventArgs e)
- {
- MessageBox.Show(@"Image Color Picker
- by mostone@hotmail.com
- http://blog.csdn.net/mostone
- 2013-10-06", "About...");
- }
- }