南师大人机交互技术复习提纲.docx

上传人:b****3 文档编号:13268052 上传时间:2023-06-12 格式:DOCX 页数:20 大小:65.91KB
下载 相关 举报
南师大人机交互技术复习提纲.docx_第1页
第1页 / 共20页
南师大人机交互技术复习提纲.docx_第2页
第2页 / 共20页
南师大人机交互技术复习提纲.docx_第3页
第3页 / 共20页
南师大人机交互技术复习提纲.docx_第4页
第4页 / 共20页
南师大人机交互技术复习提纲.docx_第5页
第5页 / 共20页
南师大人机交互技术复习提纲.docx_第6页
第6页 / 共20页
南师大人机交互技术复习提纲.docx_第7页
第7页 / 共20页
南师大人机交互技术复习提纲.docx_第8页
第8页 / 共20页
南师大人机交互技术复习提纲.docx_第9页
第9页 / 共20页
南师大人机交互技术复习提纲.docx_第10页
第10页 / 共20页
南师大人机交互技术复习提纲.docx_第11页
第11页 / 共20页
南师大人机交互技术复习提纲.docx_第12页
第12页 / 共20页
南师大人机交互技术复习提纲.docx_第13页
第13页 / 共20页
南师大人机交互技术复习提纲.docx_第14页
第14页 / 共20页
南师大人机交互技术复习提纲.docx_第15页
第15页 / 共20页
南师大人机交互技术复习提纲.docx_第16页
第16页 / 共20页
南师大人机交互技术复习提纲.docx_第17页
第17页 / 共20页
南师大人机交互技术复习提纲.docx_第18页
第18页 / 共20页
南师大人机交互技术复习提纲.docx_第19页
第19页 / 共20页
南师大人机交互技术复习提纲.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

南师大人机交互技术复习提纲.docx

《南师大人机交互技术复习提纲.docx》由会员分享,可在线阅读,更多相关《南师大人机交互技术复习提纲.docx(20页珍藏版)》请在冰点文库上搜索。

南师大人机交互技术复习提纲.docx

南师大人机交互技术复习提纲

人机交互技术复习提纲

1文件系统

1请定义一个类,存储管理指定文件夹下的所有文件名及其属性,写出该类的构造函数。

指出该类的应用背景。

ClassclsDirectory

PrivateFileNamesAsList(OfString)

PrivateLVasList(OfListViewItem)

Endclass

SubNew(pathnameasstring)

FileNames=Directory.GetFiles(PathName).ToList//得到文件名的集合

LV=newList(OfListViewItem)

Fori=0ToFileNames.Count–1

Item=newListViewItem

Item.SubItems.Add(…FileNames(i).…)//设置属性项目:

创建时间、大小

LV.Add(Item)

Next

EndSub

应用背景:

在ListView控件中,显示查询文件属性列表

1请定义一个类,存储管理指定文件夹下的所有子文件夹,写出该类的构造函数。

ClassclsDirectory

privatefoldnamesAslist(ofstring)//子文件夹的名称集合

publicNodeAsTreeNode'TreeView中的对应节点

Endclass

SubNew(pathnameasstring)

foldnames=Directory.GetDirectories(pathname).Tolist

iffoldnames.count=0thenNode=nothing:

Return

Node=NewTreeNode(pathname)

Fori=0tofoldnames.count-1

DimNodeiasclsDirectory=NewclsDirectory(foldnames(i))

node.Nodes.Add(Nodei.Node)

Next

EndSub

应用背景:

在TreeView控件中,显示查询目录树结构

2TreeView控件

1请编写函数,将指定的Tuple类型数据(例如:

(“dad”,”son”))插入到TreeView控件中。

