搜档网
当前位置:搜档网 › MFC界面设计

MFC界面设计

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 CY e2View::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 CV iew::OnEraseBkgnd(pDC);

第二种情况

BOOL CY e2View::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 CV iew::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_line

{

if(10==j)

{

j=rand()%10;

}

k=rand()%10;

if(k==j)

{

k--;

}

dc1.MoveTo(array1.GetAt(j),array2.GetAt(j));

dc1.LineTo(array1.GetAt(k),array2.GetAt(k));

}

实现随机的连线功能

加头文件

#include "stdlib.h"

#include "stdio.h"

#include "time.h"

标号处理

CString s;

s.Format(“人数%d”,x);

CClientDC dc(this);//this指针,指向所在成员函数所属的对象。

dc.TextOut(int,int,s);//这里的int int,是输出的位置。

分割窗口:

首先在框架类里加

public:

CSplitterWnd m_left;

CSplitterWnd m_leftbttm;

Cpoint pingjun;

然后开辟一个对话框(选择下层样式)

在定义类基于不同的父类,有些需要对话框资源对应Cformview就是。

再申请虚函数覆盖原来的

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

{

// TODO: Add your specialized code here and/or call the base class

CRect rect;

GetClientRect(&rect);

pingjun.x=rect.Width();

pingjun.y=rect.Height();

m_left.CreateStatic(this,1,2,

WS_CHILD|WS_VISIBLE|WS_BORDER);

m_leftbttm.CreateStatic(&m_left,2,1,

WS_CHILD|WS_VISIBLE,m_left.IdFromRowCol(0,1 ));

m_left.CreateView(0,0,RUNTIME_CLASS(CYe2Vie w),

CSize(600,pingjun.y),pContext);

m_leftbttm.CreateView(0,0,RUNTIME_CLASS(Cle ftview),

CSize((pingjun.x-600),(pingjun.y*6/10)),pCo ntext);

m_leftbttm.CreateView(1,0,RUNTIME_CLASS(Cle ftbttmview),

CSize((pingjun.x-600),(pingjun.y*4/10)),pCo ntext);

//return CFrameWnd::OnCreateClient(lpcs, pContext);

return TRUE;

}完成!!!

获得像素

int nFullWidth=GetSystemMetrics(SM_CXSCREEN);

int nFullHeight=GetSystemMetrics(SM_CYSCREEN);

如何获取列表中的选项:(Ctrl+Enter换行添加多个选项)

1.添加控件;

2.为控件添加CComboBox 类型的变量m_Combox;

3.添加CBN_SELENDOK消息响应函数,在该函数中添加以下代码:

int nIndex = m_Combox.GetCurSel();

CString strCBText;

m_Combox.GetLBText( nIndex, strCBText);

此时列表中被选中的选项被放入strCBText中;

4.根据需要添加代码;

字体的设计:

CString str="欢迎使用网络路由仿真软件!";

CFont font;

font.CreatePointFont(500,"宋体",NULL);

CFont *poldfont=pDC->SelectObject(&font);

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;

}

IP网络终端系统方案与设计

IP网络终端系统方 案与设计 1

IP 是我们公司根据市场需求将开发的第二代网络终端,要求具有友好的类WINDOWS风格的人机交互界面,在满足传统终端全部功能基础上,实现以太网联机功能(实现TELNET远程登录协议)和支持多任务的一种更新换代产品。功能需求简述如下: ●提供类WINDOWS风格的用户界面,采用桌面图标的 方式启动任务 ●实现TELNET远程登录协议 ●支持最多达8个任务同时运行 ●支持PS/2鼠标 ●支持网络版本更新 ●支持网关功能 ●支持本地和网络打印机 在此需求前提下,我们决定采用多任务嵌入式操作系统(EOS)+嵌入式GUI+终端仿真的结构来实现需求,系统结构框图描述如下: 2

一、结构设计 在此系统框图的基础上,我们分别对各层次进行结构设计分析: 1、EOS设计 当前存在的嵌入式系统多不胜数,流行的有WinCE、PalmOS、Vxwork、pSOS、Neculeus等多种系统。从当前嵌入式系统使用最 3

