标题:[求助]图形编成
只看楼主
名人
Rank: 1
等 级:新手上路
威 望:1
帖 子:205
专家分:0
注 册:2006-3-3
 问题点数:0 回复次数:3 
[求助]图形编成
使用鼠标在一个单文档的客户区域绘制一个图形后,最小化窗口在恢复窗口,刚刚绘制的图形就没有了,该怎么办呢?如果代码写在OnDraw函数中就没有这个问题,但是我想在鼠标的左键按下的事件里面写这个问题改怎么解决呢?
请高手指点
搜索更多相关主题的帖子: 图形 编成 
2006-05-25 09:26
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
得分:0 
用一个内存DC存储你每次事件函数中绘制的图形,然后在onDraw中每次将这个内存DC拷贝到主屏上

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-25 09:54
名人
Rank: 1
等 级:新手上路
威 望:1
帖 子:205
专家分:0
注 册:2006-3-3
得分:0 
以下是引用aogun在2006-5-25 9:54:00的发言:
用一个内存DC存储你每次事件函数中绘制的图形,然后在onDraw中每次将这个内存DC拷贝到主屏上

不太明白,比如我在鼠标事件中画个矩形如下:
void CDrowView::OnLButtonDown(UINT nFlags, CPoint point)
{
pDC = GetDC(); // CDC * pDC;在视图类中声明
CPen pen(PS_SOLID,m_wndToolBar.iPanWidth,RGB(0,0,255));
CPen *pPen = pDC->SelectObject(&pen);
pDC->Rectangle(CRect(5,55,50,85));
CView::OnLButtonDown(nFlags, point);
}
那怎样把pDC在onDraw中每次将这个内存DC拷贝到主屏上?onDraw函数中怎么写?


未必钱多乐便多,财多累己招烦恼。 清贫乐道真自在,无牵无挂乐逍遥。
2006-05-25 10:48
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
得分:0 

我这有点非MFC的代码,已经测试过了可以的,我就不重写成MFC中的类了了,你照着下面的代码改成MFC中的类就行了,或者直接用就行
定义两个变量:
HDC g_MemDC;
HBITMAP g_hBitmap;

在InitDialog中:
[CODE] HDC hdc = GetDC()->m_hDC;
CRect rcClient;
GetClientRect(&rcClient);
g_hBitmap = CreateCompatibleBitmap (hdc, rcClient.right, rcClient.bottom) ;
g_MemDC = CreateCompatibleDC (hdc) ;
SelectObject (g_MemDC, g_hBitmap) ;
PatBlt (g_MemDC, 0, 0, rcClient.right, rcClient.bottom, WHITENESS) ;[/CODE]
OnMouseMove函数中:

[CODE] pDC->LineTo(point.x, point.y);
pDC->MoveTo(point.x, point.y);

LineTo (g_MemDC, point.x, point.y) ;
MoveToEx (g_MemDC, point.x, point.y, NULL) ;[/CODE]
OnPaint方法中:
[CODE] CPaintDC dc(this);
CRect rcClient;
GetClientRect(&rcClient);
BitBlt (dc.m_hDC, 0, 0, rcClient.right, rcClient.bottom, g_MemDC, 0, 0, SRCCOPY) ;[/CODE]



世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-25 11:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-66962-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089536 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved