我很想帮助你的,可那次,你也知道的
思归也来了,可是还是没则!
不过你为什么不从GDI+本身来着手呢?

解决方案 »

  1.   

    public bool W32PolyDraw(GraphicsPath gPath)
    {
    if(gPath != null)
    {
    pf = (PointF[])gPath.PathPoints.Clone();
    bg  = gPath.PathTypes;
    nCount = gPath.PointCount; if(nCount > 1000)
    {
    MessageBox.Show("性能报警!一共点数 : " + nCount.ToString());
    } p = new Point[nCount];
    b = new byte[nCount]; for(int i = 0; i < nCount ; i++)
    {
    p[i] = new Point((int)pf[i].X,(int)pf[i].Y); if(bg[i] == 3)
    {
    b[i] = 0x04;
    }
    else
    {
    b[i] = 0x02;
    }
    }
    b[0] = 0x06;
    if(b[nCount - 2] == 0x04)
    {
    b[nCount - 1] = 0x04;
    }
    else
    {
    b[nCount - 1] = 0x03;
    }

    PolyDraw(hdc, p, b, nCount);
    }
    return true;
    }再帮我看看,我自己想转换的,比较准确了,但在直线我弧线交替时还有一点点不太正确,如何能更准确。
      

  2.   

    预画的时候用GDI32支持的类型,精确不精确根本无所谓,就算你用浮点型来预画也不一定准确,因为象素没有浮点型的。确定的时候把GDI+支持的类型传给GDI+的函数。一句话:为GDI32和GDI+各准备一个类型。
    (GDI+不直接支持XOR真是非常不爽!)