Windows Memory DC原理及使用方法

原理


  1. DC(Device Contexts)是GDI内部的一个数据结构,与特定的显示设备相关联,如果我们获取该DC的handle,我们就能操作显示设备进行绘制。默认情况下(如MFC中),我们都会直接使用DC进行绘制,但是当对DC的操作非常频繁时,GDI频繁向显示设备输出,导致闪屏。

  2. Memory DC使用中非常高效的绘图技术,使用非常广泛。Memory DC的原理是创建一个与物理显示设备适配的内存DC,所有的绘图动作都在Memory DC上完成后,再将Memory DC拷贝到物理DC上,GDI只需要向显示设备进行一次输出即可完成。由于内存访问速度比设备访问速度高得多,所以避免了闪屏现象。

使用方法(MFC下)


CClientDC dc(this);
CDC dcMem;
CBitmap bmp;
CRect rect;
this->GetClientRect(&rect);
dcMem.CreateCompatibleDC(dc);
bmp.CreateCompatibleBitmap(dc, rect.Width(), rect.Height());
dcMem.SelectObject(&bmp);
// ...
// 在这儿使用dcMem绘图
// ...
dc.BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);

对于复杂的多元素界面,对元素进行分层绘制是一个很高效的方法。例如,一个对话框中需要绘制一个动态的坐标系实时显示曲线变化趋势。需要绘制的元素包括以下几种:

元素 重绘频率
背景 绘制1次
坐标轴 绘制1次
坐标网格 绘制1次
坐标标值 坐标尺度变换时需要重绘
曲线 实时重绘

根据上表可以创建3个Memory DC

Memory DC 功能
dcBackground 绘制背景、坐标轴、坐标网格,需要有绘制一次,以后每次拷贝到物理DC
dcLabel 绘制坐标标值,当进行坐标制度变换时重绘,否则拷贝到物理DC
dcLines 每次重绘曲线,拷贝到物理DC

拷贝顺序如下:

Created with Raphaël 2.1.0
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用 Windows Memory Diagnostic 进行内存测试的步骤: 1. 打开 Windows Memory Diagnostic 工具:在 Windows 操作系统中,可以通过以下方法打开 Windows Memory Diagnostic 工具: - 在 Windows 搜索栏中输入“memory”或“Windows Memory Diagnostic”。 - 在 Windows 开始菜单中找到“Windows Memory Diagnostic”选项。 2. 选择测试方式:在 Windows Memory Diagnostic 工具界面中,可以选择以下两种测试方式: - Basic:进行一次快速的内存测试。 - Extended:进行一次更为全面的内存测试,需要更长的测试时间。 3. 选择测试选项:在测试方式下面,可以选择以下测试选项: - Restart now and check for problems:选择此选项后,Windows 会重启电脑并开始内存测试。 - Check for problems the next time I start my computer:选择此选项后,Windows 会在下一次重启电脑时开始内存测试。 4. 开始测试:选择测试选项后,点击“Restart now”按钮,Windows 会重启电脑并开始内存测试。 5. 分析测试结果:内存测试完成后,Windows 会自动重启电脑并显示测试结果。如果测试结果显示有内存问题,需要更换内存条。 需要注意的是,Windows Memory Diagnostic 工具只能检测内存硬件状态,如果内存使用过程中出现软件问题,如操作系统崩溃、应用程序异常等,需要使用其他测试工具进行测试。同时,测试时间较长,需要耐心等待测试结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值