dwg图纸的预览功能
来源:互联网 发布:linux u盘安装 编辑:程序博客网 时间:2024/04/30 11:05
最近在做dwg图纸的预览功能,学习了一下前辈的代码,这里小结一下,希望能给大家帮助。
1、自定义控件实现的功能及控件的建立
1、自定义控件实现的功能及控件的建立
自定义浏览DWG控件的功能主要实现在自定义控件上预览显示DWG中的图形并实现图形的滚轮缩放、中键平移及左键框选放大功能。自定义控件继承于CStatic类。还需要ZRX GS类库中的ZcGsView 实现图形系统中的视图,用来绘制图形的区域、ZcGsDevice 实现图形系统中的设备驱动,ZcGsModel 用来控制dwg文件的实体对象交互 三个类。
//头文件如下#pragma once #include "acgi.h" #include <math.h> #include "AcGsManager.h" #include "acgs.h" #include "zgs.h" #include "aced.h" #include "dbapserv.h" #include "dbsymtb.h" //////////////////////////////////////////////////////////////////////////// h文件////////////////////////////////////////////////////////////////////////// // 预览控件类class CGsPreviewCtrl : public CStatic { DECLARE_DYNAMIC(CGsPreviewCtrl) // 支持该类动态创建的宏public: CGsPreviewCtrl() : CStatic(), m_pDevice(NULL){ } virtual ~CGsPreviewCtrl(){ clearAll(); // 类析构时要对设备和驱动进行释放} void clearAll(); // 释放 m_pManager、m_pDevice、m_pView、m_pGhostModelvoid init(HMODULE hRes); // 初始化CStatic控件void ZoomAll(); // 全图放大AcGsView* view(){ return m_pView;} // 返回 view AcGsModel* model(){ return m_pModel;} // 返回 modelAcGsDevice* device(){ return m_pDevice; } // 返回 devicebool GetActiveViewPortInfo(ads_real &height, ads_real &width, AcGePoint3d &target, AcGeVector3d &viewDir, ads_real &viewTwist, bool getViewCenter); // 获取视口参数protected: DECLARE_MESSAGE_MAP() public: HCURSOR m_hCrossCursor; // 切换十字交叉鼠标指针HCURSOR m_hPanCursor; // 切换平移鼠标指针AcGsDevice *m_pDevice; AcGsModel *m_pGhostModel; bool m_bPanning;// 平移功能 开关bool m_cpScale; // 框选放大 开关ZcGePoint3d m_cpMinPt;// 框选最小点 ZcGePoint3d m_cpMaxPt;// 框选最大点 static CPoint m_StartPt; // 记录鼠标起始点afx_msg void OnMouseMove(UINT nFlags, CPoint point); // 鼠标移动消息afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt); // 滚轮消息afx_msg void OnPaint(); // 重绘afx_msg void OnMButtonDown(UINT nFlags, CPoint point); afx_msg void OnMButtonUp(UINT nFlags, CPoint point); void OnLButtonDown(UINT nFlags, CPoint point); // 这两个不是消息事件void OnLButtonUp(UINT nFlags, CPoint point); // 通过消息预处理重新设置 鼠标点击事件virtual BOOL PreTranslateMessage(MSG* pMsg); // 实现消息预处理 处理左键点击是的焦点转换和坐标转换static AcGsManager* m_pManager; static AcGsClassFactory* m_pFactory; static AcGsModel* m_pModel; static AcGsView *m_pView; static void initGs(); // 初始化GS环境static void removeGs(); // 卸载 GS环境static CPoint getStartPoint(); static void setStartPoint(CPoint startPoint); // 为了矩形放大 int RectZoomSwitch;//矩形放大开关 CPoint m_PointOrigin; // DC 矩形框起始点数据CPoint m_PointOld; // DC 矩形框中指点数据float m_Width, m_Height; // CStatic 宽 高 用于计算矩形框缩放比例ads_real heightOri, widthOri, viewTwistOri; // 原始窗口参数储存 用于双击中间还原AcGePoint3d positionOri; // 原始窗口参数储存 用于双击中间还原 AcGeVector3d upVectorOri; // 原始窗口参数储存 用于双击中间还原 AcGePoint3d targetOri; // 原始窗口参数储存 用于双击中间还原 // bool FirstDraw; // 是否首次运行 首次运行记录视图原始参数};
//头文件如下#pragma once #include "acgi.h" #include <math.h> #include "AcGsManager.h" #include "acgs.h" #include "zgs.h" #include "aced.h" #include "dbapserv.h" #include "dbsymtb.h" //////////////////////////////////////////////////////////////////////////// h文件////////////////////////////////////////////////////////////////////////// // 预览控件类class CGsPreviewCtrl : public CStatic { DECLARE_DYNAMIC(CGsPreviewCtrl) // 支持该类动态创建的宏public: CGsPreviewCtrl() : CStatic(), m_pDevice(NULL){ } virtual ~CGsPreviewCtrl(){ clearAll(); // 类析构时要对设备和驱动进行释放} void clearAll(); // 释放 m_pManager、m_pDevice、m_pView、m_pGhostModelvoid init(HMODULE hRes); // 初始化CStatic控件void ZoomAll(); // 全图放大AcGsView* view(){ return m_pView;} // 返回 view AcGsModel* model(){ return m_pModel;} // 返回 modelAcGsDevice* device(){ return m_pDevice; } // 返回 devicebool GetActiveViewPortInfo(ads_real &height, ads_real &width, AcGePoint3d &target, AcGeVector3d &viewDir, ads_real &viewTwist, bool getViewCenter); // 获取视口参数protected: DECLARE_MESSAGE_MAP() public: HCURSOR m_hCrossCursor; // 切换十字交叉鼠标指针HCURSOR m_hPanCursor; // 切换平移鼠标指针AcGsDevice *m_pDevice; AcGsModel *m_pGhostModel; bool m_bPanning;// 平移功能 开关bool m_cpScale; // 框选放大 开关ZcGePoint3d m_cpMinPt;// 框选最小点 ZcGePoint3d m_cpMaxPt;// 框选最大点 static CPoint m_StartPt; // 记录鼠标起始点afx_msg void OnMouseMove(UINT nFlags, CPoint point); // 鼠标移动消息afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt); // 滚轮消息afx_msg void OnPaint(); // 重绘afx_msg void OnMButtonDown(UINT nFlags, CPoint point); afx_msg void OnMButtonUp(UINT nFlags, CPoint point); void OnLButtonDown(UINT nFlags, CPoint point); // 这两个不是消息事件void OnLButtonUp(UINT nFlags, CPoint point); // 通过消息预处理重新设置 鼠标点击事件virtual BOOL PreTranslateMessage(MSG* pMsg); // 实现消息预处理 处理左键点击是的焦点转换和坐标转换static AcGsManager* m_pManager; static AcGsClassFactory* m_pFactory; static AcGsModel* m_pModel; static AcGsView *m_pView; static void initGs(); // 初始化GS环境static void removeGs(); // 卸载 GS环境static CPoint getStartPoint(); static void setStartPoint(CPoint startPoint); // 为了矩形放大 int RectZoomSwitch;//矩形放大开关 CPoint m_PointOrigin; // DC 矩形框起始点数据CPoint m_PointOld; // DC 矩形框中指点数据float m_Width, m_Height; // CStatic 宽 高 用于计算矩形框缩放比例ads_real heightOri, widthOri, viewTwistOri; // 原始窗口参数储存 用于双击中间还原AcGePoint3d positionOri; // 原始窗口参数储存 用于双击中间还原 AcGeVector3d upVectorOri; // 原始窗口参数储存 用于双击中间还原 AcGePoint3d targetOri; // 原始窗口参数储存 用于双击中间还原 // bool FirstDraw; // 是否首次运行 首次运行记录视图原始参数};
0 0
- dwg图纸的预览功能
- 获取DWG图纸块的属性字串
- 怎样打开查看dwg格式的图纸
- android dwg图纸解决方案
- 复制图纸空间的视口到另一个dwg文件中
- solidwork编辑dxp输出的dwg格式图纸
- AUTOCAD的DWG图纸怎么转换成PDF文件
- CAD编辑技巧之PDF转DWG和DWG图纸的编辑
- android 加载dwg 图纸解决方案
- 复制图纸空间的视口到另一个dwg文件中2(wblockcloneobjects方法)
- 利用AutoCAD I/O 和View & Data 做DWG图纸的无纸化签字
- DWGSee看图纸dwg文件阅读器免费下载地址
- 图纸格式dwg批转pdf如何操作
- DWG预览(无须CAD平台)
- C#实现DWG图片预览
- DWG预览(无须CAD平台)
- CAD控件教程:网上打开dwg文件时,对dwg文件路径加密的功能
- 高精度快速预览打开dwg文件的CAD控件CAD Image DLL介绍及下载
- CCScrollView 和 CCLabelTTF 组成CCScrollLabel
- compile-native for hadoop
- 图像处理与计算机视觉基础,经典以及最近发展
- 学习笔记_web——js特效2DOM
- 数组指针和指针数组的区别
- dwg图纸的预览功能
- Eclipse上GIT插件EGIT使用手册
- Android五大布局(一)——LinearLayout、FrameLayout和AbsoulteLayout
- ios-multitasking-应用转入后台时,如何继续后台运行任务
- SIFT匹配算法分析(Practical OpenCV)
- 【scala系列】hello world小程序
- Java反射机制
- Web前端开发十日谈
- 数值温度传感器18b20驱动分析