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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。