广泛的信息家电行业和通讯行业分析,PalmOS和WinCE、Vxwork 是当前应用最广泛的三种: ●Windows CE: Microsoft Windows CE是一个简洁的,高效率的多平台操作系统。它不是削减的Windows95版本,而是从整体上为有限资源的平台设计的多线程,完整优先权,多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制,但WinCE是非开放性操作系统,使第三方很难实现产品的定制,嵌入式操作系统追求高效、节能,而WinCE 在这方面是笨拙的,它占用过多的内存,应用程序庞大,而且入门费和许可费较高,使得整个产品的成本急剧上升。因此WinCE 多用于从高档的产品。 ●VxWorks: VxWorks所在的公司WindRiver兼并了pSOS的ISI公司,使得该公司现在有两大RTOS系统。VxWorks是当前嵌入式系统领域中使用最广泛,市场占有率最高的系统。它支持多种处理器,如x86,i960,Sun Sparc,Motorola MC68xxx,MIPS RX000,POWER PC等等。使用的是和UNIX不兼容的环境,大多数的VxWorks API是专有的。采用GNU的编译和调试器。 ●pSOS: ISI公司已经被WinRiver公司兼并,现在是属于WindRiver 4

汽车显示终端界面的配置方法与设计方案

本技术公开了一种汽车显示终端界面的配置方法,该配置方法包括如下步骤:智能终端配置步骤,打开装载有汽车显示终端界面模拟环境的智能终端,在模拟环境下,当前用户按照个人喜好对汽车的至少一个显示终端界面进行调整,生成配置信息;配置信息传输步骤,智能终端与汽车控制器间建立连接后,将配置信息发送至汽车控制器;汽车控制器将配置信息转化为第一配置指令,并将其发送至汽车显示终端,汽车显示终端在收到第一配置指令后执行第一配置指令,实现汽车显示终端界面的配置。本技术不仅能够实现对汽车显示终端界面进行配置,而且具有配置灵活、安全性好、用户体验好等突出优点,另外,本技术能够彻底避免界面调整过程对于汽车能源的浪费。 技术要求 1.一种汽车显示终端界面的配置方法,其特征在于:所述配置方法包括如下步骤, 智能终端配置步骤,打开已装载有汽车显示终端界面模拟环境的智能终端,在模拟环境下,当前用户按照个人喜好对汽车的至少一个显示终端界面进行调整,调整完成后,通 过所述智能终端自动生成配置信息;

配置信息传输步骤,所述智能终端与汽车控制器之间建立通信连接且连接成功后,所述智能终端将所述配置信息发送至所述汽车控制器;所述汽车控制器将所述配置信息转化为第一配置指令,并将其发送至汽车显示终端,所述汽车显示终端在收到第一配置指令后执行所述第一配置指令,以完成汽车显示终端界面的配置。 2.根据权利要求1所述的汽车显示终端界面的配置方法,其特征在于:所述配置方法还包括如下步骤, 模拟环境生成步骤,通过汽车控制器将汽车的显示终端界面信息通过无线和/或有线传输方式上传至车联网服务器;使所述智能终端主动建立与所述车联网服务器的无线连接,并在所述智能终端与所述车联网服务器连接成功后,所述车联网服务器将所述显示终端界面信息发送至所述智能终端,所述智能终端依据所述显示终端界面信息生成与其对应的模拟环境。 3.根据权利要求2所述的汽车显示终端界面的配置方法,其特征在于: 所述智能终端配置步骤中,还包括将所述配置信息通过无线传输方式上传至车联网服务器中的步骤; 所述配置信息传输步骤中,所述汽车控制器与所述车联网服务器之间建立通信连接且连接成功后,则所述车联网服务器将所述配置信息发送至所述汽车控制器;所述汽车控制器将所述配置信息转化为第二配置指令,并将所述第二配置指令发送至所述汽车显示终端,所述汽车显示终端在收到所述第二配置指令后执行所述第二配置指令,以完成汽车显示终端界面的配置。 4.根据权利要求2或3所述的汽车显示终端界面的配置方法,其特征在于:所述配置方法还包括如下步骤, 汽车信息注册步骤,在汽车控制器与车联网服务器首次连接时,所述汽车控制器将汽车的识别码信息上传至车联网服务器中,并在智能终端与所述车联网服务器首次连接时将用户在智能终端录入的注册信息与所述识别码信息进行匹配,并在匹配成功后允许用户注册,从而完成汽车信息注册。

