MFC控件
毕业季的迷茫
IT小虾
展开
-
OpenGL显示STL模型之光照设置
显示STL模型, 全部都是三角面片, 使用光照需要注意三角面片的法线, 法线的归一化尤为重要。模型经过glScale变换之后, 原来的法线变得不正确, 光照效果变得不理想。解决此问题的方法是启用OpenGL自动法线单位化功能,该功能会影响性能。glEnable( GL_NORMALIZE );较好的方法是提前将STL模型的法线单位化。另外需要注意的是, 观察位置gluLookAt常常要与光照一起设置。以下是经验使用方式:void SetLight(){ GLFloat box = s原创 2021-11-09 22:10:34 · 546 阅读 · 0 评论 -
OpenGL模拟地月星系运动
运动规则:-> 地球绕太阳公转, 公转半径为 R-> 月球绕地球公转, 公转半径为 r-> 太阳、地球、月球各自自转OpenGL模型变换原则, 对当前模型坐标系进行操作,无论是旋转、平移、缩放。可以想象成有很多模型坐标系,起初模型坐标系与世界坐标系重合。glRotated 当前坐标系(相对于世界坐标系)进行旋转glTranslated 当前坐标(相对于世界坐标系)进行平移glScale 当前坐标系(相对于世界坐标系)缩放doub...原创 2021-11-09 22:09:10 · 580 阅读 · 0 评论 -
3D视角旋转平移鼠标响应制作
OpenGL处理3D视角以及旋转变换的一个关键思路是归一化处理。归一化处理就是将数据进行单元化,将所有需要显示的数据等比例装在一个1X1X1的立方体里。然后OpenGL去显示这个立方体,设置视角gluLookAt eyex, eyey, eyez都以立方体的边长单位化。鼠标控制旋转的方法:->> 鼠标横向移动,控制图形绕着Y轴旋转;鼠标纵向移动,控制图形绕着X轴旋转;->> 鼠标一次移动消息中,只处理Y旋转或只处理X旋转;->> 鼠标滚轮控制图像绕着Z轴旋转原创 2021-11-09 22:08:06 · 275 阅读 · 0 评论 -
OpenGL真实坐标转换为投影后的坐标
真实坐标可以通过OpenGL的投影函数计算投影之后的坐标。在HLCut中用于处理鼠标点选操作。思路:获取OpenGL模型矩阵和投影矩阵,通过投影函数计算。函数: gluProjectdouble objx, objy, objz; // 保存着真实坐标GLint viewport[4];GLdouble mvmatrix[16], projmatrix[16];glGetIntegerv(GL_VIEWPORT, viewport);glGetDoublev(GL_MODELVIEW_M.原创 2021-11-09 22:06:51 · 416 阅读 · 0 评论 -
3D视图中获取鼠标所在位置
在3D视图中,经过旋转、缩放、平移之后,任然可以获取鼠标位置对应的真实坐标。思路:获取OpenGL模型矩阵和投影矩阵, 对鼠标位置信息进行反投影计算。主要函数:glReadPixels 通过深度缓存获取Z坐标gluUnProject 实现反投影POINT point; // 鼠标位置GLint viewport[4];GLdouble mvmatrix[16], projmatrix[16];glGetIntegerv(GL_VIEWPORT, viewport); // viewport.原创 2021-11-09 22:04:00 · 493 阅读 · 0 评论 -
MFC中使用OpenGL简单框架的搭建
#pragma onceclass COpenGLWnd : public CWnd{ DECLARE_DYNAMIC(COpenGLWnd)public: COpenGLWnd(); virtual ~COpenGLWnd(); int MySetPixelFormat(HDC hdc); void SetViewPortSize(); HDC m_hDC; HGLRC m_hRC;protected: DECLARE_MESSAGE_MAP()public: af.原创 2021-11-09 22:02:51 · 934 阅读 · 0 评论 -
VC复制字符串到剪贴板
BOOL CopyToClipboard(HWND hWnd, CString& str){ if (!OpenClipboard(hWnd)) { AfxMessageBox(TEXT("Cannot open the Clipboard")); return FALSE; } if (!EmptyClipboard())//清空剪贴板 { AfxMessageBox(TEXT("Cannot empty the Clipboard")); return FALSE;.原创 2021-11-04 20:10:34 · 469 阅读 · 0 评论 -
CListCtrl图标与复选框使用
1. 首先类向导生成一个 CListCtrl 控件对象 m_listDO2. 添加CImageList对象,并与m_listDO绑定m_imgList.Create(16, 16, ILC_COLOR24, 2, 2);m_imgList.Add(AfxGetApp()->LoadIcon(IDI_OFF));m_imgList.Add(AfxGetApp()->LoadIcon(IDI_ON));m_listDO.SetImageList(&m_imgList, LVS原创 2021-11-04 20:08:59 · 512 阅读 · 0 评论 -
CListCtrl子项图标和勾选
设置子项图标设置列表的扩展属性, 必须是LVS_REPORT类型的列表m_listIn.SetExtendedStyle(m_listIn.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES | LVS_EX_GRIDLINES);创建图像列表m_imgList.Create(16, 16, ILC_COLOR4, 0, 1);m_imgList.Add(LoadIcon(AfxGetInstanceHandle(),原创 2021-03-30 16:27:07 · 298 阅读 · 0 评论 -
CTreeCtrl 控件使用
1. 插入节点插入根节点 HTREEITEM hRoot; CString str=L"ROOT" hRoot=nTreeCtrl.InsertItem(str); //相当于 hRoot=nTreeCtrl.InsertItem(str,TVI_ROOT,TVI_LAST);插入孩子节点 //添加hRoot节点的孩子节点,并且被添加的节点位于hRoot所有孩子节点的末尾 HTREEITEM hChild=nTreeCtrl.InsertIt...原创 2021-02-05 13:51:42 · 472 阅读 · 0 评论 -
CListCtrl自会(codeproject文章)
Neat Stuff to Do in List Controls Using Custom DrawIntroductionVersion 4.70 of the common controls introduced a feature called custom draw. The name gives a vague hint about what it's about and the MSDN docs give some long-winded explanations and exampl原创 2021-02-05 13:46:32 · 262 阅读 · 0 评论 -
CListCtrl使用
设置CListCtrl选中行m_list.SetItemState(nIndex, LVIS_FOCUSED | LVIS_SELECTED,LVIS_FOCUSED | LVIS_SELECTED);m_list.SetSelectionMark(nIndexs);取消CListCtrl选中行m_list.SetItemState(nIndex, 0, LVIS_SELECTED);m_list.SetSelectionMark(-1);CListCtrl选中行改变响应响应LV.原创 2021-02-05 13:41:16 · 731 阅读 · 0 评论