VS2012 GDI绘图双缓冲 去闪屏问题

用MFC如何高效地绘图 用MFC如何高效地绘图TouchMe    显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈我的一些观点。1、显示的图 阅读详情

VS2012 GDI绘图双缓冲 去闪屏问题


CMemDC类

使用CMemDC类实现双缓冲是非常简单的


         CDC *pDC = GetDC();
	 CMemDC dcMem(*pDC,this);
	 CDC& dc = dcMem.GetDC();
	 HDC hdc = dc.m_hDC;
	 using namespace Gdiplus;
	 Graphics graphics(hdc);
	 graphics.SetSmoothingMode(SmoothingModeAntiAlias);
         graphics.Clear(Gdiplus::Color(255, 255, 255));
	 CchessboardDoc *pDoc = GetDocument();
         Pen newPen(pGroup->attr.c, pGroup->attr.width);
         //此处就可以利用graphics随便画图了
         //graphics.DrawLine(&newPen, pItem->point.x, pItem->point.y, (pItem->next->point.x), (pItem->next->point.y));

MFC中的APP/DOC/VIEW

MFC中这三者的关系,类似于MVC中的三个角色。 DOC类似于MODE,VIEW也相当于VIEW,APP与Controller的对应则没有那么明显;

需要注意的是
VIEW可以监听菜单、工具栏等消息或者事件,同时还可以监听windows事件,例如鼠标键盘之类,因为它是继承了CWND的。

而DOC和APP只能监听一般的消息事件,命令等,因为它是继承CCmdTarget的。

至此,以此为记录。
VC++ MFC绘图小工具:画直线圆矩形+填色+保存重载 用VC++和MFC写的轻量绘图程序,适合刚学Windows编程的人上手练手。打开就能画直线、圆形、矩形,每种图形都能调线条颜色和粗细,圆和矩形还能选填充色。操作全靠鼠标拖拽,画布独立显示,响应直观。画完能存成文件,下次打开还能继续改,不怕练习中途丢内容。包里带完整VS2010/2012工程(.sln和.vcxproj),有图标、对话框、清单等资源文件,还有核心绘图类CanvasWnd和ShapeLayer,以及主界面逻辑mspainDlg。代码结构清楚,覆盖MFC消息处理、GDI绘图API调用、二进制文件读 阅读详情

相关推荐

GDI双缓冲解决重绘闪屏(非MFC)

用GDI绘制四叶草,每秒中换一种随机颜色。重绘时候利用后台缓冲技术解决图像闪屏现象。纯WIN32API,没有利用MFC。

CMemDC双缓冲绘图

之前的文章,我提到了GDI双缓冲绘图,代码比较复杂,或许应用的时候有点麻烦,所以这里推荐一个CMemDC类; 注意:在VC2010中,已经有CMemDC类了,所以我添加了命名空间; // MemDC.h : header file // #ifndef MEMDC_H #define MEMDC_H ///////////////

chinabinlang的专栏 3301

纯 GDIPlus GDI+ 实现双缓存源码 消除闪烁 简单SampleCode

实用GDI实现双缓存消除闪烁大家应该很熟悉了.其实使用GDI+来消除双缓存的原理和GDI是一样的.只是使用的对象和操作有一点不一样而已. 从之前的Code里面抽出一点来说明GDI+的双缓存的实现. 适合编程新手或者GDIPlus新手.

GDI+双缓冲解决闪烁问题

