图片问题,二进制流与图片的相互转化。图片增加一点,只须,在二进制流中添加点数据,怎么实现,分不够可以加! 1。我的图片是是随着数据量的 增加会变的很长 。我的意思是先把部分图片转化为二进制数据流
保存在access(注意偶 不能用sql2000),然后 实现图片加长 只要在数据库中增加 该加的数据就可以了
请问这种方案可行吗 ?还有 图片的头尾信息是怎么样的 ,怎么在二进制数据流
中找到所要的部分。
2.重画。遇到的问题是有闪烁。怎么 用双缓冲,还有双缓冲能实现吗?如果重画时间超过0.1s
   
求教高手!!!!!!!!!!!

解决方案 »

  1.   

    参考:
    http://dotnet.aspx.cc/ShowDetail.aspx?id=221BC601-1A1B-4E1F-883D-04B043659703
      

  2.   

    用BitBlt内存拷贝![DllImport("gdi32.dll")]
    public static extern bool BitBlt(IntPtr hObject, int nXDest, int nYDest, int nWidth,
       int nHeight, IntPtr hObjSource, int nXSrc, int nYSrc,  TernaryRasterOperations dwRop);    [DllImport("gdi32.dll", ExactSpelling=true, SetLastError=true)]
    static extern IntPtr CreateCompatibleDC(IntPtr hdc);[DllImport("gdi32.dll", ExactSpelling=true, SetLastError=true)]
    static extern bool DeleteDC(IntPtr hdc);[DllImport("gdi32.dll", ExactSpelling=true, SetLastError=true)]
    static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);[DllImport("gdi32.dll", ExactSpelling=true, SetLastError=true)]
    static extern bool DeleteObject(IntPtr hObject);public enum TernaryRasterOperations
    {
        SRCCOPY     = 0x00CC0020, /* dest = source*/
        SRCPAINT    = 0x00EE0086, /* dest = source OR dest*/
        SRCAND      = 0x008800C6, /* dest = source AND dest*/
        SRCINVERT   = 0x00660046, /* dest = source XOR dest*/
        SRCERASE    = 0x00440328, /* dest = source AND (NOT dest )*/
        NOTSRCCOPY  = 0x00330008, /* dest = (NOT source)*/
        NOTSRCERASE = 0x001100A6, /* dest = (NOT src) AND (NOT dest) */
        MERGECOPY   = 0x00C000CA, /* dest = (source AND pattern)*/
        MERGEPAINT  = 0x00BB0226, /* dest = (NOT source) OR dest*/
        PATCOPY     = 0x00F00021, /* dest = pattern*/
        PATPAINT    = 0x00FB0A09, /* dest = DPSnoo*/
        PATINVERT   = 0x005A0049, /* dest = pattern XOR dest*/
        DSTINVERT   = 0x00550009, /* dest = (NOT dest)*/
        BLACKNESS   = 0x00000042, /* dest = BLACK*/
        WHITENESS   = 0x00FF0062, /* dest = WHITE*/
    };protected override void OnPaint(PaintEventArgs e)
    {
                IntPtr pTarget = e.Graphics.GetHdc();
                IntPtr pSource = CreateCompatibleDC(pTarget);
                IntPtr pOrig = SelectObject(pSource, bmp.GetHbitmap());
                BitBlt(pTarget, 0,0, bmp.Width, bmp.Height, pSource,0,0,TernaryRasterOperations.SRCCOPY);
                IntPtr pNew = SelectObject(pSource, pOrig);
                DeleteObject(pNew);
                DeleteDC(pSource);
                e.Graphics.ReleaseHdc(pTarget);
    }