智慧社区交互界面UI设计及说明

智慧社区交互终端包含功能 投资理财 出租出售 畅游常州 物管通 当前时间价比三家屏保广告 图览龙城政务公告 缴费查询新闻头条 天气 预报系统功能 已明确二级栏 目

交互界面用户操作 ?点击作为基础,滑动作为辅助的操作方式 向右滑动:返回上级目录 向上滑动:翻看下一页内容 点击:进入相应界面 向下滑动:翻看上一页内容 左滑动:切换子栏目目录

屏保广告形式 视频播放窗口,尺寸1080*635 天气预报 显示日期及时间 1.屏保大图由前端发 布,可设定每隔*秒 切换至下一张图 2.切换过程为从右向 左滑入方式 3.屏保模式下不响应 用户触摸操作 广告图片区域,从系统 端某固定位置获取,得 到该组共*张,每*秒自 动更新

视频播放窗口,尺寸1080*635天气及时间显示区域, 单独背景颜色天气预报显示日期及时间 1.七巧板为功能菜单按钮,点击从该位 置展出所有二级功能菜单(后有示意图) 2.首页七巧板以2秒周期自动晃动,提 示用户此处可点击操作 平铺二级界面入口,其中某些固定栏目(新闻头条、图览龙城、投资理财)每5秒自动刷新各栏目内最新5条图文内容(参考WIN8界面效果) 1.背景图片,可按时 间、天气等一定规 则自动更换 2.图片内容取自系统 端某固定位置 广告图片区域,从系统端某固定位置获取,得到该组共*张,每*秒自动更新栏目名称显示区,首页下显示“欢迎来到智慧社区”,二级栏目下显示二级栏目对应图标(后有示意图)

1.首页二级界面平铺展 示区在一屏内平均分 为A、B两部分,同样 第二屏乃至更多屏内 容也将均分(C、D等)2.用户向右滑动一次屏 幕,则显示B、C部分 内容,再滑动一次则 显示C、D部分内容, 以此类推 3.若目前只有A、B、C 三部分内容,则界面 只会出现A&B、B&C 的组合形式 4.滑动至尽头再向相同 方向滑动不响应 5.滑动过程需要有过场 效果

移动终端详细设计

“旅游笔记”详细设计说明书 1、引言: 1、1编写目的: 在前一阶段(概要设计说明书)中,已解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的详细设计报告中将对在本阶段中对系统所做的所有详细设计进行说明。 在本阶段中,确定应该如何具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用具体的程序语言书写的程序。主要的工作有:根据在《需求分析说明书》中所描述的数据、功能、运行、性能需求,并依照《概要设计说明书》所确定的处理流程、总体结构和模块外部设计,设计软件系统的结构设计、逐个模块的程序描述(包括各模块的功能、性能、输入、输出、算法、程序逻辑、接口等等),解决如何 1.接受:手机用户请求; 2.输出:显示地图(美食记录)、路径选择、虚拟导游(查找足迹、随身物品提醒)、足迹显示; 3.分辨信息的种类并采取相应的处理步骤; 4.判断信息的正误并采取相应的处理步骤; 5.进行数据库的查询、修改工作; 6.接受并判断错误,输出相应的出错消息; 在以下的各个阶段中,《用户操作手册》将与本阶段的工作紧密结合,努力作到让用户易懂易学。《测试报告》和《维护报告》也将参考本说明书,检验本系统的各项性能指标,及时发现纰漏及时修补,一定要把功能强大、稳定可靠、便于维护的机票预定系统交到用户手中。 1、2项目背景: 本手机“旅游笔记”系统项目主要由两部分形成: 1、手机用户的前台客户程序; 2、导航中的数据库服务器程序;

