社区
图形处理/算法
帖子详情
保存绘图时,绘图矩形区域被对话框遮住了
jiabin_007
2009-03-30 11:56:42
我在序列化位图时,本意是想存储我绘图的画面,但是却存储了被保存对话框遮住的绘图画面。
...全文
144
8
打赏
收藏
保存绘图时,绘图矩形区域被对话框遮住了
我在序列化位图时,本意是想存储我绘图的画面,但是却存储了被保存对话框遮住的绘图画面。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jiabin_007
2009-03-30
打赏
举报
回复
但都要等到序列化的时候才能确定要保存的绘图已经画完了呀,这时保存文件对话框必定会盖住绘图区域的一部分啊。
jiabin_007
2009-03-30
打赏
举报
回复
void CLabelImage::Serialize(CArchive &archive)
{
// call base class function first
// base class is CObject in this case
CObject::Serialize( archive );
// now do the stuff for our specific class
if( archive.IsStoring() )
{
//根据标签dc创建兼容dc
m_dc_compatible.CreateCompatibleDC(mp_dc_label);
//获得标签矩形区域
GetClipBox(mp_dc_label->m_hDC, &m_rect_label);
//创建标签区域兼容位图
mh_bitmap_compatible = CreateCompatibleBitmap(mp_dc_label->m_hDC, m_rect_label.Width()-30, m_rect_label.Height()-30);
//在兼容dc上绘图
m_dc_compatible.SelectObject(CBitmap::FromHandle(mh_bitmap_compatible));
m_dc_compatible.BitBlt(0, 0, m_rect_label.Width(), m_rect_label.Height(), mp_dc_label, 0, 0, SRCCOPY);
//为mp_bitmapinfo分配内存
XG_HRESULT hr_alloc_bitmapinfo = _alloc_memory_for_bitmapinfo();
//根据兼容位图为mp_bitmapinfo添加内容
m_drawbitmap.create_bitmapinfo_struct(&mp_bitmapinfo, mh_bitmap_compatible);
//为mp_byte_bitmap_data分配内存
XG_HRESULT hr_alloc_bitmap_data = _alloc_memory_for_bitmap_data();
//根据兼容位图为mp_byte_bitmap_data添加内容, 并创建位图文件
m_drawbitmap.create_bitmap_file("bitmap_clip.bmp", mp_bitmapinfo, &mp_byte_bitmap_data,
mh_bitmap_compatible, m_dc_compatible.m_hDC);
archive << m_rect_label;
archive << (DWORD)mi_bitmapinfo_size;
archive << (DWORD)mi_bitmap_data_size;
archive.Write(mp_bitmapinfo, mi_bitmapinfo_size);
archive.Write(mp_byte_bitmap_data, mi_bitmap_data_size);
//释放mp_bitmapinfo内存
if( ERROR_ALLOC_MEMORY_FAIL != hr_alloc_bitmapinfo)
{
free(mp_bitmapinfo);
mp_bitmapinfo = NULL;
}
//释放mp_byte_bitmap_data内存
if( hr_alloc_bitmap_data != ERROR_ALLOC_MEMORY_FAIL)
{
free(mp_byte_bitmap_data);
mp_byte_bitmap_data = NULL;
}
//释放兼容位图句柄
DeleteObject(mh_bitmap_compatible);
}
渔村居士
2009-03-30
打赏
举报
回复
楼主可能是保存CDC里的图像吧,我以前也碰到过类似的情况!先顶一下啦!~~
cnzdgs
2009-03-30
打赏
举报
回复
图都是你自己画的,创建个内存DC,把图画到内存DC里面然后保存。
jieleiping
2009-03-30
打赏
举报
回复
问题不明了啊,楼主要多给点信息啊。。。
IONPhantom
2009-03-30
打赏
举报
回复
你是怎么存的?截屏幕?
如果你有自己画完图片的Handle直接存不就完了?
jiabin_007
2009-03-30
打赏
举报
回复
我先试试,谢啦
cnzdgs
2009-03-30
打赏
举报
回复
把图画到内存DC上,不是复制图象。或者你用PrintWindow或者用SendMessage发WM_PRINT消息来实现。
绘制和重绘,有效
矩形
和无效
矩形
本文详细解释了Windows系统中WM_PAINT消息的工作原理及其触发条件,包括如何处理窗口重绘需求,以及有效
矩形
和无效
矩形
的概念。
绘制 和 重绘,有效
矩形
和 无效
矩形
本文深入探讨了Windows操作系统的
绘图
机制,包括有效
矩形
和无效
矩形
的概念,以及WM_PAINT消息触发的各种场景,如窗口调整大小、移动、滚动条滚动等。文章还解释了在何种条件下Windows会自动
保存
并恢复被覆盖的窗口部分。
有效
矩形
和无效
矩形
本文探讨了在Windows系统中如何使用有效
矩形
和无效
矩形
来优化窗口更新过程。详细介绍了InvalidateRect与ValidateRect函数的作用,以及它们如何帮助开发者更高效地管理窗口的重画任务。
图形处理/算法
19,464
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章