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...");
}
}
}