首页 mfc界面设计

mfc界面设计

举报
开通vip

mfc界面设计mfc界面设计 画直线: ye 在cview 中加入 private: CPoint m_point; //自己加的 在onlbutoondown 加入 m_point=point; //自己加的 在onlbuttonup 加入 HDC hdc; //自己加的 hdc=::GetDC(m_hWnd); MoveToEx(hdc,m_point.x,m_point.y,NULL); LineTo(hdc,point.x,point.y); ::ReleaseDC(m_hWnd,hdc); //...

mfc界面设计
mfc界面设计 画直线: ye 在cview 中加入 private: CPoint m_point; //自己加的 在onlbutoondown 加入 m_point=point; //自己加的 在onlbuttonup 加入 HDC hdc; //自己加的 hdc=::GetDC(m_hWnd); MoveToEx(hdc,m_point.x,m_point.y,NULL); LineTo(hdc,point.x,point.y); ::ReleaseDC(m_hWnd,hdc); //自己加的 完成功能 圆,直线,矩形的画法 ye1 首先在菜单添加各种ID 然后定义一个变量 m_way赋予不同的值 然后增加鼠标按下和弹起的函数处理根据m_way的值 按下:m_point=point;保存点的相关信息 弹起:CClientDC dc(this); CPen pen(m_linestyle1,m_linewidth,RGB(255,0,0)); dc.SelectObject(&pen); CBrush *pbrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); dc.SelectObject(pbrush); switch(m_way) { case 1: dc.SetPixel(point,RGB(255,0,0)); break; case 2: dc.MoveTo(m_point); dc.LineTo(point); break; case 3: dc.Rectangle(CRect(m_point,point)); break; case 4: dc.Ellipse(CRect(m_point,point)); break; } 再定义一个类: 实现设置不同的线宽和线形,在弹出框进行编写 加载位图: ye2 首先构造一幅位图(不是位图的可以转化为位图在加载),然后增加一个消息处理 BOOL CYe2View::OnEraseBkgnd(CDC* pDC) CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP2); CDC dcCompatible; dcCompatible.CreateCompatibleDC(pDC); dcCompatible.SelectObject(&bitmap); CRect rect; GetClientRect(&rect); pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY); return TRUE; //return CView::OnEraseBkgnd(pDC); 第二种情况 BOOL CYe2View::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP2); BITMAP bmp; bitmap.GetBitmap(&bmp); CDC dcCompatible; dcCompatible.CreateCompatibleDC(pDC); dcCompatible.SelectObject(&bitmap); CRect rect; GetClientRect(&rect); //pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY); pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp. bmHeight,SRCCOPY); return TRUE; //return CView::OnEraseBkgnd(pDC); } 图片根据大小而放大缩小 渐变: ye3 先定义一个变量int width; 然后在oncreat函数里输入如下函数调用 SetTimer(1,100,NULL); 最后开辟一个time消息 做如下处理: void CYe3View::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default width+=5; CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); CRect rect; rect.left=0; rect.top=200; rect.right=width; rect.bottom=rect.top+tm.tmHeight; dc.SetTextColor(RGB(255,0,0)); CString str; str.LoadString(ID_XIANSHI); dc.DrawText(str,rect,DT_LEFT); rect.top=150; rect.bottom=rect.top+tm.tmHeight; dc.DrawText(str,rect,DT_LEFT); CSize sz=dc.GetTextExtent(str); if(width>sz.cx) { width=0; dc.SetTextColor(RGB(0,255,0)); dc.TextOut(0,200,str); //dc.DrawText(str,rect,DT_LEFT); } CView::OnTimer(nIDEvent); } 动态的画线 先实现画线的代码 然后在菜单中添加一个按钮实现触发SetTime()函数定时的发送TIME消息 增加消息处理是捕获time消息,改变线长不断画线。 now+=0.1; m_pointnow.x=m_point.x+((m_point1.x-m_point.x)*now); m_pointnow.y=m_point.y+((m_point1.y-m_point.y)*now); CClientDC dc(this); CPen pen(PS_SOLID,1,RGB(255,0,0)); dc.SelectObject(&pen); if(now<=1.0) { dc.MoveTo(m_point); dc.LineTo(m_pointnow); } 加载位图: ye4 在鼠标按下处 m_point1=point; 在鼠标弹起处 CDC *hdc=GetDC(); //CClientDC hdc(this); CBitmap btm; btm.LoadBitmap(IDB_BITMAP1); BITMAP bmp; btm.GetBitmap(&bmp); CDC dc; //兼容dc dc.CreateCompatibleDC(hdc); //哪个dc兼容——当前的dc dc.SelectObject(&btm); //选进位图dc中,选定位图大小 CRect rect(m_point1.x,m_point1.y,m_point1.x+30,m_point1.y+30); //GetClientRect(&rect); // 客户端区域大小 hdc->StretchBlt(m_point1.x-15,m_point1.y-15,rect.Width(),rect.Height(),&dc,0,0,bmp.bmWi dth,bmp.bmHeight,SRCCOPY); //hdc->BitBlt(m_point1.x,m_point1.y,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY); this->ReleaseDC(hdc); 实现加载位图 然后保存位图位置用数组,连线 CWordArray array2; CWordArray array1; 按下 array1.SetAt(i,(WORD)m_point1.x); array2.SetAt(i,(WORD)m_point1.y); i+=1; 触发一个函数onlineauto() srand ((unsigned)time(NULL)); CClientDC dc1(this); for(m_line=0;m_lineSelectObject(&font); CFont *poldfont=pDC- pDC->SetTextColor(RGB(224,93,164)); pDC->SetBkMode(TRANSPARENT); pDC->TextOut(100,220,str); pDC->SelectObject(&poldfont); 窗口的外观“: BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs m_strTitle = " 网络路由仿真 "; cs.style&=~FWS_ADDTOTITLE; cs.cx=1280; cs.cy=760; cs.style&=~WS_MAXIMIZEBOX; cs.style&=~(WS_THICKFRAME|WS_MAXIMIZEBOX/*|WS_MINIMIZEBOX*/); //cs.style &= ~WS_SYSMENU; return TRUE; }
本文档为【mfc界面设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_729658
暂无简介~
格式:doc
大小:29KB
软件:Word
页数:11
分类:
上传时间:2017-09-30
浏览量:36