在使用GDI绘图时,经常以panel控件进行重绘,在每次重绘的过程中会出现闪烁问题 解决方案: 新建一组件集成Panel,然后在内部实现双缓冲 public partial class StandPanel : Panel { public StandPanel() { SetStyle(ControlStyles.AllPaintingInWmPaint, tru...

weixin_36845145的博客 893

贪吃英雄(四) GDI+双缓冲解决闪烁问题

贪吃英雄(四)利用双缓冲解决闪烁问题,博客地址: http://blog.youkuaiyun.com/fukainankai/article/details/25157465,欢迎大家提出宝贵意见。

VS2008 双缓冲绘图 CMemDC正确使用

编译器:Microsoft Visual Studio 2008 实现功能:棋盘覆盖算法的图形展示。 涉及知识:定时器、STL、基本MFC画图API、双缓冲贴图

VC++ MFC+GDIPlus 双缓冲解决闪烁问题

经过测试,GDIPlus的双缓冲也解决了,画的图果然灰常漂亮,

LYJ个人博客,记录技术、八卦、生活,分享各种心得,期待与朋友们一同进步 2028

隔离型全桥LLC谐振变化器建模及参数设计资料【仿真+设计报告+计算书】

内容概要:本文档系统性地提供了隔离型全桥LLC谐振变换器的建模、仿真与参数设计全套技术资料,涵盖Simulink/Plecs仿真模型、详细设计报告及Mathcad计算书,内容涉及开环与闭环控制、软启动过程、恒压恒流双闭环竞争控制等多种工况。资料还拓展至多相交错LLC、双向CLLC拓扑以及V2G(Vehicle-to-Grid)电动汽车充放电等前沿应用场景,并融合状态估计算法(如卡尔曼滤波、扩展卡尔曼滤波、粒子滤波)与神经网络技术进行系统性能优化,配套PPT说明与高水平EI期刊复现案例,为电力电子领域的科研与工程设计提供完整的技术支撑; 适合人群:适用于电力电子、电气工程及其自动化等相关专业的高校研究生、科研人员,以及从事高频DC-DC变换器、新能源电源系统开发的工程师,具备扎实电路理论基础和Matlab/Simulink仿真能力者尤佳; 使用场景及目标:①支撑LLC谐振变换器相关的科研课题、学位论文或项目开发;②开展高频高效电源的参数设计、效率优化与动态响应分析;③学习并复现高水平期刊中先进的控制策略,如变频控制、混合移相控制及智能优化算法;④掌握Simulink/Matlab在电力电子系统建模、控制算法实现与状态估计中的综合应用; 阅读建议:建议结合仿真模型、Mathcad计算书与设计报告三位一体同步研习,重点理解主电路参数设计与闭环控制逻辑之间的耦合关系,优先运行典型算例并调试关键模块,有条件者可进一步推进至硬件原型验证,并积极探索状态估计与人工智能算法在电力系统动态建模中的融合应用。

VC GDI双缓冲机制绘图防屏幕闪烁实现步骤

在OnDraw(CDC* pDC) 中添加如下代码      CDC MemDC; //首先定义一个显示设备对象   CBitmap MemBitmap;//定义一个位图对象   //随后建立与屏幕显示兼容的内存显示设备   MemDC.CreateCompatibleDC(NULL);   //这时还不能绘图,因为没有地方画 ^_^   //下面建立一个与屏幕显示兼容的位图,至于位图

夜空的流星的专栏 1677

mac搭建ios自动化环境之WebDriverAgent配置

一、WebDriverAgent 1、简单介绍: WebDriverAgent是facebook为苹果公司开发的一款自动化测试工具,github上有下载资源;另外appium安装后也会自动安装自带的WebDriverAgent;可以用自带的,也可以从github下载并替换自带的; 2、不同appium版本自带WebDriverAgent默认路径不同 1)appium 1.10.1之前版本: npm方式安装: /usr/local/lib/node_modules/appium/node_modules/a

qq_30237715的博客 2761

Ansys Motor-CAD:概述(EMag、THERM、LAB、MECH)

在这篇博客中,我概述了如何使用 Ansys Motor-CAD 模型、模拟、分析和后处理结果来评估电机性能,并帮助您为您的应用选择优化的电机,并通过电机设计选择实现成本效益和效率。我介绍了各种可用的电机类型、可供选择的物理模块和可配置的多物理选项。E-Mag 物理模块有许多选项卡,涵盖几何创建、材料选择、电磁设置、条件、求解器类型、解决方案模型、耦合设置等的所有设置。热物理模块有许多选项卡,涵盖几何创建、材料选择、热设置、条件、求解器类型、解决方案模型、耦合设置等的所有设置。分析结果的速度相结合。

jkh920184196的博客 1755

关于bmp图像,在Onpaint中画图时一闪而过的问题

关于在Onpaint中画图一闪而过的问题 :

hnust_xiehonghao的专栏 2477

如何在 VMware Workstation 虚拟机中利用 Nvidia 显卡的硬件加速功能

本文详细介绍了在VMware Workstation虚拟机中配置Nvidia显卡硬件加速的完整流程。重点包括:检查硬件兼容性、安装显卡驱动、编辑VMware配置文件启用PCI直通功能(需修改config.ini文件参数)、为虚拟机分配PCI设备等关键步骤。文章特别强调了配置注意事项,如系统资源需求、BIOS设置要求、驱动兼容性等问题,并建议操作前备份数据。通过此方法可实现虚拟机对Nvidia显卡的直接调用,适用于需要GPU加速的计算场景。

qq_39777550的博客 6699

GDI画图——我对双缓存防闪烁的理解。

       我遇到的问题是这样的:程序界面是建立在若干张位图图片的基础上,将数据显示在这些位图的某些固定位置上。之所以用位图为框架,是有原因的:如果单纯用GDI绘制界面,在没有扩展GDI开发包的情况下,而且是嵌入式的CE系统中,什么锯齿校正,颜色校正等情况会占用太高的内存,不合算。况且用代码画图远比用手绘图麻烦(至少对于我是这样~),如果日后要想修改界面风格,就得改代码。如果用位图就方便多了

reneeland的专栏 2669

iTunes登录协议全解析:从抓包到签名验证(含HTTPDebugger避坑指南)

本文深入解析了iTunes登录协议的核心流程,包括sign-sap-setup-cert和sign-sap-setup-buffer等关键请求,并提供了使用HTTPDebugger等工具进行抓包分析时绕过反调试检测的实战技巧与避坑指南。文章详细拆解了PLIST编解码、请求签名验证机制及密码加密逻辑,为网络安全研究和协议逆向提供了完整的技术路径。

weixin_29224309的博客 331

Allegro快速编辑丝印文字操作指导

选择setup-Application Mode-placement edit。Allegro支持丝印文字的编辑,下面介绍快速编辑丝印文字的两种方法如下。这个功能还支持拷贝粘贴,可以从其它地方拷贝过来,免去了书写的麻烦。出现text edit窗口,输入自己需要的文字,点击ok。鼠标移动到丝印文字位置,文字会被高亮起来。Allegro快速编辑丝印文字操作指导。点击丝印文字,丝印会被高亮起来。选择Text edit 命令。输入需要更改后的文字,如下。右击选择text edit。以编辑下方丝印文字为例。

weixin_54787054的博客 4192

C# 完美解决窗体切换闪屏问题

1, 将以下代码块加在父窗体中的任意位置: protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; return cp; } } 原理很简单,引用以下原话:  A form that has a l

