孙鑫VC++视频学习笔记之11:图形保存和重绘

孙鑫VC++视频学习笔记之11:图形保存和重绘

ID:38183784

大小:28.00 KB

页数:6页

时间:2019-05-24

孙鑫VC++视频学习笔记之11:图形保存和重绘_第1页
孙鑫VC++视频学习笔记之11:图形保存和重绘_第2页
孙鑫VC++视频学习笔记之11:图形保存和重绘_第3页
孙鑫VC++视频学习笔记之11:图形保存和重绘_第4页
孙鑫VC++视频学习笔记之11:图形保存和重绘_第5页
资源描述:

《孙鑫VC++视频学习笔记之11:图形保存和重绘》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1,透明画刷    CClientDCdc(this);    CBrush*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));    dc.SelectObject(pBrush);    2,保存绘制的图像(窗口重绘时仍然存在)    CGraphView类中添加m_ptOrigin,m_ptEnd,m_nDrawType三个变量,分别用于保存图像起始点、终止点和图像类型    1)构造一个CGraph类,用于存放每个对象    头文件

2、Graph.h    #if!defined(AFX_GRAPH_H__)    #defineAFX_GRAPH_H__        #if_MSC_VER>1000    #pragmaonce    #endif//_MSC_VER>1000        classCGraph    {    public:    UINTm_nDrawType;    CPointm_ptOrigin;    CPointm_ptEnd;    CGraph();    CGraph(UINTm_nDrawType,

3、CPointm_ptOrigin,CPointm_ptEnd);    virtual~CGraph();        };    2),因为不知道将会绘制多少图像对象,用集合类来替代复杂的链表结构。View类中定义,添加    CPtrArraym_ptArray;    3),在OnLButtonDown和OnLButtonUp中分别保存两个点,并在OnLButtonUp中添加以下语句,用集合类来保存图像元素    //CGraphgraph(m_nDrawType,m_ptOrigin,m_ptEnd);

4、这种方法是错误的,因为局部变量将被销毁    CGraph*pGraph;    pGraph=newCGraph(m_nDrawType,m_ptOrigin,m_ptEnd);//在堆中分配内存,不会被释放,生命周期和进程一致,直至delete出现    m_ptArray.Add(&graph);        CPaintDC只能在WM_PAINT的消息相应中使用,其创建和析构调用BenginDC和EndDC    CClientDC创建时调用GetDC,析构时调用ReleaseDC    OnPrepa

5、reDC,对CScrollView调用OnPrepareDC会做调整,    OnPaint()函数为WM_PAINT的相应函数,如果没有重载OnPaint函数,那么OnPaint基函数是直接调用OnDraw函数。如果重载了OnPaint()函数,那么只有在子类中OnPaint()的调用OnDraw()        Win32应用程序接口(API)使用四种坐标空间:世界坐标系空间、页面空间、设备空间、和物理设备空间。应用程序运用世界坐标系空间对图形输出进行旋转、斜切(扭曲)或者反射    Win32API把世界

6、坐标系空间和页面空间成为逻辑空间;作后一种坐标空间(物理设备空间)通常指应用程序窗口的客户区;但是它也包括整个桌面、完整的窗口(包括框架、标题栏和菜单栏)或打印机的一页或绘图仪的一页纸。物理设备的尺寸随显示器、打印机或绘图仪所设置的尺寸而变化。    如果要在物理设备上绘制输出,windows把一个矩形区域从一个坐标空间拷贝到(映射到)另一个坐标空间,直至最终完整地输出呈现在物理设备上(通常是屏幕或者打印机)    如果该应用程序调用了SetWorldTransform函数,那么映射就从应用程序的世界坐标系空间开

7、始;否则,映射在页面控件中进行。在Windows把矩形区域的每一点从一个空间拷贝到另一个空间时,它采用了一种被称为转换的算法,转换是把对象从一个坐标空间拷贝到另一个坐标空间时改变(转变)这一对象的刀削、方位、和形态,尽管转换把对象看成一个整体,但它也作用于对象中的每一点或每条线。    一个典型转换的例子    图形旋转、斜切的例子在MSDN中usingCoordinatespacesandtransformations中有TransformAndDraw函数的实现,可以仿照之。例如AutoCAD中对图像的切割、

8、旋转、局部放大等。    OnInitialUpdate,窗口创建完成后,第一个被调用的函数    SetMapMode函数    SetScrollSizes在窗口创建之后调用    滚动窗口中重绘图像时出现的图形移动问题    1,原因:重绘时调用了OnPrepareDC设置了视点坐标    2,保存数据时先调用OnPrepareDC调整,再调用DPtoLP转换后,再

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。