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

辽宁响应式网站建设推荐风景旅游网页制作素材

辽宁响应式网站建设推荐,风景旅游网页制作素材,wordpress4.9.1,专门做网页设计网站目录 1、一个bitmap不能同时被选进两个dc中 2、CreateCompatibleDC和CreateCompatibleBitmap要使用同一个dc作为参数 3、不能删除已经被选入DC中的GDI对象 4、使用完的GDI对象#xff0c;要将之释放掉#xff0c;否则会导致GDI对象泄漏 5、CreateCompatibleBitmap返回错…目录 1、一个bitmap不能同时被选进两个dc中 2、CreateCompatibleDC和CreateCompatibleBitmap要使用同一个dc作为参数 3、不能删除已经被选入DC中的GDI对象 4、使用完的GDI对象要将之释放掉否则会导致GDI对象泄漏 5、CreateCompatibleBitmap返回错误码8的原因及解决办法用CreateDIBSection替换CreateCompatibleBitmap 6、Windows开发人员必须要学会到微软MSDN上查看函数的详细说明 7、最后 C软件异常排查从入门到精通系列教程核心精品专栏欢迎订阅持续更新...https://blog.csdn.net/chenlycly/article/details/125529931C/C实战专栏重点专栏专栏文章已更新480多篇持续更新中...https://blog.csdn.net/chenlycly/article/details/140824370C 软件开发从入门到精通专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_12695902.htmlVC常用功能开发汇总专栏文章列表欢迎订阅持续更新...https://blog.csdn.net/chenlycly/article/details/124272585C软件分析工具从入门到精通案例集锦专栏文章持续更新中...https://blog.csdn.net/chenlycly/article/details/131405795开源组件及数据库技术专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_12458859.html网络编程与网络问题分享专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_2276111.html       我们在自绘窗口、给控件贴图、绘制文字时会使用到Pen画笔、Brush画刷、Bitmap位图、Font字体、Region区域、DC设备上下文等GDI对象在使用这些GDI对象要注意一些细节问题否则会出现一些绘制异常。本文结合多年的项目实践给大家分享几个使用GDI对象的细节以供大家借鉴或参考。 1、一个bitmap不能同时被选进两个dc中 我们在使用Pen画笔、Brush画刷、Bitmap位图、Font字体、Region区域等GDI对象绘制之前需要将它们选进DC设备上下文中然后通过DC去操作使用。 对于bitmap对象使用示例如下 // 先创建位图然后将位图选进DC中然后操作DC去完成绘图 HDC hMemDC ::CreateCompatibleDC( hdc ); HBITMAP hMemBitmap ::CreateCompatibleBitmap( hdc, rect.GetWidth(), rect.GetHeight() ); ::SelectObject( hMemDC, hMemBitmap ); 使用bitmap对象时不能将一个bitmap同时选进两个dc中。 系统API函数SelectObject在MSDN上有明确的说明 ​即一个bitmap不能同时被选进两个dc。这个问题我们之前遇到过因为新手在编写GDI绘制的代码时代码不规范创建的GDI资源没有释放导致一个bitmap被选进了两个dc中导致绘制有问题始终达不到预期的效果。 2、CreateCompatibleDC和CreateCompatibleBitmap要使用同一个dc作为参数 我们在使用双缓冲绘图时会先创建一个内存DC和内存bitmap如下 // CreateCompatibleDC和CreateCompatibleBitmap使用的是同一个参数hdc HDC hMemDC ::CreateCompatibleDC( hdc ); HBITMAP hMemBitmap ::CreateCompatibleBitmap( hdc, rect.GetWidth(), rect.GetHeight() ); 但要注意CreateCompatibleDC和CreateCompatibleBitmap两函数传入的dc对象必须是同一个。 有些人可能会将CreateCompatibleDC返回的dc对象直接放到CreateCompatibleBitmap参数中如下 // 错误CreateCompatibleBitmap使用CreateCompatibleDC返回的dc句柄 HDC hMemDC ::CreateCompatibleDC( hdc ); HBITMAP hMemBitmap ::CreateCompatibleBitmap( hMemDC, rect.GetWidth(), rect.GetHeight() ); 这样会导致调用CreateCompatibleBitmap创建的位图是单色位图只能绘制黑白颜色的效果。 MSDN上CreateCompatibleBitmap API函数说明页面有下面一段说明 ​大体意思是当一个内存dc被创建时初始拥有一个尺寸为1x1的单色的位图被选进去。如果这个新创建的内存dcCreateCompatibleDC函数返回的dc被用到CreateCompatibleBitmap的参数中用来创建bitmap那么这个位图将是单色的位图只能绘制黑白颜色的效果。 之前在开发截图功能时就遇到过当时截图的背景始终是灰白色的后来看到上述MSDN上说明才知道原因。 在这里给大家重点推荐一下我的几个热门畅销专栏欢迎订阅博客主页还有其他专栏可以去查看 专栏1该精品技术专栏的订阅量已达到570多个专栏中包含大量项目实战分析案例有很强的实战参考价值广受好评专栏文章持续更新中预计更新到200篇以上欢迎订阅 C软件调试与异常排查从入门到精通系列文章汇总https://blog.csdn.net/chenlycly/article/details/125529931 本专栏根据多年C软件异常排查的项目实践系统地总结了引发C软件异常的常见原因以及排查C软件异常的常用思路与方法详细讲述了C软件的调试方法与手段以图文并茂的方式给出具体的项目问题实战分析实例很有实战参考价值带领大家逐步掌握C软件调试与异常排查的相关技术适合基础进阶和想做技术提升的相关C开发人员 考察一个开发人员的水平一是看其编码及设计能力二是要看其软件调试能力所以软件调试能力排查软件异常的能力很重要必须重视起来能解决一般人解决不了的问题既能提升个人能力及价值也能体现对团队及公司的贡献 专栏中的文章都是通过项目实战总结出来的包含大量项目问题实战分析案例有很强的实战参考价值专栏文章还在持续更新中预计文章篇数能更新到200篇以上 专栏2本专栏涵盖了C多方面的内容是当前重点打造的专栏订阅量已达220多个专栏文章已经更新到480多篇持续更新中... C/C实战进阶专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_11931267.html 以多年的开发实战为基础总结并讲解一些的C/C基础与项目实战进阶内容以图文并茂的方式对相关知识点进行详细地展开与阐述专栏涉及了C/C领域多个方面的内容包括C基础及编程要点模版泛型编程、STL容器及算法函数的使用等、数据结构与算法、C11及以上新特性不仅看开源代码会用到日常编码中也会用到部分新特性面试时也会涉及到、常用C开源库的介绍与使用、代码分享调用系统API、使用开源库、常用编程技术动态库、多线程、多进程、数据库及网络编程等、软件UI编程Win32/duilib/QT/MFC、C软件调试技术排查软件异常的手段与方法、分析C软件异常的基础知识、常用软件分析工具使用、实战问题分析案例等、设计模式、网络基础知识与网络问题分析进阶内容等。 专栏3   C常用软件分析工具从入门到精通案例集锦汇总专栏文章持续更新中...https://blog.csdn.net/chenlycly/article/details/131405795 常用的C软件辅助分析工具有SPY、PE工具、Dependency Walker、GDIView、Process Explorer、Process Monitor、API Monitor、Clumsy、Windbg、IDA Pro等本专栏详细介绍如何使用这些工具去巧妙地分析和解决日常工作中遇到的问题很有实战参考价值 专栏4    VC常用功能开发汇总专栏文章持续更新中...https://blog.csdn.net/chenlycly/article/details/124272585 将10多年C开发实践中常用的功能以高质量的代码展现出来。这些常用的高质量规范代码可以直接拿到项目中使用能有效地解决软件开发过程中遇到的问题。 专栏5  C 软件开发从入门到精通专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_12695902.html 根据多年C软件开发实践详细地总结了C/C软件开发相关技术实现细节分享了大量的实战案例很有实战参考价值。 3、不能删除已经被选入DC中的GDI对象 DeleteObject API函数中有如下的说明 ​即不能删除还在被选入dc中的GDI对象需要选出后再删除否则会导致绘制异常。 4、使用完的GDI对象要将之释放掉否则会导致GDI对象泄漏 在GDI对象使用完成后要将之删除或释放掉如果不删除或释放则会导致GDI泄漏。如果有GDI对象泄漏的代码被频繁地执行会导致GDI对象在持续的泄漏当GDI对象总数接近或达到1万个时就会导致GDI绘图函数调用出现异常出现窗口绘制不出来等问题紧接着程序就可能会出现崩溃。很多Windows老程序员可能都遇到过类似的问题。 关于Windows进程的GDI对象数目上限的详细说明可以查看我的文章 从注册表看Windows系统进程GDI句柄及进程句柄数上限https://blog.csdn.net/chenlycly/article/details/139565038       创建GDI对象的接口比较多要用对应的接口去释放比如使用CreateXXXXXX创建的GDI对象使用完后要用DeleteObject释放调用LoadXXXXXX函数去加载图片资源使用完后也要用DeleteObject释放调用CreateXXXDC创建的DC对象使用完后要用DeleteDC去释放调用GetDC获取到的DC对象使用完后要用ReleaseDC释放。 调用不同的接口去创建或获取GDI对象释放时也要调用对应的释放接口不能混淆在这里给大家大概地罗列一下 创建或获取GDI对象删除或释放GDI对象CreatePen/CreatePenIndirectpen画笔对象、CreateSolidBrush/CreateBrushIndirectbrush画刷对象、CreateFont/CreateFontIndirectFont字体对象、CreateCompatibleBitmapBItmap位图对象对于Create出来的对象要调用DeleteObject释放CreateDC/CreateCompatibleDC创建DC对象调用DeleteDC释放GetDC获取DC对象调用ReleaseDC释放LoadBitmap加载Bitmap位图调用DeleteObject释放LoadImage加载图片资源 如果加载的是Bitmap位图则调用DeleteObject释放 如果加载的是Cursor光标则调用DestroyCursor释放 如果加载的是Icon图标则调用DestroyIcon释放。 对于上面提到的创建GDI对象的API函数在释放时该调用哪个接口可以直接到MSDN上查看API接口的Remarks部分就会找到对应的说明。比如创建兼容位图的API函数CreateCompatibleBItmap在Remaks部分的说明如下 ​再比如加载图片的API函数LoadImage其在Remarks部分的说明如下 在调用Windows系统API函数遇到问题时需要到微软MSDN帮助页面中查看API函数的详细说明可能会给出调用函数时的注意事项或者调用函数的示例代码等在说明中可能会找到相关的原因会使用MSDN是一个Windows开发人员最基本的要求 对于GDI对象泄漏问题的排查首先到Windows任务管理器中看目标程序进程的GDI总数是否有异常GDI总数特别大好几千甚至接近10000个上限然后再使用GDIView工具查看到底是哪一类GDI对象数量特别大 ​基本可以确定该类对象有泄漏。然后去查看代码检查每个操作该类GDI对象的地方看看是否存在GDI对象使用完后没有释放。 使用GDIView工具查看具体是哪个GDI对象发生了泄漏。确定泄漏对象之后需要去查看代码去排查GDI对象的泄漏点。但软件的模块多代码量大不好漫无目标地排查。可以尝试去找到复现问题的办法根据复现问题的操作步骤和场景猜测问题可能出在哪些代码块中即缩小代码排查的范围。  关于如何使用GDIView去排查GDI对象以及项目问题排查实例可以查看我之前写的文章深入探究 C 程序中的资源泄漏问题https://blog.csdn.net/chenlycly/article/details/133631728使用GDIView工具排查GDI对象泄漏问题常用分析工具https://blog.csdn.net/chenlycly/article/details/125399896使用GDIView工具排查GDI对象泄漏导致C程序UI界面绘制异常的问题https://blog.csdn.net/chenlycly/article/details/140731065使用GDIView工具排查GDI对象泄漏案例的若干细节总结https://blog.csdn.net/chenlycly/article/details/141526436 5、CreateCompatibleBitmap返回错误码8的原因及解决办法用CreateDIBSection替换CreateCompatibleBitmap 之前我们在加载图片去绘制窗口时比如将图片加载起来显示到窗口中如果图片尺寸过大会出现CreateCompatibleBitmap返回失败即创建位图失败的问题。调用GetLastError获取调用CreateCompatibleBitmap失败的LastError值为8查看该错误码的含义为 ​即创建位图时需要对应的内存而内存资源不足导致申请内存失败所以CreateCompatibleBitmap调用失败了。创建位图的示例代码如下 HDC hDC ::GetDC( NULL ); HDC hMemDC ::CreateCompatibleDC( hdc ); HBITMAP hMemBitmap ::CreateCompatibleBitmap( hdc, nBmpWidth, nBmpHeight ); 比如我们要加载的图片尺寸为3000*3000则需要的内存大小为 图片的宽高相乘得到图片的像素个数每个像素占4个字节R、G、B、Alpha各占一个字节则创建这样尺寸的位图需要的内存为 3000*3000*4 34MB 34MB的内存很大。 调用CreateCompatibleBitmap创建是DDBDevice​-dependent bitmap设备相关位图创建该位图使用的是系统内核的分页内存这是稀有资源可能会出现内存资源不够用的情况。可以使用API函数CreateDIBSection去创建DIBDevice​-independent bitmap设备无关位图这种方式下使用的是虚拟内存基本就会出现内存不足的问题了。关于CreateCompatibleBitmap和CreateDIBSection的详细说明可以查看我之前写的文章CreateCompatibleBitmap返回错误码8的原因及解决方案使用CreateDIBSection替换CreateCompatibleBitmaphttps://blog.csdn.net/chenlycly/article/details/139586621 之前开发的截图功能在部分机器上会频繁出现CreateCompatibleBitmap创建失败的问题导致截图失败。后来就是用CreateDIBSection替换CreateCompatibleBitmap解决的。 使用CreateDIBSection创建位图的示例代码如下 BITMAPINFOHEADER bmih;memset(bmih, 0, sizeof(BITMAPINFOHEADER));bmih.biSize sizeof(BITMAPINFOHEADER);bmih.biBitCount 24;bmih.biCompression BI_RGB;bmih.biPlanes 1;bmih.biWidth nImageWidth; // 位图的宽度bmih.biHeight nImageHeight; // 位图的高度BITMAPINFO bmi;memset(bmi, 0, sizeof(BITMAPINFO));bmi.bmiHeader bmih;void* p;hBitmap ::CreateDIBSection(cdc.GetSafeHdc(), bmi, DIB_RGB_COLORS, p, NULL, 0); 6、Windows开发人员必须要学会到微软MSDN上查看函数的详细说明 在调用Windows系统API函数遇到问题时需要到微软MSDN帮助页面中查看API函数的详细说明。MSDN上可能会给出调用函数时的若干注意事项或限制条件约束条件或者给出调用API函数的示例代码可供参考在函数说明中可能会找到引发问题的原因会使用MSDN是一个Windows开发人员基本要求 除了去查看MSDN上的说明在使用工具时遇到问题可以尝试到工具的官网上查找官方的说明比如我们有次在使用GDIView时排查GDI对象泄漏时始终无法定位问题时就是到GDIView工具的官网上找到了问题的答案相关问题说明可以去查看我之前写的文章 到GDIView等工具官网上或者微软MSDN上查看文档化说明去解决问题https://blog.csdn.net/chenlycly/article/details/126004453 7、最后 使用GDI对象去编写绘图的代码相对简单但在编码过程中要注意上面讲到的若干细节问题。
http://www.w-s-a.com/news/851431/

