关于C#中PictureBox取像素问题 10

我用PictureBox的Graphics对象在PictureBox中进行绘图,然后想取出PictureBox中某一点的像素颜色,请问该如何取?在线等……我使用的是Gra... 我用PictureBox的Graphics对象在PictureBox中进行绘图,然后想取出PictureBox中某一点的像素颜色,请问该如何取?在线等……
我使用的是Graphics对象来绘图的,所以PictureBox对象的Image属性是null,没有办法先将PictureBox的图像转换为Image再获取颜色。
展开
 我来答
zhao791204
2009-08-25 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:85
采纳率:0%
帮助的人:0
展开全部
Bitmap bmp = (Bitmap)pictureBox1.Image;
先将pictureBox1的图像转换成位图图像
Color color = bmp.GetPixel(0, 0);
再用GetPixel方法获取颜色

新代码修改如下

先声明位图对象
Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);

将pictureBox1的图像绘制到位图里
pictureBox1.DrawToBitmap(bmp, new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height));

获取坐标1,1的颜色
MessageBox.Show(bmp.GetPixel(1, 1).ToString());
dkxpsg
2009-08-25 · TA获得超过1628个赞
知道小有建树答主
回答量:592
采纳率:0%
帮助的人:1047万
展开全部
可以用API函数获得

using System.Runtime.InteropServices;

[DllImport("gdi32.dll", EntryPoint = "GetPixel")]
public static extern int GetPixel(int hdc, int x, int y);
private void button1_Click(object sender, EventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();
g.FillRectangle(Brushes.Red, new Rectangle(0, 0, 40, 40));
Point point = pictureBox1.PointToClient(MousePosition);//当前鼠标的位置
IntPtr intptr = g.GetHdc();
int color = GetPixel(intptr.ToInt32(), point.X, point.Y);
Color color2 = Color.FromArgb(color);
g.Dispose();
MessageBox.Show(color2.ToString());
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6eed2f8
2009-08-24 · TA获得超过5082个赞
知道大有可为答主
回答量:3423
采纳率:0%
帮助的人:3811万
展开全部
zhao791204 正解
鉴定完毕
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MiNice
2009-08-24 · 超过19用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:41.7万
展开全部
UP
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式