




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Windows8平板
黑板画详细设计说明书
一、公共类的定义2
1.1黑板页类2
1.2黑板画类2
1.3页面类的应用3
1.4全局会话5
二、其他类的设计6
2.1角度计算类6
2.2黑板页类6
三、主程序的设计8
3.1变量(属性)的设计9
3.2连接SkyDrive函数10
3.3设置画笔的参数10
3.4界面导航函数的设计10
3.5绘图函数11
3.6构造函数13
3.7填充字的大小函数13
3.8设置画笔颜色函数14
、公共类的定义
1.1黑板页类
BlackBoardPage一块黑板页类,其功能如下:增加一个几何图形路劲、删除最
后一个路径、删除最后一个路径、删除所有路径、在容器中显示内容CanvasorGrid、
图形路径的数量。
主要函数如下:
publicvoidAddOnePath(Windows.UI.Xaml.Shapes.Pathpath)//增加一个
几何图形路劲:path包含了几何图形
publicvoidDeleteLastPathO〃删除最后一个路径
publicboolDeleteOnePath(Windows.UI.Xaml.Shapes.Pathpath)〃删除
最后一个路径
publicvoidClearPath()〃删除所有路径
publicvoidShowInPanel(Panelpanel)〃在容器中显示内容CanvasorGrid
publicintCount()〃图形路径的数量
1.2黑板画类
BlackBoardBook黑板页册子类,其包含多个黑板页。其功能包含读入及保存黑
板册子的内容,遍历每一页、每一个路径、笔画的颜色,填充的颜色,点画线的配
合,配置参数的写入于读出。
主要功能函数有:
publicasyncTaskLoad(stringFilename)〃加载黑板册子文件内容
voidReadConfig(BinaryReaderreader)〃读入配置参数
voidReadPages(BinaryReaderreader)〃读入书的内容
voidReadOnePage(BinaryReaderreader,BlackBoardPageonePage)〃读入每
一页
voidReadOnePath(BinaryReaderreader,Windows.UI.Xaml.Shapes.Path
path)〃读入每一个路径的画笔颜色、填充颜色、图形的透明度
asyncpublicvoidSave(BlackBoardBookbook)〃保存整个书
voidWriteConfig(BinaryWriterwriter)〃写入配置参数
voidWritePages(BinaryWriterwriter)
voidWriteOnePage(BinaryWriterwriter,BlackBoardPageonePage)
voidWriteOnePath(BinaryWriterwriter,Windows.ULXaml.Shapes.Path
path)
1.3页面类的应用
提供几方面重要便利的Page的典型实现,GoBack、GoForward和GoHome事件
处理程序,用于导航的鼠标和键盘快捷键,用于导航和进程生命期管理的状态管理。
主要代码:
protectedvirtualvoidGoBack(objectsender,RoutedEventArgse)
(
//使用导航框架返回上一页
if(this.Frame!=null&&this.Frame.CanGoBack)
this.Frame.GoBack();
)
protectedvirtualvoidGoForward(objectsender,
RoutedEventArgse)
(
//使用导航框架移至下一页
if(this.Frame!=null&&this.Frame.CanGoForward)
this.Frame.GoForward();
)
privatevoid
CoreDispatcher_AcceleratorKeyActivated(CoreDispatchersender,
AcceleratorKeyEventArgsargs)
varvirtualKey=args.VirtualKey;
//仅当按向左、向右或专用上一页或下一页键时才进一步
//调查
if((args.EventType==
CoreAcceleratorKeyEventType.SystemKeyDown
args.EventType==CoreAcceleratorKeyEventType.KeyDown)
&&
(virtualKey==VirtualKey.Left||virtualKey==
VirtualKey.RightI'
(int)virtualKey==166|(int)virtualKey==167))
(
varcoreWindow=Window.Current.CoreWindow;
vardownState=CoreVirtualKeyStates.Down;
boolmenuKey=
(coreWindow.GetKeyState(VirtualKey.Menu)&downState)二二downState;
boolcontrolKey=
(coreWindow.GetKeyState(VirtualKey.Control)&downState)二二downState;
boolshiftKey=
(coreWindow.GetKeyState(VirtualKey.Shift)&downState)==downState;
boolnoModifiers=!menuKey&&!controlKey
&&!shiftKey;
boolonlyAlt=menuKey&&!controlKey&&!shiftKey;
if(((int)virtualKey=二166&&noModifiers)||
(virtualKey==VirtualKey.Left&&onlyAlt))
(
〃在按上一页键或Alt+向左键时向后导航
args.Handled=true;
this.GoBcick(this,newRoutedEventArgsO);
)
elseif(((int)virtualKey==167&&noModifiers)I|
(virtualKey=VirtualKey.Right&&onlyAlt))
//在按下一页键或Alt+向右键时向前导航
args.Handled=true;
this.GoForward(this,newRoutedEventArgs());
)
1.4全局会话
捕获全局会话状态以简化应用程序的进程生命期管理。请注意会话状态在许多
条件下将自动清除,因此应该只用于存储方便在会话之间传递,但在应用程序崩溃
时应放弃升级时应丢弃的信息。
其他类的设计
2.1角度计算类
用于计算图形旋转后的角度。
classRotationVector
(
publicstaticPointRotationOneVector(Pointpt,doubleangle)
(
doubleoldangle=Math.Atan2(pt.Y,pt.X);
oldangle+=angle;
doublelen=Math.Sqrt(pt.X*pt.X+pt.Y*pt.Y);
returnnewPoint(len*Math.Cos(oldangle),len*
Math.Sin(oldangle));
)
2.2黑板页类
表示一块黑板页,用来处理黑板画系统中每一页的信息。
主要代码:
publicclassBlackBoardPeige//一块黑板页
(
publicList<Windows.UI.Xaml.Shapes.Path>PathList{get;set;}
〃有多个图形路径来显示其内容:不能序列化
publicBlackBoardPage()
PathList=newList<Windows.UI.Xaml.Shapes.Path>();
ClearPath();
)
publicvoidAddOnePath(Windows.UI.Xaml.Shapes.Pathpath)//
增加一个几何图形路劲:path包含了几何图形
(
PathList.Add(path);
)
publicvoidDeleteLastPath0〃删除最后一个路径
(
if(PathList.Count>0)
(
PathList.RemoveAt(PathList.Count-1);
)
)
publicboolDeleteOnePath(Windows.UI.Xaml.Shapes.Pathpath)
〃删除最后一个路径
(
returnPathList.Remove(path);
)
publicvoidClearPath()//删除所有路径
{
PathList.Clear();
publicvoidShowInPane1(Panelpanel)〃在容器中显示内容
CanvasorGrid
panel.Children.Clear();
for(inti=0;i<PathList.Count;i++)
panel.Children.Add(PathList[i]);
)
publicintCount()〃图形路径的数量
{
returnPathList.Count;
)
)
三、主程序的设计
主页面对象的设计:
3.1变量(属性)的设计
BlackBoardBookbook;〃黑板册子
BlackBoardPagecurrentPage;〃当前页
Dictionary<uint,Windows.UI.Xaml.Shapes.Path>activePaths=
newDictionary<uint,Windows.ULXaml.Shapes.Path>();//用来保存多个手指的
绘制路径
Dictionary<uint,Point>downPoints=newDictionary<uint,
PointX);〃保存触目开始按下的点的位置
Dictionary<uint,long>timeStamps=newDictionary<uint,
long>();〃保存触目开始按下的点的时间
IReadOnlyList<StorageFile>picFiles;〃保存图片库列表
publicLiveAuthClientauth;〃与Live有关的对象
publicLiveConnectClientclient;
publicLiveConnectSessionsession;
stringskydriveSelld=null;〃当前选择的skydrive内容
Id
dynamiclastResult=null;〃当前云操作的结果
boolIsTrial=true;〃试用版标志
publicintwidth;
publicintheight;
boolbCanDraw=true;
boolbisDrawing=true;
boolbModified=false;
3.2连接SkyDrive函数
privateasyncTaskInitAuthO〃连接skydrive
privateasyncvoidbtnConnectLive_Click(objectsender,
RoutedEventArgse)
privateasyncvoidGetskydrivFDPO//获取skydrive的根目录
privateasyncvoidIbskyFiles_SelectionChanged(objectsender,
SelectionChangedEventArgse)〃选择skydrive文件夹或文件
privateasyncvoidbtnOpenDir_Click(objectsender,
RoutedEventArgse)//打开skydrive目录
privateasyncTaskOpenskydriveDir(stringskydriveSelld)//
打开指定skydrive文件夹
privateasyncvoidbtnDownload_Click(objectsender,
RoutedEventArgse)〃下载文件
privateasyncvoidbtnUpload_Click(objectsender,
RoutedEventArgse)〃上传文件
3.3设置画笔的参数
voidFillPenSize(ListBoxlistbox)〃设置画笔的参数
voidFil1penDash(ListBoxlistbox)〃设置折线画笔参数
voidFillPolyCount(ListBoxlistview)〃设置多边形参数
asyncpublicvoidLoadMapFileList()〃获取已有讲稿文件名
asyncTaskLoadLastFDPFile()〃打开最后的绘图文件
asyncTaskOpenFDPFile(stringFn)〃打开绘图文件
voidTitleAndAppbarUpdate()〃更新标题
voidUpdateConfig()〃更新配置
3.4界面导航函数的设计
protectedasyncoverridevoid
OnNavigatedTo(NavigationEventArgse)〃进入页面
protectedoverridevoidOnNavigatedFrom(NavigationEventArgse)
〃离开页面
asyncvoidbtnDelPage_Tapped(objectsender,TappedRoutedEventArgse)
〃删除页
privatevoidbtnAddTapped(objectsender,
TappedRoutedEventArgse)〃增加页
privatevoidbtnPre_Tapped(objectsender,
TappedRoutedEventArgse)〃上一页
privatevoidbtnNext_Tapped(objectsender,
TappedRoutedEventArgse)〃下一页
3.5绘图函数
voidSetPathPara(Windows.UI.Xaml.Shapes.Pathpath)〃设置几
何路径的参数
voidMakePolygon(intnSide,Pointpt,uintid)〃产生多边形
voidAddPolygonGeometryDown(Pointpt,uintid)〃产生多边形
voidAddPolygonGeometryMove(Pointpt,uintid)〃移去该手指画
的图形
voidAddPathGeometryDown(Pointpt,uintid)〃自由绘
图增加一个点
voidAddPathGeometryMove(Pointpt,uintid)〃自由绘图
增加一个线段
voidAddPathGeometryUp(Pointpt,uintid)〃自由绘图
增加最后一个线段
voidAddRectangleGeometryDown(Pointpt,uintid)〃绘图增加
一个矩形几何图象
voidAddRectangleGeometryMove(Pointpt,uintid)〃修改几何
矩形的宽高
voidAddEllipseGeometryDown(Pointpt,uintid)〃绘图增加
一个椭圆几何图象
voidAddEllipseGeometryMove(Pointpt,uintid)〃绘图增加
一个椭圆几何图象
voidAddLineGeometryDown(Pointpt,uintid)〃绘图增加
一条直线
voidAddSinGeometryDown(Pointpt,uintid)〃绘图增加一条
zh正弦曲线
voidAddArrowGeometryDown(Pointpt,uintid)〃增加箭头
图形
voidAddArrowGeometryMove(Pointpt,uintid)〃移动箭头
方向和长度
voidAddStarGeometryDown(Pointpt,uintid)〃绘制一个
五角星
voidAddPolyLineGeometryDown(Pointpt,uintid)〃增加多线
段图形,与自由绘图有所区别:停顿一下后才绘制一条线
privatevoidPathManipulationDelta(objectsender,
ManipulationDeltaRoutedEventArgse)〃处理图形触摸事件
voidCopyPath(Windows.ULXaml.Shapes.Pathspath,
Windows.UI.Xaml.Shapes.Pathdpath)〃复制图形
privatevoidbtnNewFile_Click(objectsender,RoutedEventArgs
e)〃新建文件
privateasyncvoidbtnOpen_Click(objectsender,
RoutedEventArgse)〃打开黑板文件
privateasyncvoidbtnDelete_Click(objectsender,
RoutedEventArgse)〃删除绘图文件
voidCombineColor()〃合成颜色给画笔或背静
3.6构造函数
初始化变量,/获取已有讲稿文件名
publicMainPageO//构造函数
(
this.InitializeComponent();
initializeLicense();
book=newBlackBoardBook();
LoadMapFileListO;〃获取已有讲稿文件名
plSelPara.Visibility=Visibility.Collapsed;
plselShape.Visibility=Visibility.Collapsed;
plselFile.Visibility=Visibility.Collapsed;
plselPicture.Visibility=Visibility.Collapsed;
progressBar.Visibility=Visibility.Collapsed;
ShowToolButton(false);
inkPresenter.PointerPressed十二PagePointerPressed;
inkPresenter.PointerMoved+二PagePointerMoveed;
inkPresenter.PointerReleased十=PagePointerReleased;
FillPenSize(penSize);
FillPenSize(radius);
FilIpenDash(penDashl);
FilIpenDash(penDash2);
FillPolyCount(IbSelPoly);
)
3.7填充字的大小函数
用来设置字体的
voidFillPenSize(ListBoxlistbox)
listbox.Items.Clear();
for(inti=0;i<=50;i++)
listbox.Items.Add(String.Format(〃{0:00}〃,i));
P
voidFilIpenDash(ListBoxlistbox)
(
listbox.Items.Clear();
for(inti=0;i<=50;i++)
listbox.Items.Add(String.Format(/z{0:Fl}/z,i/10.0));
)
voidFillPolyCount(ListBoxlistview)
(
List<NamedString>1st=newList<NamedString>();
for(inti=3;i<=50;i++)
(
strings=St
ring.Format(〃{0:00}。i);
1st.Add(newNamedString(s));
)
listview.ItemsSource=1st;
3.8设置画笔颜色函数
颜色设置函数,用来设置画笔的颜色,及背景的颜色。
voidSetPenOrBackColor()〃颜色设置
if(sdOpacity==null)return;
Colorcl;
if((bool)rbPen.IsChecked)〃画笔
cl=book.StrokeColor;
sdOpacity.Value=book.PathOpacity;
)
elseif((bool)rbBack.IsChecked)//背景
(
cl=book.BackColor;
sdOpacity.Value=book.BackOpacity;
else〃填充
(
cl=book.FillColor;
sdOpacity.Value=book.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年八年级数学上册第十五章分式15.3.1分式方程同步精练新版新人教版
- 育婴师应对突发事件的策略考核试题及答案
- 2024-2025学年七年级科学上册第1章科学入门第4节科学测量3作业设计新版浙教版
- 2024年春三年级英语下册Unit10Isheafarmer同步习题无答案湘少版三起
- 激光系统优化试题及答案总结
- 系统复习的初级药师考试试题及答案
- 幼儿园示范公开课:小班音乐《大狼喝粥》教案
- 考生的文化产业管理试题攻略
- 考古遗址面试题及答案
- 小升初语文常考诗词、成语、多音字、近义词
- 辽宁省沈阳市铁西区2024届英语三年级第二学期期中调研试题含答案
- 拼多多商业模式画布
- 道路新建、改造工程招投标书范本
- 健康饮茶知识讲座
- 医疗期协议书
- 《价值流分析》课件
- 急诊科的孕产妇高危与急症处理
- 《声乐演唱》课程标准
- 酒店公司章程范本
- 供应链优化与协同计划书
- 【比亚迪汽车公司股权激励对绩效的影响分析案例报告(11000字论文)】
评论
0/150
提交评论