Windows 8 pad黑板畫詳細(xì)設(shè)計說明_第1頁
Windows 8 pad黑板畫詳細(xì)設(shè)計說明_第2頁
Windows 8 pad黑板畫詳細(xì)設(shè)計說明_第3頁
Windows 8 pad黑板畫詳細(xì)設(shè)計說明_第4頁
Windows 8 pad黑板畫詳細(xì)設(shè)計說明_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Windows8平板

黑板畫詳細(xì)設(shè)計說明書

一、公共類的定義2

1.1黑板頁類2

1.2黑板畫類2

1.3頁面類的應(yīng)用3

1.4全局會話5

二、其他類的設(shè)計6

2.1角度計算類6

2.2黑板頁類6

三、主程序的設(shè)計8

3.1變量(屬性)的設(shè)計9

3.2連接SkyDrive函數(shù)10

3.3設(shè)置畫筆的參數(shù)10

3.4界面導(dǎo)航函數(shù)的設(shè)計10

3.5繪圖函數(shù)11

3.6構(gòu)造函數(shù)13

3.7填充字的大小函數(shù)13

3.8設(shè)置畫筆顏色函數(shù)14

、公共類的定義

1.1黑板頁類

BlackBoardPage一塊黑板頁類,其功能如下:增加一個幾何圖形路勁、刪除最

后一個路徑、刪除最后一個路徑、刪除所有路徑、在容器中顯示內(nèi)容CanvasorGrid、

圖形路徑的數(shù)量。

主要函數(shù)如下:

publicvoidAddOnePath(Windows.UI.Xaml.Shapes.Pathpath)//增加一個

幾何圖形路勁:path包含了幾何圖形

publicvoidDeleteLastPathO〃刪除最后一個路徑

publicboolDeleteOnePath(Windows.UI.Xaml.Shapes.Pathpath)〃刪除

最后一個路徑

publicvoidClearPath()〃刪除所有路徑

publicvoidShowInPanel(Panelpanel)〃在容器中顯示內(nèi)容CanvasorGrid

publicintCount()〃圖形路徑的數(shù)量

1.2黑板畫類

BlackBoardBook黑板頁冊子類,其包含多個黑板頁。其功能包含讀入及保存黑

板冊子的內(nèi)容,遍歷每一頁、每一個路徑、筆畫的顏色,填充的顏色,點畫線的配

合,配置參數(shù)的寫入于讀出。

主要功能函數(shù)有:

publicasyncTaskLoad(stringFilename)〃加載黑板冊子文件內(nèi)容

voidReadConfig(BinaryReaderreader)〃讀入配置參數(shù)

voidReadPages(BinaryReaderreader)〃讀入書的內(nèi)容

voidReadOnePage(BinaryReaderreader,BlackBoardPageonePage)〃讀入每

一頁

voidReadOnePath(BinaryReaderreader,Windows.UI.Xaml.Shapes.Path

path)〃讀入每一個路徑的畫筆顏色、填充顏色、圖形的透明度

asyncpublicvoidSave(BlackBoardBookbook)〃保存整個書

voidWriteConfig(BinaryWriterwriter)〃寫入配置參數(shù)

voidWritePages(BinaryWriterwriter)

voidWriteOnePage(BinaryWriterwriter,BlackBoardPageonePage)

voidWriteOnePath(BinaryWriterwriter,Windows.ULXaml.Shapes.Path

path)

1.3頁面類的應(yīng)用

提供幾方面重要便利的Page的典型實現(xiàn),GoBack、GoForward和GoHome事件

處理程序,用于導(dǎo)航的鼠標(biāo)和鍵盤快捷鍵,用于導(dǎo)航和進(jìn)程生命期管理的狀態(tài)管理。

主要代碼:

protectedvirtualvoidGoBack(objectsender,RoutedEventArgse)

(

//使用導(dǎo)航框架返回上一頁

if(this.Frame!=null&&this.Frame.CanGoBack)

this.Frame.GoBack();

)

protectedvirtualvoidGoForward(objectsender,

RoutedEventArgse)

(

//使用導(dǎo)航框架移至下一頁

if(this.Frame!=null&&this.Frame.CanGoForward)

this.Frame.GoForward();

)

privatevoid

CoreDispatcher_AcceleratorKeyActivated(CoreDispatchersender,

AcceleratorKeyEventArgsargs)

varvirtualKey=args.VirtualKey;

//僅當(dāng)按向左、向右或?qū)S蒙弦豁摶蛳乱豁撴I時才進(jìn)一步

//調(diào)查

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+向左鍵時向后導(dǎo)航

args.Handled=true;

this.GoBcick(this,newRoutedEventArgsO);

)

elseif(((int)virtualKey==167&&noModifiers)I|

(virtualKey=VirtualKey.Right&&onlyAlt))

//在按下一頁鍵或Alt+向右鍵時向前導(dǎo)航

args.Handled=true;

