一个关于DC的问题 使用CreatCompatibleDC之后,系统默认是建立一个大小为零的DC。此时使用TextOut,所有绘图都写到DC外面去了。因此在使用TextOut之前应先用SelectObject选择一个一定大小的位图。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.FlyingHero有关DC的说法正确!2.字体不一定要在显示时创建,因为字体的创建过程比较花费时间,如果你的文字有多种字体要同时显示,可以建立一张字体的表,把创建完的字体保存起来,同时如果有不同分段的文字用到相同字体的话也可以减少重复创建相同字体,只要在表中增加该字体的使用计数!在显示的时候,通过选择不同的字体输出文字,这样在显示的过程中减少了CreateFont(CreateFontIndirect)和DeleteObject()的调用,速度上会改进很多! 我的需要是将显示的字符串先进行一定的图形处理,在放到屏幕上这样做是不是一定要事先在内存DC里加载一个视图大小的Bitmap? 创建内存DC有个限制,那就是创建后的DC只支持raster operations即光栅操作,比如传送位图什么的,想把DC的内置字体传过去是不行的。嘿嘿既然只是创建字体何必这样费事啊?直接在你的DC中选进选出就可以了吧。CFont* pOldFont = pDC->SelectObject(pFont);......//do your TEXT operationspDC->SelectObject(pOldFont);至于创建新CFont对象可以参照它的几个构照函数填充相应参数就行了,当然CFont::CreateIndirect(LOGFONT *plf);看起来最简洁,只有一个参数。 to joke100 我不是单纯要创建一个字体,比方说我要对显示在屏幕上的字添加某些特效,如阴影,AntiAlias等,只有另外创建一个DC来进行离屏操作 寻找一维条形码图像识别算法 如何用把DLL插入到其他进程中 怎么在对话框和属性页之间交换数据的么? 请问:vc如何读取到IE中的代理设置? 一个简单的问题 用directdraw实现屏幕抓图 3个月内入门vc++,怎么学?怎么学??????? wodewenti 求VC++文件存放路径选择控件代码,谢谢! 还是刷新的问题。 向高手请教:如何在installshield中运行控制面板文件(cpl文件), 如何修改应用程序的标题?
2.字体不一定要在显示时创建,因为字体的创建过程比较花费时间,如果你的文字有多种字体要同时显示,可以建立一张字体的表,把创建完的字体保存起来,同时如果有不同分段的文字用到相同字体的话也可以减少重复创建相同字体,只要在表中增加该字体的使用计数!
在显示的时候,通过选择不同的字体输出文字,这样在显示的过程中减少了CreateFont(CreateFontIndirect)和DeleteObject()的调用,速度上会改进很多!
这样做是不是一定要事先在内存DC里加载一个视图大小的Bitmap?
CFont* pOldFont = pDC->SelectObject(pFont);
......//do your TEXT operations
pDC->SelectObject(pOldFont);至于创建新CFont对象可以参照它的几个构照函数填充相应参数就行了,当然CFont::CreateIndirect(LOGFONT *plf);看起来最简洁,只有一个参数。
AntiAlias等,只有另外创建一个DC来进行离屏操作