是这样的,我先画了一个画布,保存为一个。bmp图片(绿色),然后每次刷新时候,我就调用这个底层图片,然后再上面画别的东西,当然颜色不一样!这样可以减少冗余数据的访问。现在有一个问题,当我想获取鼠标点击的颜色的时候,即使它点的是我后画上去的矩形(紫色),但是取得的数据还是底层画布颜色的RGB值(绿色的RGB),请问哪里有问题,怎样解决?谢谢!

解决方案 »

  1.   

     
    //这个是定义,
    private System.Drawing.Bitmap bmp = new Bitmap(697, 4000);
    //对其进行绘画之后,把这个底层保存到C盘下了!
    bmp.Save("C:/1.bmp", System.Drawing.Imaging.ImageFormat.Bmp);//timer运行以后,便开始调用:
     private void timer1_Tick(object sender, EventArgs e)
            {            pictureBox1.Image = Image.FromFile("C:/1.bmp");
                
                using (Graphics g1 = Graphics.FromImage(pictureBox1.Image))
                {
                    drawcar(g1);
                }
                pictureBox1.Refresh();        }
    //然后在drawcar方法里,在1.bmp上继续画东西.
    //新画上去的颜色跟原来的不一样.
    //当鼠标抬起的时候,我就取得到的颜色
    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
            {
            Color myColor = myBitmap.GetPixel(MousePosition.X, MousePosition.Y);
    }
    //可是这个mycolor的颜色,始终取到的都是底层的颜色,就是1.bmp的颜色.即使我已经画上去了新的!
    盼回复,谢谢!不知道我说明白了没有!!!
      

  2.   

    你的 myBitmap是怎么来的?
    这样试试。
    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
            {Color myColor = ((Bitmap)this.pictureBox1.Image).GetPixel(e.X,e.Y); //
           }