this.GoForward(this,newRoutedEventArgs());

)

1.4全局會話

捕獲全局會話狀態(tài)以簡化應(yīng)用程序的進(jìn)程生命期管理。請注意會話狀態(tài)在許多

條件下將自動清除,因此應(yīng)該只用于存儲方便在會話之間傳遞,但在應(yīng)用程序崩潰

時應(yīng)放棄升級時應(yīng)丟棄的信息。

其他類的設(shè)計

2.1角度計算類

用于計算圖形旋轉(zhuǎn)后的角度。

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黑板頁類

表示一塊黑板頁,用來處理黑板畫系統(tǒng)中每一頁的信息。

主要代碼:

publicclassBlackBoardPeige//一塊黑板頁

(

publicList<Windows.UI.Xaml.Shapes.Path>PathList{get;set;}

〃有多個圖形路徑來顯示其內(nèi)容:不能序列化

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)〃在容器中顯示內(nèi)容

CanvasorGrid

panel.Children.Clear();

for(inti=0;i<PathList.Count;i++)

panel.Children.Add(PathList[i]);

)

publicintCount()〃圖形路徑的數(shù)量

{

returnPathList.Count;

)

)

三、主程序的設(shè)計

主頁面對象的設(shè)計:

3.1變量(屬性)的設(shè)計

BlackBoardBookbook;〃黑板冊子

BlackBoardPagecurrentPage;〃當(dāng)前頁

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有關(guān)的對象

publicLiveConnectClientclient;

publicLiveConnectSessionsession;

stringskydriveSelld=null;〃當(dāng)前選擇的skydrive內(nèi)容

Id

dynamiclastResult=null;〃當(dāng)前云操作的結(jié)果

boolIsTrial=true;〃試用版標(biāo)志

publicintwidth;

publicintheight;

boolbCanDraw=true;

boolbisDrawing=true;

boolbModified=false;

3.2連接SkyDrive函數(shù)

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設(shè)置畫筆的參數(shù)

voidFillPenSize(ListBoxlistbox)〃設(shè)置畫筆的參數(shù)

voidFil1penDash(ListBoxlistbox)〃設(shè)置折線畫筆參數(shù)

voidFillPolyCount(ListBoxlistview)〃設(shè)置多邊形參數(shù)

asyncpublicvoidLoadMapFileList()〃獲取已有講稿文件名

asyncTaskLoadLastFDPFile()〃打開最后的繪圖文件

asyncTaskOpenFDPFile(stringFn)〃打開繪圖文件

voidTitleAndAppbarUpdate()〃更新標(biāo)題

voidUpdateConfig()〃更新配置

3.4界面導(dǎo)航函數(shù)的設(shè)計

protectedasyncoverridevoid

OnNavigatedTo(NavigationEventArgse)〃進(jìn)入頁面

protectedoverridevoidOnNavigatedFrom(NavigationEventArgse)

〃離開頁面

asyncvoidbtnDelPage_Tapped(objectsender,TappedRoutedEventArgse)

〃刪除頁

privatevoidbtnAddTapped(objectsender,

TappedRoutedEventArgse)〃增加頁

privatevoidbtnPre_Tapped(objectsender,

TappedRoutedEventArgse)〃上一頁

privatevoidbtnNext_Tapped(objectsender,

TappedRoutedEventArgse)〃下一頁

3.5繪圖函數(shù)

voidSetPathPara(Windows.UI.Xaml.Shapes.Pathpath)〃設(shè)置幾

何路徑的參數(shù)

voidMakePolygon(intnSide,Pointpt,uintid)〃產(chǎn)生多邊形

voidAddPolygonGeometryDown(Pointpt,uintid)〃產(chǎn)生多邊形

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)〃增加多線

段圖形,與自由繪圖有所區(qū)別:停頓一下后才繪制一條線

privatevoidPathManipulationDelta(objectsender,

ManipulationDeltaRoutedEventArgse)〃處理圖形觸摸事件

voidCopyPath(Windows.ULXaml.Shapes.Pathspath,

Windows.UI.Xaml.Shapes.Pathdpath)〃復(fù)制圖形

privatevoidbtnNewFile_Click(objectsender,RoutedEventArgs

e)〃新建文件

privateasyncvoidbtnOpen_Click(objectsender,

RoutedEventArgse)〃打開黑板文件

privateasyncvoidbtnDelete_Click(objectsender,

RoutedEventArgse)〃刪除繪圖文件

voidCombineColor()〃合成顏色給畫筆或背靜

3.6構(gòu)造函數(shù)

初始化變量,/獲取已有講稿文件名

publicMainPageO//構(gòu)造函數(shù)

(

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填充字的大小函數(shù)

用來設(shè)置字體的

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設(shè)置畫筆顏色函數(shù)

顏色設(shè)置函數(shù),用來設(shè)置畫筆的顏色,及背景的顏色。

voidSetPenOrBackColor()〃顏色設(shè)置

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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論