wzk456的专栏 1万+

【即插即用模块】卷积篇 | TCSVT 2025 | MFACB:多尺度膨胀融合,快速扩大感受野,多尺度特征精准捕捉!

本文提出了一种新型多尺度融合膨胀卷积模块MFACB,用于增强语义分割任务中的特征表达能力。该模块通过三分支串联膨胀卷积结构快速扩大感受野,采用双路径融合机制(基础信息路径+多尺度信息路径)实现高效上下文聚合。相比传统卷积块,MFACB在保持轻量化的同时显著提升了多尺度特征捕捉能力,实验表明其性能优于基础残差块。该模块支持自定义膨胀率和步长调整,可灵活嵌入不同网络阶段,适用于需要特征增强的视觉任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 310

如何解决绘图过程中的闪烁

在 VC 中进行绘图过程处理时,如果图形刷新很快, 经常出现图形闪烁的现象。利用先在内存绘制,然后 拷贝到屏幕的办法可以消除屏幕闪烁,具体的方法是先在内存 中创建一个与设备兼容的内存设备上下文,也就是开辟一快内 存区来作为显示区域,然后在这个内存区进行绘制图形。在绘制完成后利用 BitBlt 函数把内存的图形直接拷贝到屏幕上即可。 具体的代码实现为: (1)创建内存区域 CDC*

Never too late to study 2376

Python爬虫教程:抓取短视频平台数据(以抖音和快手为例)

为什么抓取短视频平台数据?内容分析:通过抓取短视频平台上的视频内容、标题、标签等数据,可以进行内容分类、趋势分析、话题分析等。情感分析:抓取视频的评论数据,并进行情感分析,帮助企业或组织了解公众的情绪反馈。用户行为分析市场监测:通过抓取特定关键词或标签下的视频数据,分析市场趋势,进行竞争对手分析。短视频平台数据类型:视频信息:包括视频标题、描述、标签、作者等。用户信息:包括用户的昵称、粉丝数、关注数等。互动数据评论数据:视频下的用户评论内容及用户信息。

2201_76125261的博客 3662

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

GDI GDI+ 双缓冲解决闪烁

最近工作遇到绘制控件的问题,该控件会不断刷新,其所在的view可能贴图,也可能用纯色的画刷刷。这样就产生了问题了,控件狂闪,特别是有背景图的时候。该控件绘制的时候用的是GDI,过程中考虑到圆滑处理等又用到了GDI+。现在用双缓冲解决闪烁问题。   一 、GDI 双缓冲这样做:   CDC MemDC; //首先定义一个显示设备对象   CBitmap MemBitmap;//定义一个位图对象

asdfghjashuang的专栏 4448

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 【算法系列】快速排序算法
下一篇: 基于4G网卡的Telnet远程登录RT-Thread的Finsh/MSH Shell
jzen
博客等级 码龄15年 26粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值