1、3文中特殊的定义和缩写: 1.3.1定义 SQL Server: 系统服务器所使用的数据库管理系统(DBMS)。 SQL: 一种用于访问查询数据库的语言 事务流:数据进入模块后可能有多种路径进行处理。 主键:数据库表中的关键域。值互不相同。 外部主键:数据库表中与其他表主键关联的域。 ROLLBACK: 数据库的错误恢复机制。 1.3.2 缩写 系统:若未特别指出,统指本机票预定系统。 SQL: Structured Query Language(结构化查询语言)。 ATM: Asynchronous Transfer Mode (异步传输模式)。 1、4参考资料 以下列出在概要设计过程中所使用到的有关资料: 1.基于Android手机导航系统的研究与设计论文百度文库 2.需求规格说明书 3.软件工程周苏、王文等天津科学技术出 4.软件工程彭 重庆大学出版社 5. 软件工程方法与实践窦万峰机械工业出版社 文档所采用的标准是参照《软件工程导论》沈美明著的“计算机软件开发文档编写指南”。 2.系统模块总体设计: 2 .1目标 2.1.1本“旅游笔记”导航系统软件主要实现的功能为: 1. 实时导航。根据用户的当前GPS位置向用户提供实时导航数据,包括图形界面、语音、路线概览等信息。 2. 地图。可以显示用户可指定地点、指定比例尺的地图数据。 3. 地址查询。通过门牌号、城市名称、大型建筑物、飞机场、美食城、

手机终端应用UI设计规范v1.2

手机移动终端设计规范(Android) V1.2版 一概述 手机UI设计是手机软件的人机交互、操作逻辑、界面美观的整体设计,置身于手机操作系统中的人机交互的窗口,设计界面必须基于手机的物理特性和软件的应用特性进行合理的设计,界面设计师首先应对手机的系统性能有所了解,手机UI一直被业界称为产品的“脸面”,一款好的手机产品一定有一套优秀的手机UI界面。手机UI从产品的图标开始,直到推出手机产品为止。产品的UI从产品概念开始,直到产品的生命周期结束,产品的UI一直深入着用户的心。一个好产品UI评价标准会影响一个产品的品牌和用户群体。 目的 主要通过调研的手段全面了解公司同事在工作中出现的问题,并把这些解决方法加入到通用规范当中,以新规范作为指引,避免在以后项目中出现同类错误,并把这种成功模式延续下去。 ●制定移动终端应用UI设计规范,加强客户对我们的认可度,对新项目有有效指引作用; ●利用终端演示系统或DEMO,和掌握的新技术应用,在项目初期阶段,可以更有效的跟客户洽谈和演示; ●对开发人员和需求人员分工,明确工作内容,提高工作效率和减少出错率 范围 此规范适用于手机界面设计人员及开发人员。 手机UI与web 手机的操作比web页面复杂,需了解其所基于的机型的硬键情况才能确定如何控制;

手机软件需要与web不同的导航形式,空间所限; 手机软件在操作步骤的缩减方面需要倾注更多的精力,每屏空间所限; 手机软件需要在控件/组件释义方面倾注更多的精力,硬键和逻辑所限。 二了解手机 手机的物理特性 1.客户端的文字输入,必须要降到最低:由于手机在输入上的低效性,在设计的过程中,应尽量减少用户 的输入,如果有可能可以设置默认值,或者让用户选择目标值。 2.客户端的信息结构好,屏与屏之间的逻辑关系清晰:由于手机屏幕都普遍较小,即使有4吋屏,那也只能 展示较少的信息量,因此,在手机设计上,更需要有清晰的信息架构,用户知道当前在哪儿,并能返回到哪儿。 3.客户端的操作、功能不要隐藏太深,重要功能都需要在界面中有适当的提示:由于手机屏幕较小,不能展 示所有的信息。因此,对重要的、使用频率高的功能或信息放在最重要的位置,并在首页上展示或指示。 4.主流分辨率:460X640 480x800 480X854 540X960 640X960 1280X720 1280X800 手机的移动特性 1.客户端的最主要的功能操作,用单手可以完成:手机的使用情景多样性,在很多情景下,用户都只能单手 来操作手机,因此,在客户端的设计过程中,需要考虑最重要的核心功能,能否单手操作完成。 2.客户端的界面必须简洁、操作简单,操作步骤少:由于用户操作情景复杂,在使用客户端的过程可能有额 外的认知负荷,因此,在设计客户端的过程中,逻辑必须简单,操作步骤也要减少。客户端的界面层次不要太深,最好不要超过3级。

相关主题