SubInsert(tvasTreeView,tasTuple

Node=Find(tv.Root,t.item1)//找插入的节点

Node.children.add(t.item12)//加入新节点

Endsub

FunctionFind(NodeasTreeViewNode,keyasstring)asTreeViewNode

Ifnode.Text=keyThenReturnnode

Fori=0toNode.children.count-1

Dimnode1AsTreeNode=Find(Node.children(i),key)

Ifnode1isnothingthenreturnnode1

Nexti

Returnnothing

EndFunction

1请编写函数,在TreeView控件中,删除text属性等于指定字符串key的结点及其子树。

SubDelete(tvasTreeView,keyasstring)

Node=Find(tv.Root,key)//找待删除的节点的父节点

ParentNode=Node.Parent()

parentnode.Nodes.Remove(node)

Endsub

FunctionFind(NodeasTreeViewNode,vasstring)asTreeViewNode

同上

3动态控件

1请编写函数,创建一列n个按钮控件,并指定每个按钮的Click事件。

Functionf(n)aslist(ofButton)

DimButtonsasnewlist(ofButton)

Fori=0ToN-1

Buttons.Add(NewButton)

AddHandlerButtons(i).Click,AddressOfButton_Click

Next

ReturnButtons

Endsub

1请编写函数,创建一列n个文本控件,并指定每个文本控件的TextChange事件。

Functionf(n)aslist(oftextBox)

DimtextBoxsasnewlist(oftextBox)

Fori=0ToN-1

textBoxs.Add(NewtextBox)

AddHandlertextBoxs(i).TextChange,AddressOfTextBox_TextChange

Next

ReturnTextBoxs

Endsub

4线程之间的操作

1在窗体frmTest的列表框lstMessage中,显示另一个线程对象FileSystemWatcher的信息。

请说明之间的流程。

一个窗口对应一个线程,该线程拥有读写窗口中控件的权利。

这意味着另一个线程对象不能拥有这种权利,否则无法保证控件数据的合法性。

PublicClassfrmTest

SubDisplay(msgasstring)

lstMessage.items.add(msg)

End

DelegateSubAppendMessage(msgAsString)//委托类型:

函数指针类型

PrivateoutputasAppendMessage//委托对象:

具体的函数地址

PrivateSubfrmTest_Load()

output=newAppendMessage(addressMe.Display)

EndSub

PublicWithEventsWatcherAsFileSystemWatcher//另一个线程对象:

能接受事件

PrivateSubWatcher_Created(e)//文件系统发生创建文件的事件

DimfilenameAsString=e.FullPath

Invoke(output,filename)

EndSub

5自定义事件

1以绘图程序为例,说明自定义事件的使用方法。

在图形对象集合中,设置事件,以便在集合发生变化时,界面进行绘图操作。

ClassclsElems//图形对象集合类

Privateelemsaslist(ofElem)

EventAppend()//定义事件

SubAppend(easElem)

Elems.Add(e)

RaiseEventAppend()//产生事件

Endsub

Endclass

frmTest:

界面类

dimwithEventsElemsasclsElems//能够接受事件

SubDraw()handleElems.Append//响应事件

clsElems.Draw(…..)

EndSub

endsub

1以智能输入为例,说明自定义事件的使用方法。

PublicClassfrmListBox

PublicEventCharPress(CAsChar)//定义事件

PrivateSublstWords_KeyPress(e)

…..

RaiseEventCharPress(e.KeyChar)'产生事件

EndSub

EndClass

PublicClassfrmTest

DimWithEventsfrmAsfrmListBox//能够接受事件

PrivateSubfrm_CharPress(CAsChar)Handlesfrm.CharPress//响应事件

txtContent.SelectedText=C

EndSub

EndClass

6多线程与并行

1设某计算任务由整数参数n1…n2决定,需要消耗较长时间,可能导致界面无法响应事件。

使用BackgroundWorker对象可以解决此类问题。

请说明使用BackgroundWorker对象的方法,要求在计算完成时,将结果输出。

StructureWorkerPara

Dimn1AsInteger

Dimn2AsInteger

EndStructure

PublicClassfrmTest

DimbkWorkAsBackgroundWorker

PrivateSubbtnStart_Click()

DimparaAsWorkerPara={1000,100000}

bkWork.RunWorkerAsync(para)

EndSub

PrivateSubbkWork_DoWork()…..

DimparaAsWorkerPara=e.Argument'提取所需的所有参数

DimsumAsSingle=js(para.n1,para.n2)'计算任务

e.Result=sum'将计算结果赋给Result属性(Object类型)。

EndSub

PrivateSubbkWork_RunWorkerCompleted()…//在计算完成时,将结果输出

txtResult.Text=e.Result

EndSub

1请举例说明Parallel.For的使用方法。

PublicClassclsParallelArray

ConstElemCountAsInteger=100000

PrivateA(ElemCount)AsSingle

PublicsubRunParallel()'启动并行处理

TaskCountAsInteger=10'并行的任务个数

'将任务分成TaskCount个子任务:

编号为[0,TaskCount-1]

Parallel.For(0,100,AddressOfDoParallel)

EndFunction

PrivateSubDoParallel(iAsInteger)'安排并行子任务的参数

'根据子任务的编号i,计算子任务的参数

Dimn1AsInteger=ElemCount/TaskCount'子任务计算的数据个数

DimsiAsInteger=i*n1'子任务计算的起始下标

Do1(si,n1)'每个任务的计算范围A(si)...A(si+n1-1)

EndSub

'执行每个并行子任务

PrivateSubDo1(siAsInteger,n1AsInteger)

ForI=siTosi+n1-1

A(I)=……

Next

EndSub

7命令序列、正则表达式

1在文本编辑中,常常有对命令序列的管理要求。

请写出基本操作的类型定义,及命令序列的存储结构。

PublicMustInheritClassclsOp

PublicMustOverrideSubDoWork(txtContentAsTextBox)//虚函数

PublicMustOverrideSubUnDo(txtContentAsTextBox)

EndClass

PublicClassclsInsertOp

InheritsclsOp

PrivatepositionAsInteger,newcharsAsString

EndClass

PublicClassclsDeleteOp

InheritsclsOp

PrivatepositionAsInteger,lengthAsInteger

PrivatedeletetxtAsString'删除的文本

EndClass

PublicClassclsOps

PrivatetxtContentAsTextBox

PrivateOpsAsList(OfclsOp),ithAsInteger

PublicSubUndo()

Ops(ith-1).UnDo(txtContent)

ith-=1

EndSub

PublicSubRedo()

Ops(ith).DoWork(txtContent)

ith+=1

EndSub

EndClass

2在读结构化文本文件、分析行命令时,正则表达式有广泛的应用。

请举例说明之。

8图像运算

1在图像处理中,位图的数据类型是什么?

请写出读写像素的函数,颜色值的分解组合函数?

DimSourceAsBitmap=NewBitmap(“…….”)

Source.Save(“…….”)

DimcAsColor=Target.GetPixel(p.X,p.Y)

Target.SetPixel(p.X,p.Y,c)

DimcAsColor=Color.FromArgb(255,0,0)

R=c.red

2在播放幻灯片时,有许多图像切换特效。

请举例说明其实现方法。

PublicClassclsTimer

PrivateImageAsBitmap,gasGraphics

PrivateTimerAsTimer

PublicSubNew(gasGraphics)

Image=NewBitmap(“…….”)

Me.g=g

Timer=NewTimer

AddHandlerTimer.Tick,AddressOfTimerTick

Timer.Enabled=True

EndSub

PrivateSubTimerTick()

……

g.DrawImage(Image,rect1,rect2,…)

EndSub

3区域选择是图像处理中的基本操作,请说明区域选择的方法,区域的数据结构,及可能的操作。

图的遍历操作

9基于矩阵的线性变换

1绘图软件和图像处理中,都存在线性变换,请写出平移、变比、旋转的变换矩阵。

2请写出绕指定点

旋转θ角的变换矩阵。

将原点平移到

绕原点逆时针旋转θ角

将原点平移到

总变换矩阵

3绘图软件中,用户应能设定作图的范围,并在该范围内利用鼠标绘图。

请写出实现方法。

将自定义坐标系中的坐标转换为像素点坐标,用于绘图

将鼠标点坐标(像素),转换为自定义坐标系中的坐标,用于创建图形对象

10动态绘图技术

1绘图软件中,创建图形对象中的橡皮筋技术,极大的改善了绘图界面,请说明其中的事件流程。

以绘制直线段为例说明

DimspAsPointF'临时变量,用于创建Line,Rectangle

DimlastelemAsclsElem=Nothing

PrivateSubpicCanvas_MouseDown()

sp=e.Location

EndSub

PrivateSubpicCanvas_MouseMove()

IflastelemIsNotNothingThen

lastelem.Draw(g,bkcolor)'擦出旧的临时对象

EndIf

DimepAsPointF=e.Location

lastelem=NewclsLine(sp,ep)'创建新的临时对象

lastelem.Draw(g)'绘制新的临时对象

EndSub

PrivateSubpicCanvas_MouseUp()

DimepAsPointF=e.Location

lastelem=Nothing

Elems.Append(NewclsLine(sp,ep))

EndSub

1绘图软件中,编辑图形对象中的拖动技术,极大的改善了绘图界面,请说明其中的事件流程。

拖动的过程:

擦除旧的影子,绘制新的影子

以平移为例:

DimShadowAsclsSelection'被拖动的选集的影子

DimspAsPointF

DimLastMAsclsMatrix3'拖动过程中的"上一次矩阵"

PrivateSubpicCanvas_MouseDown()

sp=e.Location

Shadow=Elems.Selection.Clone()

LastM=Nothing

EndSub

PrivateSubpicCanvas_MouseMove()

DimepAsPointF=e.Location

StaticspAsPointF

IfLastMIsNothingThen

sp=Me.sp'拖动开始时的起点(拖动过程中Me.sp保持不变)

Else

Shadow.Draw(picCanvas.CreateGraphics,LastM,ObjectState.None)'擦出旧影子

EndIf

M.SetPan(ep.X-sp.X,ep.Y-sp.Y)'影子移动一小步

Shadow.Transform(M)

Shadow.Draw(picCanvas.CreateGraphics,M,ObjectState.Drag)'绘制新的影子

LastM=M

sp=ep

EndSub

PrivateSubpicCanvas_MouseUp()

DimmAsclsMatrix3=NewclsMatrix3

m.SetPan(ep.X-sp.X,ep.Y-sp.Y)

Elems.Transform(m)

EndSub

11图形对象的选择技术

1绘图软件中,图形对象的管理是如何实现的?

请写出图元类的结构定义。

PublicMustInheritClassclsElem

PublicMustOverrideSubDraw(gAsGraphics)

EndClass

ClassclsLine

InheritsclsElem

PublicOverridesSubDraw(gAsGraphics)

g.DrawLine(CommonPen,Sp,Ep)

EndSub

EndClass

PublicClassclsElems

PublicelemsAsList(OfclsElem)

PublicSubDraw(ByValgAsGraphics)

Fori=0Toelems.Count-1

elems(i).Draw(g)

Next

EndSub

EndClass

1绘图软件中,图形对象的点选择,是如何实现的?

请写出相关的类中的方法接口。

PublicMustInheritClassclsElem

PublicMustOverrideFunctionSelectByPoint(ByValpAsPointF)AsBoolean

EndClass

ClassclsLine

InheritsclsElem

PublicOverridesFunctionSelectByPoint(ByValpAsPointF)AsBoolean

…….

EndFunction

EndClass

PublicClassclsElems

PublicFunctionSelectByPoint(ByValpAsPointF)asclsElem

Fori=0ToElems.Count-1

IfElems(i).SelectByPoint(p)=TrueThen

ReturnElems(i)

EndIf

Next

ReturnNothing

EndSub

EndClass

1已知两点坐标p1(x1,y1),p2(x2,y2),请写出直线段的参数方程;并写出点p(x0,y0)与直线段p1p2的距离计算方法。

直线段的参数方程

…………①

直线段的单位方向向量:

过任一点p(x0,y0)垂直于p1p2的直线方程:

…………②

计算式1与式2的交点。

若t=[0,1],则存在交点。

否则不存在交点。

12图形对象的层次结构

1良好的绘图软件,应该支持层次化的图形对象结构。

请写出自定义块类和块插入对象类的定义。

'块:

保管着被选择的图形对象的副本的集合

PublicClassclsBlock

PrivateElemsAsList(OfclsElem)

PrivateBasePointAsPointF

EndClass

'块插入对象:

保管着块的引用,及变换矩阵

PublicClassclsBlockInsert

InheritsclsElem

PrivateBlockAsclsBlock

PrivateMAsclsMatrix3'对Block中所有图形对象的变换矩阵

EndClass

1良好的绘图软件,应该支持层次化的图形对象结构。

请写出块插入对象类的绘图函数定义。

PublicClassclsBlockInsert

InheritsclsElem

PrivateBlockAsclsBlock

PrivateMAsclsMatrix3'对Block中所有图形对象的变换矩阵

PublicOverridesSubDraw(ByValgAsGraphics)

Fori=0ToBlock.Count-1

Block.Item(i).Draw(g,M)

Next

EndSub

13图形对象的属性管理

1在绘图软件中,层对象是如何实现属性管理的?

PublicClassclsLayer

PublicNameAsSt

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2