使用SetMapMode的问题

jianlinlong jianlinlong 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
TCanvas* pCanvas = Image1->Canvas;
::SetMapMode(pCanvas->Handle, HIMETRIC);//设为0.01豪米对应一逻辑单元..
//上面的HIMETRIC我是凭记已写的,可能有误
pCanvas->MoveTo(1000, -1000);
pCanvas->LineTo(1000, -10000);//ok,画了一条10cm的直线

pCanvas->Font->Name = “宋体"
pCanvas->Font->Size = 10;
pCanvas->TextOut(1100, -1000, "这是一条直线"); //结果显示几个点,看不清是什么字

//....
pCanvas->Font->Name = “宋体"
pCanvas->Font->Size = 300;
pCanvas->TextOut(1100, -1000, "这是一条直线"); //结果显示结果正确,但却不是真正的10号字大小

///////////////////////////////////
我要问的是,为什么用SetMapMode进行映射之后,用TextOut等输出文字时,文字的大小就出问题了?怎么解决?
...全文

相关推荐

GDI MM_HIMETRIC映射模式为逻辑单位毫米而非像素

GDI MM_HIMETRIC映射模式为逻辑单位毫米而非像素.7z

lj_70596

MFC动态曲线绘制:SetMapMode与双缓冲实战解析

在工业监控与数据可视化场景中,实时曲线的流畅绘制是许多开发者面临的常见挑战。GDI坐标映射与双缓冲技术是解决绘图闪烁、性能瓶颈的关键基础。通过理解逻辑坐标与设备坐标的换算原理,可以灵活实现自适应缩放的数据展示。双缓冲机制通过内存绘图与一次性位图输出,有效消除画面闪烁。本文基于VC6.0 MFC环境,结合SetMapMode与双缓冲的实际代码,讲解动态曲线从数据缓冲、定时刷新到完整绘制的实现方法,并分享常见坑点与优化思路,帮助工程师快速构建稳定的实时监控界面。

小理同学

MFC动态曲线绘制实战:双缓冲与SetMapMode完全解析

在图形界面开发中,高刷新率绘图常面临闪烁与性能瓶颈,尤其是在实时数据采集场景中。双缓冲技术通过内存画布与一次BitBlt贴屏,避免了擦除与绘制交替产生的视觉缺陷,是提升绘图流畅度的基础手段。而坐标映射机制如SetMapMode,能让开发者用逻辑坐标描述数据,简化曲线绘制逻辑。这些技术在工业监控、仪器仪表等需要实时波形显示的领域中有着广泛应用。本文在VC6.0 MFC环境下,结合双缓冲、SetMapMode与定时器刷新,详细讲解动态曲线绘制的完整实现,并分享GDI资源管理及常见坑的排查经验。

遇见高中生

MFC动态曲线实战:SetMapMode与双缓冲根治闪烁和坐标翻转

在MFC自定义绘图开发中,动态实时曲线是工控上位机、数据采集等场景的高频需求。但直接使用GDI绘制常面临坐标系统混乱、刷新闪烁、GDI资源泄漏等工程难题。理解设备上下文与坐标映射原理,正确使用SetMapMode建立逻辑坐标系,让Y轴方向符合数据展示习惯,是解决问题的基础。同时,通过双缓冲绘图的成熟机制,在内存DC中完成绘制再一次性BitBlt到屏幕,能够彻底根治闪烁问题。结合数据缓冲、定时刷新、GDI对象生命周期管理等工程实践,可在VC6.0及老项目中稳定实现心电图式滚动曲线。本文梳理完整实现流程和调试经

江半

vc6.0 MFC 动态曲线 SetMapMode 双缓冲绘图

vc6.0 动态曲线 运用了SetMapMode,SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt 注释也比较详细 双缓冲,但是我刷新还是用了全局,有点闪,没时间弄它。

走好每一步
评论 3
收藏 已收藏
分享
返回顶部
jianlinlong
VC/MFC 16,550 成员 421,606 内容