当鼠标点击 PictureBox 中的图象的某一点时,
1.提取出这一点的颜色值?
2.统计这个颜色点整个图片面积的比例?如能解决以上二个问题,再设一帖 再给100分,不够再加!!!!

解决方案 »

  1.   

    1。把PictureBox 图象转成 Bitmap 类型,再用Bitmap.GetPixel 方法获取此 Bitmap 中指定像素的颜色2。把PictureBox 图象转成 Bitmap 类型,再用Bitmap.GetPixel 方法获取此 Bitmap 中指定像素的颜色
    再指针循环Bitmap类型比较
    参考:
    Bitmap bitmap = new Bitmap( CImage.Width, CImage.Height, PixelFormat.Format32bppArgb );
    Rectangle rect = new Rectangle( 0, 0, CImage.Width, CImage.Height );
    BitmapData bitmapData = bitmap.LockBits( rect, ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb );
    int* colorData = (int*) bitmapData.Scan0.ToPointer();
    for( int i = 0; i < CImage.Width * CImage.Height; i ++ ) 
    {

    int r = Math.Min( 255, Math.Max( 0, (int)  _dataR[ i ].GetModulus() )  );
    int g = Math.Min( 255, Math.Max( 0, (int)  _dataG[ i ].GetModulus() )  );
    int b = Math.Min( 255, Math.Max( 0, (int)  _dataB[ i ].GetModulus() )  );
    colorData[ i ] = Color.FromArgb( r, g, b ).ToArgb();
    }
    bitmap.UnlockBits( bitmapData );
      

  2.   

    鼠标 事件如何处理?能不能再详细一些,就是当鼠标移到PictureBox某一点点击,然后取出颜色值,这个事件如何写?
      

  3.   

    private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    Bitmap bitmap = (Bitmap)this.pictureBox1.Image; Color color = bitmap.GetPixel(e.X, e.Y);
    this.textBox1.Text = color.Name;
    }
      

  4.   

    this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseMove);
    ....
    private void pictureBox_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    label1.Text="X: "+e.X.ToString()+" ,Y: "+(e.Y.ToString();}是这样写吗?我这样写,鼠标移到PictureBox 中,就不显示坐标值啦?
      

  5.   

    领分帖: http://community.csdn.net/Expert/TopicView1.asp?id=4414305 
    问题还没解决,秋天的云 能否把代码给完全一些。谢谢。
      

  6.   

    谢谢秋天的云,我现在就差解决 面积比例统计这块啦,你给我的那段代码中:
    int r = Math.Min( 255, Math.Max( 0, (int)  _dataR[ i ].GetModulus() )  );
    int g = Math.Min( 255, Math.Max( 0, (int)  _dataG[ i ].GetModulus() )  );
    int b = Math.Min( 255, Math.Max( 0, (int)  _dataB[ i ].GetModulus() )  );
    colorData[ i ] = Color.FromArgb( r, g, b ).ToArgb();
    这段中的 _dataG[i]是如何来的?而且我在调试时说:指针只能用于不安全的上下文中 这个错误,说指针错误!!!你现在帮我研究一下,就是统计某颜色所占总面积的比例,狂谢。
      

  7.   

    GetPixelColor取到值, 根据你的图片具体情况设置一个容错值,对于位图,按像素遍历,比较2颜色值在容错范围内则认为是"同种颜色". 如果需要精确相等,则简单得多,直接用==,不过建议还是用容错,精确相等时候把容错值设为0就好,这样以后也方便扩展.
      

  8.   

    pbooter(薄雾轻寒) 你的信箱多少?
      

  9.   

    http://gyf19.cnblogs.com/archive/2005/11/24/283978.html