当前位置: 首页 > news >正文

济南网站建设公司熊掌号/收录情况

济南网站建设公司熊掌号,收录情况,培训前端开发,广州工商注册地址最近因为工作需要大量的绘制图形,为了提高效率,特提出以下设想: 考虑使用 IDirectDraw7 和 IDirectDrawSurface7 作为绘图背景,其中 1、使用主表面和后背表面,后背表面用来合成图片,主表面仅用来显示图片 2…

最近因为工作需要大量的绘制图形,为了提高效率,特提出以下设想:

考虑使用 IDirectDraw7 IDirectDrawSurface7 作为绘图背景,其中

1、使用主表面和后背表面,后背表面用来合成图片,主表面仅用来显示图片

2、背景图使用一个单独的表面进行绘制,设置透明色,或者背景填充为地图的底色

3、设备图层使用一个单独的表面进行绘制,设置透明色(SetColorKey);

4、绘图操作可以使用 GDI+ ,通过 Graphics 挂接绘图表面的 HDC

 

当主表面需要绘制时:

1、初始化背景表面的背景色为地图的底色;

2、将背景表面叠加到后背表面上;

3、将设备表面叠加到后背表面上;

4、翻转后背表面到主表面上;

当然首先第一步就是做一个简单的程序测试效率,结果大出我的意料之外,测试结果如下:
1、使用 GDI+ (没有启动窗口模式的 DirectDraw) , 绘制一万次四个点的折线平均耗时:2740 毫秒
2、使用 GDI   (没有启动窗口模式的 DirectDraw) ,绘制一万次四个点的折线平均耗时:265 毫秒
3、使用 GDI+ (启动窗口模式的 DirectDraw) ,绘制一万次四个点的折线平均耗时:6957 毫秒
4、使用 GDI   (启动窗口模式的 DirectDraw) ,绘制一万次四个点的折线平均耗时:234 毫秒
怎么使用 GDI+ 比使用 GDI 的效率差这么多,并且使用窗口模式 DirectDraw (非全屏模式)对 GDI 的效率提高不大,但是对 GDI 的效率则是一个很大的影响;这让人实在是想不明白,最终不得不放弃了这个想法,只好使用最原始的作法:使用 GDI 函数在窗口的 DC 上进行绘图;下面是测试的代码:

ContractedBlock.gifExpandedBlockStart.gif测试代码片段

#define TEST_DIRECT_DRAW
#define TEST_GDI_PLUS

LRESULT CDDraw1View::OnPaint(UINT 
/*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
    CPaintDC dcPaint(m_hWnd);
    HDC hDC 
= dcPaint.m_hDC ;

#if defined( TEST_DIRECT_DRAW )

    HRESULT hr 
= S_OK;

    
if! spDirectDraw )
    {
        hr 
= DirectDrawCreateEx( NULL , (LPVOID*)& spDirectDraw , IID_IDirectDraw7 , NULL );
        spDirectDraw
->SetCooperativeLevel( m_hWnd , DDSCL_NORMAL );
    }

    
if! spDirectDrawSurface )
    {
        DDSURFACEDESC2 xSurfaceDesc 
= { sizeof( DDSURFACEDESC2 ) , 0 };

        xSurfaceDesc.dwFlags 
= DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH ; // DDSD_BACKBUFFERCOUNT
        xSurfaceDesc.ddsCaps.dwCaps = 0;//DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX ;
        
//xSurfaceDesc.dwBackBufferCount = 1;

        RECT rcClient; GetClientRect( 
& rcClient );
        xSurfaceDesc.dwWidth 
= rcClient.right - rcClient.left ;
        xSurfaceDesc.dwHeight 
= rcClient.bottom - rcClient.top ;

        hr 
= spDirectDraw->CreateSurface( & xSurfaceDesc , & spDirectDrawSurface , NULL );
        
        ATLASSERT( SUCCEEDED( hr ) );
    }

    spDirectDraw
->RestoreAllSurfaces( );
    spDirectDrawSurface
->GetDC( & hDC );

#endif

    DWORD dwStart 
= GetTickCount( );

#if defined( TEST_GDI_PLUS )
    Graphics xGraphics( hDC );

    Point arPoints[ ] 
= 
    {
        Point(
10100),
        Point(
15080),
        Point(
20020),
        Point(
25080),
    };

    Pen xPen( Color( 
255 , 128 , 0 , 0 ) , 1 );
    xGraphics.SetSmoothingMode( SmoothingModeAntiAlias );

    
forint i = 0 ; i < 10000 ; i ++ )
    {
//        xGraphics.DrawCurve( & xPen , arPoints , _countof( arPoints ) );
        xGraphics.DrawLines( & xPen , arPoints , _countof( arPoints ) );
    }

#else

    CDCHandle dc( hDC );
    CPen hPen; hPen.CreatePen( PS_SOLID , 
2 , RGB( 128 , 0 , 0 ) );
    dc.SelectPen( hPen.m_hPen );

    POINT arPoints[] 
= { {10100} , {15080} , {20020} ,{25080} };

    
forint i = 0 ; i < 10000 ; i ++ )
    {
        dc.Polyline( arPoints , _countof( arPoints ) );
    }

#endif

    DWORD dwSpend 
= GetTickCount( ) - dwStart;
    AtlTrace( TEXT(
"Draw 10000 Counts Spend %d MS \n") , dwSpend );

#if defined ( TEST_DIRECT_DRAW )
    spDirectDrawSurface
->ReleaseDC( hDC );
#endif

    
return 0;
}

 

转载于:https://www.cnblogs.com/WonKerr/archive/2009/05/15/GDI_GDIPLUS_DDRAW.html

http://www.jmfq.cn/news/4865419.html

相关文章:

  • 贵州安顺网站建设/品牌推广软文案例
  • 如何做网站测试/百度大数据查询怎么用
  • 怎么建立免费个人网站/重庆森林电影
  • 赞美对方公司网站做的好的日语/网上推广怎么收费
  • 专业的网站建设服务交易平台/怎么做网络销售
  • 台州哪里做网站/培训机构专业
  • 天津网站建设报价/搜索引擎优化学习
  • adobe做网站的软件/360安全浏览器
  • 中国最大的网站/临沂网站建设方案服务
  • 网站开发的检索速度在啥范围之内/线下推广有哪些渠道
  • 厦门网站建设网页设计/弹窗广告最多的网站
  • 自己做社交网站/输入关键词自动生成标题
  • 大学网站建设多少钱/网络营销案例分析
  • phpstudy做正式网站/重庆企业免费建站
  • 如何做教育网站/新闻发布平台有哪些
  • 如何提升顾客的体验和服务/小时seo
  • 施工企业环境管理体系/优化网站推广教程整站
  • 芯互联大厦做网站的/百度图片识别
  • 阜阳网站建设公司/图片优化
  • 网站自己怎么制作/怎么推广自己的微信号
  • 公司网站建设ppt/百度的代理商有哪些
  • 网站建设策划方案/百度关键词搜索排行
  • 网络规划设计师教程(第2版)/搜索引擎排名优化价格
  • 海北wap网站建设/最近一周热点新闻
  • 百度怎么收录自己的网站/nba体育新闻
  • wordpress.分页工具/seo北京
  • 站长之家网站素材/北京网站快速优化排名
  • 久久建筑网是山东省的吗/附子seo教程
  • 浚县网站建设/关键词提取工具app
  • wordpress中文评论插件/三门峡网站seo