相关文章:

  • 做网站推销的如何谈客户wordpress怎么做商城
  • 摄影素材库网站服装页面设计的网站
  • 如何用国外网站做头条做个游戏app的费用大概多少
  • 网站 形象入口页福州网站建设网络公司排名
  • 免费下载教学设计的网站送网站建设管理信息内容审核制度
  • 外贸专业网站的公司百度旗下13个app
  • 物理组简介 网站建设高师院校语言类课程体系改革与建设 教学成果奖申报网站
  • 爱网站无法登录怎么回事手表网
  • 网站建设公司现在还挣钱吗山西手动网站建设推荐平台
  • 重庆建设工程交易信息网站网站制作公司起名
  • 东莞寮步做网站的有吗企业宣传册制作
  • 做网站的软件是哪个上蔡做网站
  • 前后端分离实现网站开发紧急通知网页升级
  • 河北专业网站建设公司推荐佛山小程序开发平台
  • 网站开发强制开启浏览器极速模式建设网站有什么风险
  • 360全景网站建设常州专业网站建设公司咨询
  • 重庆大渡口网站建设网站增加一体化建设功能的好处
  • 网站开发完整视频网站上传 404
  • 自适应网站做推广北京建设工程招标网
  • 外贸网站设计注意事项网上商城官网入口
  • 正规的营销型网站建设公司微官网是网站吗
  • 南京行业门户网站无锡阿里巴巴做网站
  • 河北省和城乡住房建设厅网站wamp wordpress打不开
  • 在哪个平台做网站比较好自动app优化
  • 有没有能帮人快速网站备案的机构个人学做网站
  • 凌云县 城市建设 网站西安市建网站
  • 织梦xml网站地图公众号公众平台
  • 长春省妇幼网站做四维学校网站系统破解版
  • 安阳免费搭建自己的网站个人网站做商城会怎样
  • 网站建设专家公司排行网站举报有奖平台