我正在处理一个 .NET C# 项目,我想在单击图片框时获取像素值,我该如何实现?
基本思想是当我点击图片框的任何地方时,我得到那个图像点的像素值..
谢谢!
最佳答案
正如@Hans 指出的那样,Bitmap.GetPixel
应该可以工作,除非您的 SizeMode
不同于 PictureBoxSizeMode.Normal 或 PictureBoxSizeMode.AutoSize
。为了让它一直工作,让我们访问名为 ImageRectangle
的 PictureBox
的私有(private)属性。
PropertyInfo imageRectangleProperty = typeof(PictureBox).GetProperty("ImageRectangle", BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Instance);
private void pictureBox1_Click(object sender, EventArgs e)
{
if (pictureBox1.Image != null)
{
MouseEventArgs me = (MouseEventArgs)e;
Bitmap original = (Bitmap)pictureBox1.Image;
Color? color = null;
switch (pictureBox1.SizeMode)
{
case PictureBoxSizeMode.Normal:
case PictureBoxSizeMode.AutoSize:
{
color = original.GetPixel(me.X, me.Y);
break;
}
case PictureBoxSizeMode.CenterImage:
case PictureBoxSizeMode.StretchImage:
case PictureBoxSizeMode.Zoom:
{
Rectangle rectangle = (Rectangle)imageRectangleProperty.GetValue(pictureBox1, null);
if (rectangle.Contains(me.Location))
{
using (Bitmap copy = new Bitmap(pictureBox1.ClientSize.Width, pictureBox1.ClientSize.Height))
{
using (Graphics g = Graphics.FromImage(copy))
{
g.DrawImage(pictureBox1.Image, rectangle);
color = copy.GetPixel(me.X, me.Y);
}
}
}
break;
}
}
if (!color.HasValue)
{
//User clicked somewhere there is no image
}
else
{
//use color.Value
}
}
}
希望对你有帮助
关于c# - 单击图片框时获取 PixelValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18210030/