社区
界面
帖子详情
GDI 绘图丢失
灿烂李
2008-09-25 06:12:23
做一个 安防监控的电子地图程序
在窗体上绘图 加载图像用的是类是 ATL::CImage
绘图用的CDC
发现 绘图窗体 创建销毁 7次后 便绘不出图来了
7次后 1:1的比例不能绘制,看Image和CDC 都有效 缩小的比例可以
到第8次,什么比例都没有图像显示了
而且VC++的Watch窗口也变的被刷没了,就是看不到容 一个暗灰色的白框效果
这有可能是什么原因造成的? 难道是绘图环境被损坏了?
...全文
102
8
打赏
收藏
GDI 绘图丢失
做一个 安防监控的电子地图程序 在窗体上绘图 加载图像用的是类是 ATL::CImage 绘图用的CDC 发现 绘图窗体 创建销毁 7次后 便绘不出图来了 7次后 1:1的比例不能绘制,看Image和CDC 都有效 缩小的比例可以 到第8次,什么比例都没有图像显示了 而且VC++的Watch窗口也变的被刷没了,就是看不到容 一个暗灰色的白框效果 这有可能是什么原因造成的? 难道是绘图环境被损坏了?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
灿烂李
2008-09-26
打赏
举报
回复
解决了 确实是资源泄漏
m_memBmp.Detach();
m_preBmp.Detach();
m_memBmp.DeleteObject();
m_preBmp.DeleteObject();
先后顺序 导致的 先 m_preBmp.Detach(); 导致 m_memBmp.DeleteObject(); 返回失败 实际没有被释放
但 查看程序 句柄没有增加 谢谢大家了
梧桐168
2008-09-26
打赏
举报
回复
分析代码之前,可以用工具(Bear等)检测以下是否有资源泄露
灿烂李
2008-09-25
打赏
举报
回复
这是构造函数
CMemoryDC::CMemoryDC(CWnd *pWnd, BOOL bAirscape)
{
m_pClientDC = new CClientDC(pWnd);
m_pWnd = pWnd;
m_pWnd->GetClientRect(&m_clientRc);
if (bAirscape)
{
m_iWidth = m_clientRc.Width();
m_iHeight = m_clientRc.Height();
}
else
{
m_iWidth = ::GetSystemMetrics(SM_CXSCREEN);
m_iHeight = ::GetSystemMetrics(SM_CYSCREEN);
}
m_memDC.CreateCompatibleDC(m_pClientDC);
m_memBmp.CreateCompatibleBitmap(m_pClientDC, m_iWidth, m_iHeight);
m_memDC.SelectObject(&m_memBmp);
m_preDC.CreateCompatibleDC(m_pClientDC);
m_preBmp.CreateCompatibleBitmap(m_pClientDC, m_iWidth, m_iHeight);
m_preDC.SelectObject(&m_preBmp);
::SetStretchBltMode(m_memDC.m_hDC, HALFTONE);// 提高缩放后图像质量
::SetStretchBltMode(m_preDC.m_hDC, HALFTONE);
m_rectImage.SetRect(0, 0, m_iWidth, m_iHeight);
}
灿烂李
2008-09-25
打赏
举报
回复
我调用的是m_pclientdc= GetClientDC(wnd)
在delete m_pclientdc
xsc2001
2008-09-25
打赏
举报
回复
你是不是在调用CDC *pDC = GetDC();后没有释放pDC呀,应该调用ReleaseDC(pDC);释放pDC.如果不释放多次调用以后就会出现问题。
JacksonFox
2008-09-25
打赏
举报
回复
不知道了。。可能其他地方内存泄漏?
以前做过一次,开始的时候有内存泄漏,软件运行1天后,屏幕开始黑白,什么图片都没有。
灿烂李
2008-09-25
打赏
举报
回复
CMemoryDC::~CMemoryDC(void)
{
m_memBmp.Detach();
m_preBmp.Detach();
m_memBmp.DeleteObject();
m_preBmp.DeleteObject();
m_memDC.DeleteDC();
m_preDC.DeleteDC();
SAFE_DELETE(m_pClientDC)
}
这样释放的
JacksonFox
2008-09-25
打赏
举报
回复
内存的问题吧。。看看你重新创建前有没有销毁以前的。。要释放内存的。
VCAD.rar_
GDI
+矢量
绘图
_
GDI
缩放_矢量
gdi
_矢量
绘图
_矢量缩放
《
GDI
+矢量
绘图
与缩放技术详解》 在计算机图形学领域,
GDI
+(Graphics Device Interface Plus)是Windows操作系统中用于图形绘制的一种强大工具,它提供了丰富的
绘图
功能,包括矢量
绘图
和缩放。
GDI
+的优势在于其...
winform做的流程图编辑器-
GDI
+
绘图
技术,很好用
在WinForm中,通常在控件的Paint事件处理程序中进行
GDI
+
绘图
。首先,我们需要从e.Graphics获取Graphics对象,它是
绘图
的上下文,然后就可以在这个对象上进行各种
绘图
操作。 4. 绘制流程图元素: - 线条:使用Pen...
一个winfrom+
GDI
做的
绘图
板 内含各种图形效果和截图功能 .zip
在这个Winform+
GDI
绘图
板项目中,我们看到了一个基于Windows窗体应用程序的
绘图
解决方案,它运用了
GDI
(图形设备接口)技术来实现图形绘制。该项目的核心功能包括了图形绘制、撤销与重做、保存与导入图片等,这些...
delphi基于
gdi
+的图片旋转任意角度
GDI
+是Microsoft提供的图形设备接口,它扩展了传统的
GDI
(图形设备接口),增加了对矢量图形、图像处理以及
绘图
效果的支持。 描述中提到的几个关键点: 1. **计算旋转后的图片大小**:在进行图像旋转时,由于几何...
基于MFC的
绘图
程序
CDC是对设备上下文的封装,可以理解为一个抽象的画布,开发者可以通过CDC对象调用
GDI
(Graphics Device Interface)函数来进行
绘图
,如MoveTo、LineTo、Ellipse等。 3. **视图与文档结构** MFC通常采用文档/视图...
界面
15,978
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章