Bitmap myBitmap = new Bitmap(1016,712
System.Drawing.Imaging.PixelFormat.Format8bppIndexed)

解决方案 »

  1.   

    少了一个逗号
    Bitmap myBitmap = new Bitmap(1016,712,System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
    System.Drawing.Imaging.PixelFormat.Format8bppIndexed是设置像素格式,Format8bppIndexed应该是256色,还有另外13种,你可以依次看看
      

  2.   

    jyu_730(阿宇) 
    这个方法我试过,但是画图的时候就不能用 setpixel了,而且不能创建Graphics对象那又如何解决以上2个问题?
      

  3.   

    可以创建Graphics对象呀。
    Graphics gBmp=Graphics.FromImage(myBitmap);
    至于你用setpixel,我不知道你的具体意思,你是直接把一个图象另存为256bmp,还是比较两个图象,取它们的一部分来存??
      

  4.   

    比较两个图象,取它们的一部分来存。所以要用  setpixel啊但是也可以在内存里面比较了再画,就是比较麻烦。我先搞哈你的方法
      

  5.   

    确实不能使用Graphics gBmp=Graphics.FromImage(myBitmap);
    创建对象哈。System.Exception: 无法从带有索引像素格式的图像创建 Graphics 对象。
      

  6.   

    应该是你的程序某个地方有问题
    private void Form1_Paint(object sender,System.Windows.Forms.PaintEventArgs e)
    {
     Graphics gForm = e.Graphics;
    gForm.FillRectangle(Brushes.White, this.ClientRectangle);
    Bitmap bmp = new Bitmap(260, 260,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
    Graphics gBmp = Graphics.FromImage(bmp);//创建对象
    Color red = Color.FromArgb(0x60, 0xff, 0, 0);
    Brush redBrush = new SolidBrush(red);
    gBmp.FillEllipse(redBrush, 70, 70, 160, 160);
    Color green = Color.FromArgb(0x40, 0, 0xff, 0);
    Brush greenBrush = new SolidBrush(green);
    gBmp.FillRectangle(greenBrush, 10, 10, 140, 140);// now draw the bitmap on our window
    gForm.DrawImage(bmp, 20, 20, bmp.Width, bmp.Height);// dispose of all objects that consume resources
    bmp.Dispose();
    gBmp.Dispose();
    redBrush.Dispose();
    greenBrush.Dispose();
    }证明可以创建Graphics对象
      

  7.   

    jyu_730(阿宇) 
    ....我指的是Bitmap构造函数里使用PixelFormat.Format8bppIndexed时,就不能创建Graphics对象
    了我现在就是需要Format8bppIndexed的像素格式~~~~还有没有办法?
      

  8.   

    或者说是怎样把32位图变成256色bmp图~
      

  9.   

    我觉得你可以试下不用setpixel,你可以先getpixel满足条件的像素,再分别得到这些像素的红、绿、蓝,然后赋值给一个color,最后
    Bitmap bmp = new Bitmap(260, 260,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
    Graphics gBmp = Graphics.FromImage(bmp);
    在gBmp对象上用Brush或者Pen画这个像素。
      

  10.   

    PixelFormat.Format8bppIndexed注意这个,我最后要保存位8位图,所以才会有
    System.Exception: 无法从带有索引像素格式的图像创建 Graphics 对象。这个异常。你可以试试.现在的问题就是如何把32位图转化成8位,然后保存的问题了