通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> C#语言 >> 游戏编程 >> 文章正文
DrawDib函数组的使用
责任编辑:admin   更新日期:2005-8-6
sp;        ……
            ReleaseDC(hwnd,hdc);

    下面给出一个实例的关键片段加以说明:(在Visual C++ 4.2 下Windows95或Windows NT环境下通过。)

        void CTestDrawDibView::OnDraw(CDC* pDC)

        {

            CTestDrawDibDoc* pDoc = GetDocument();//得到文档指针

            ASSERT_VALID(pDoc);

            // TODO: add draw code for native data here

            m_DibMem = pDoc->m_Buf;//得到DIB的内存

            if (m_DibMem == NULL)

            {

                //AfxMessageBox("Error in m_DibMem");

                return;

            }

            UINT offset = pDoc->m_Off; //得到DIB数据的偏移

            int xDst,yDst,dxDst,dyDst,xSrc,ySrc,dxSrc,dySrc;

            LPBITMAPINFOHEADER lpbi;

            LPVOID lpDibMem;

            LPVOID lpbits=NULL;

            // get the Windows width & height 得到窗口的宽高

            RECT rect;

            GetClientRect(&rect);

            xDst = yDst = 0;

            dxDst = rect.right - rect.left;

            dyDst = rect.bottom - rect.top;

            // Get Dib info得到DIB的信息

            xSrc = ySrc =0;

            lpDibMem = GlobalLock(m_DibMem);//锁定内存得到指针

            lpbi = (LPBITMAPINFOHEADER)lpDibMem;//得到DIB信息

            dxSrc = lpbi->biWidth;

            dySrc = lpbi->biHeight;

            lpbits = (LPSTR)lpDibMem + offset - sizeof(BITMAPFILEHEADER);

            // Draw Dib绘DIB

            HDC hdc = NULL;

            hdc = pDC->m_hDC;

            /*

            // Using SetDIBToDevice使用SetDIBToDevice函数为对照

            int line = SetDIBitsToDevice(hdc,
                    xDst,
                    yDst,
                    dxSrc,
                    dySrc,
                    xSrc,
                    ySrc,
                    0,
                    dySrc,
                    lpdib,//lpbits,
                    (LPBITMAPINFO)lpbi,
                    DIB_RGB_COLORS);

            if(0 == line)
         {

                AfxMessageBox("Error in SetDIBsToDevice");

            }

            */

            /*

            // Using StretchDIBits使用StretchDIBits函数为对照

            int line = StretchDIBits(hdc,
                    xDst,
               yDst,
               dxDst,
                    dyDst,
                    xSrc,
                    ySrc,
                    dxSrc,
                    dySrc,
                    lpbits,
                    (LPBITMAPINFO)lpbi,
                    DIB_RGB_COLORS,
                    SRCCOPY);

            if(0 == line)

            {

                AfxMessageBox("Error in SetDIBsToDevice");

            }

            */

            // Using DrawDib使用DrawDib

            // Set Dawing flag设置绘制标志

            UINT wFlags;

            //标志意义参见前面的函数参考,以下两个标志可绘出图象,
            //其余标志在这种情况下绘不出图象。

            wFlags = DDF_DONTDRAW;

            //wFlags = DDF_NOTKEYFRAME;

            HDRAWDIB hdd = DrawDibOpen();

            if (hdd != NULL)

            {

                BOOL Suc = TRUE;

&

上一页  [1] [2] [3] [4] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程