999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

WPF技術在蒙塞爾色相仿真測試中的應用

2016-02-23 07:53:03李曉京胡文東張利利惠鐸鐸
計算機技術與發展 2016年2期
關鍵詞:排序動畫界面

李曉京,馬 進,胡文東,張利利,惠鐸鐸

(第四軍醫大學 航空航天醫學教育部重點實驗室,陜西 西安 710032)

WPF技術在蒙塞爾色相仿真測試中的應用

李曉京,馬 進,胡文東,張利利,惠鐸鐸

(第四軍醫大學 航空航天醫學教育部重點實驗室,陜西 西安 710032)

蒙塞爾色相測試(Farnsworth-Munsell Hue Test)用于檢測色覺缺陷人員的色弱區域,該測試的計算機仿真應用在一些方面存在不足。文中在對蒙塞爾測試需求分析的基礎上,提出了基于.Net WPF技術的色相子操作仿真軟件功能設計方案,重點闡述了色相子控件類、控件拖放行為類、基于屬性觸發器的層次效果、泛型容器排序算法以及由故事板控制的色相子移位動畫設計思路。最終實現的色相子操作仿真界面具有分辨率自適應、色相子操作仿真特效、色相子移位多重業務邏輯等特點,能夠充分滿足目標應用需求。

WPF;Farnsworth-Munsell色相測試;自定義控件;行為類;屬性觸發器;泛型;故事板

0 引 言

WPF(Windows Presentation Foundation)是一個用于Windows的針對.NET設計的圖形顯示系統,基于WPF開發的應用程序界面底層都使用DirectX技術,從而使得再普通不過的應用程序也能使用諸如半透明、抗鋸齒等豐富的效果,并由DirectX將圖形渲染任務盡可能多地交給顯卡GPU處理,從而大大提高了硬件加速性能。其“界面UI設計”與“后臺編程”相分離的設計思想,使得界面元素外觀能夠以類似圖形編輯的方式輕松實現,使得編程人員得以專注于代碼和業務邏輯分析,二相結合創造出優秀用戶體驗的交互設計。另外,WPF可以實現資源構件化開發,資源的設計與開發具有很高的可重用性[1-9]。

蒙塞爾色相測試(Farnsworth-Munsell Hue Test)用于檢測色覺缺陷人員的色弱區域[10]。目前可以找到一些Win32仿真測試軟件[11-13],在實用時發現存在一些不足:

(1)選中的色相子缺乏相對其他色相子的空間層次效果;

(2)拖拽釋放色相子對象后,色相子隊列的重排是一個跳變過程,色相子對象位移沒有過渡,易使受測者產生困惑和懷疑;

(3)軟件界面大小無法調節,在高分辨率顯示器上不能全屏會顯得交互界面過小。

1 蒙塞爾色相子仿真軟件需求分析

從測試實物外觀及相應仿真軟件的不足之處可見,該仿真應用存在如下關鍵需求:

色相子仿真控件:由于實物色相子具有相同的外觀,僅色相不同且數量較多,因此合理的作法是將其設計為可重用控件,提供顏色設置屬性以便編程。

色相子拖拽跟隨及層次特效:采用鼠標操作模擬手工挪動色相子的位置變化,同時添加陰影效果,模擬控件的懸空狀態。

色相子釋放后的排序業務邏輯:在色相子拖拽釋放后,需要根據其新的位置信息來判斷它應該歸置于什么標準位置,從而引起整個色相子隊列的重排。

色相子歸位動畫:用戶在釋放色相子控件后,如果參與排序業務的色相子控件都直接按照排序結果直接出現在其標準位置上,無疑是一種位置和色彩的突變,在視覺上會給用戶帶來不適以及對排序結果的懷疑與錯愕。因此,在完成排序業務邏輯運算后,讓色相子控件以過渡動畫的形式運動到它們的標準位置上,一方面與現實情況更為接近,另一方面可以讓用戶直觀地觀察到排序動態過程,從而增強其操作信心。

分辨率無關的自動縮放效果:由于用戶顯示器尺寸和分辨率設置有種種可能,目標應用應能隨著用戶控制交互界面的放大、縮小而自適應地調整界面控件元素的大小,從而滿足不同用戶的喜好。

從前述可知,WPF技術可以全方位滿足目標應用需求,特別是在用戶界面的美觀優化與交互人性化設計方面,具有顯著的優勢。

2 色相子控件設計

在WPF豐富的繪圖模型以及聲明式用戶界面的支持下,與專業設計工具Expression Blend相配合,圖形自定義控件的開發變得簡單而直觀。在Expression Blend中導入豐富的圖形構建更加漂亮的控件,與在Photoshop中進行圖形處理同樣容易[14]。簡便起見,下面以一個簡單明了的自定義控件加以演示和說明。

自定義控件的可視化樹及外觀如圖1所示。

由可視化樹可見,派生于UserControl的色相子控件由簡單的四個元素構成。其中,第一個path元素是一個無色圓形,將其填充畫刷命名為CColor;第二個path則仿真色相子的環狀邊框覆蓋在上方。這兩個path元素嵌套在Canvas面板中置于Viewbox元素中,通過將Viewbox元素的Stretch屬性設置為"Uniform"實現控件在應用時的一致性縮放。

圖1 色相子控件可視化外觀

后臺代碼工作主要是為控件創建三個依賴項屬性:ToTop、ToLeft、IsPressed。前兩個屬性用于控件實例的拖放歸位動畫,后者用于控件實例的拖放狀態層次效果屬性觸發器。將前述CColor畫刷的Color屬性封裝為控件的CenterColor屬性公開,通過該屬性可直接設定色相子控件實例的中心顏色。

主要代碼如下:

public partial class UserControl :UserControl

{

public Color CenterColor //該屬性用于設置色相子的顏色

{

set{CColor.Color=value;}

get{return (Color)CColor.Color;}

}

// ToLeftProperty依賴項屬性用于控件拖放歸位動畫

public static readonly DependencyProperty ToLeftProperty=

DependencyProperty.Register("ToLeft",

typeof(double),

typeof(UserControl1),

new FrameworkPropertyMetadata(0.0, null));

public double ToLeft

{

set{SetValue(ToLeftProperty, value);}

get{return (double)GetValue(ToLeftProperty);}

}

// ToTopProperty依賴項屬性與ToLeftProperty類似,定義從略

//IsPressedProperty依賴項屬性用于觸發控件拖放層次效果,bool型,定義從略

……

public UserControl1()

{

InitializeComponent();

}

}

需要強調的是,依賴項屬性的性質決定了它支持動態綁定,因此尤其適用于動畫、界面元素動態更新等需求,從而極大地簡化了編程復雜度,但相應地也會為其強大動態功能付出系統資源代價。因此,在普通屬性和依賴性屬性的選擇方面要因需制宜。色相子控件中,CenterColor屬性就被聲明為普通屬性,這是由于色相子的中心顏色在程序生命周期中不會有動態的變化,因此普通屬性就可以滿足需要。此外,并未為CenterColor屬性創建相應的私有數據,而是通過訪問函數直接對其他元素屬性進行操作,這種方式巧妙地達到了數據封裝和降低系統資源占用的目的,是.Net程序設計中一種非常實用的技巧。

3 色相子交互界面設計

仿真色相子界面用戶交互流程見圖2。

圖2 仿真色相子控件用戶交互流程

可見,由色相子控件事件驅動的拖放行為類、層次特效、控件排序業務邏輯、色相子歸位動畫等功能模塊相互作用,構成了色相子仿真界面的人機交互邏輯。

3.1 色相子拖放行為類

WPF行為特征旨在代碼重用,封裝好的行為類可以為用戶界面上具有相同操作響應的元素提供統一的操作支持。設計拖放行為類可以滿足色相子的拖放操作仿真,并降低代碼工作量。

DragInCanvasBehavior由泛型類Behavior派生,其中定義按鍵、松鍵等事件響應函數。重載基類的OnAttached(為元素聲明添加行為特征時調用,通常在前臺Xaml文件聲明中為控件啟用行為,即附著)、OnDetaching函數(元素銷毀時被調用,即解除附著),在這兩個函數中為被附著元素的相應事件委托添加(或刪除)相應的行為響應函數。

一個完整色相子的拖放行為仿真由鼠標左鍵按下、鼠標移動、鼠標左鍵松開這一系列鼠標事件構成,因此,目標行為類定義了對這三個事件的響應函數。此外,由于拖放操作完成后有后續的排序歸位動畫,且在動畫執行期間不允許執行下一次操作任務,因此,還需要為行為類添加兩個委托事件,PreDrag用于檢測是否處于動畫狀態,DragEnd用于通知主程序拖放完成可以開始排序歸位動畫。該類的主要代碼如下:

public class DragInCanvasBehavior:Behavior

{

private Canvas canvas; //用于保存控件的父容器面板

private bool isDragging=false;//用于鼠標移動時判斷是否處于拖放狀態

private Point mouseOffset;//鼠標位置偏移量

//下兩行定義拖放結束事件委托

public delegate void DragEndHandler(Object sender);

public event DragEndHandler DragEnd;

//下兩行定義拖放預檢事件委托

public delegate bool PreDragHandler(Object sender);

public event PreDragHandler PreDrag;

protected override void OnAttached()

{//重載附著函數,將相關響應函數添加到控件委托

base.OnAttached();

//MouseLeftButtonDown委托關聯,MouseMove、MouseLeftButtonUp相類從略

this.AssociatedObject.MouseLeftButtonDown+=AssociatedObject_MouseLeftButtonDown;

……

}

protected override void OnDetaching()

{ //重載解除附著函數,從事件委托列表中刪除相關函數

base.OnDetaching();

//MouseLeftButtonDown解除委托關聯,MouseMove、Mouse-LeftButtonUp相類從略

this.AssociatedObject.MouseLeftButtonDown-=AssociatedObject_MouseLeftButtonDown;

……

}

private void AssociatedObject_MouseLeftButtonDown(Object sender,MouseButtonEventArgs e) //控件鼠標左擊事件響應函數

{

if(null!=PreDrag) if (!PreDrag(AssociatedObject)) return; //若不可進入拖放狀態,返回

if(canvas==null)

canvas=(Canvas)VisualTreeHelper.GetParent(this.AssociatedObject); //獲取控件父面板

isDragging=true; //進入拖放狀態標志置位

//獲取點擊點相對控件的坐標(元素左上為0,0)

mouseOffset=e.GetPosition(AssociatedObject);

//捕獲鼠標,持續接收mousemove事件,即使其離開控件

AssociatedObject.CaptureMouse();

}

private void AssociatedObject_MouseMove(Object sender, MouseEventArgs e)

{//控件鼠標移動事件響應函數

if(isDragging)//拖放狀態下,控件進入鼠標跟隨效果

{//計算控件的新位置并設置其位置附加屬性

Point point=e.GetPosition(canvas);

Point pTemp=new Point(point.X-mouseOffset.X,point.Y-mouseOffset.Y);

……

//控件移動(應限制控件位置不得超出父面板邊界,代碼從略)

AssociatedObject.SetValue(Canvas.TopProperty,pTemp.Y);

AssociatedObject.SetValue(Canvas.LeftProperty,pTemp.X);

}

}

private void AssociatedObject_MouseLeftButtonUp(Object sender,MouseButtonEventArgs e)

{//控件左鍵松開響應函數

if(isDragging)

{

AssociatedObject.ReleaseMouseCapture();//解除捕獲鼠標

isDragging=false; //拖放狀態標志清除

//調用拖放結束委托函數,通知主線程執行排序運算和歸位動畫

if(null!=DragEnd) DragEnd(AssociatedObject);

}

}

}

3.2 色相子控件應用與層次特效

在Xmal聲明文件中,采用常規的程序集引用和控件聲明即可實現色相子控件的應用,以兩個Canvas面板各含5個色相子控件為例,界面元素及可視化樹見圖3。

注:UserControl2是用于表示色相子標準位置的圖形控件,可忽略。

色相子及行為聲明示例代碼如下所示:

CenterColor="#FF873787" Height="50" Width="50" Panel.ZIndex="1">

注意在以上聲明中,已將后臺定義的PreDrag、DragFinished函數關聯到附著行為類相應委托事件上。

拖放色相子時的層次特效首先是提升色相子在面板中的疊放層次,使受拖放控件呈現于其他控件之上,這將由后臺代碼來完成。其次,當進入拖動狀態時,可創建陰影效果,形成該色相子懸浮于空中的視覺效果。特效在Xaml文件的窗體資源中聲明,由前述色相子控件的自定義的IsPressed屬性觸發,Xaml聲明如下:

還可以通過故事板為陰影特效創建漸入漸出動畫以實現更為逼真的操作效果,這里就不作介紹了。

3.3 色相子排序業務邏輯與歸位動畫

色相子拖放與歸位動畫的中間環節是根據其被釋放時的位置計算整個色相子隊列成員的新位置。為了充分滿足用戶需求,設計插入和交換兩種業務邏輯供用戶選擇,插入/交換的目標位置可就近或空位側優先,如圖4所示。

圖4 色相子排序業務邏輯示例

這里以相對復雜的插入邏輯加以說明。

初始化時,將所有色相子控件實例保存在列表泛型容器中,在拖放行為結束時,根據被拖放的色相子位置,調整列表中的控件排序,按排好的順序將標準位置賦給各色相子的ToTop、ToLeft依賴項屬性,并進入下一步的歸位動畫。

歸位動畫由動態創建的Storyboard實例控制,動畫開始時將指示動畫狀態標志量置位,提交給拖放行為類的PreDrag委托函數將檢測該標志以確定能否進入后續的拖放操作狀態。

核心代碼如下:

public partial class Window2:Window

{

//多組色相子放在不同的Canvas面板中,對每個面板同時只允許執行一個歸位動畫,因此定義面板與故事板的配對查詢字典

private Dictionary storyboards=new Dictionary();

//每個面板中所包含的色相子控件組保存在不同的泛型列表容器中,因此定義面板與列表容器的配對查詢字典

private Dictionary> dicCanPairedUCList=new Dictionary>();

//示例用兩組面板和色相子控件組,因此定義兩組保存色相子控件組的列表容器

List lstCtr=new List();

List lstCtr2=new List();

//由于色相子Top都一樣,只須保存各控件Left屬性值;兩組控件共享一組Left坐標數組

List lstXPos=new List();

public bool bIsAnimming=false; //是否處于動畫狀態標志位

public Window2()

{//構造函數,完成初始化工作

int i;

InitializeComponent();

//將Xaml文件聲明的兩個面板與列表容器配對加入字典

dicCanPairedUCList.Add(can1,lstCtr1);

dicCanPairedUCList.Add(can2,lstCtr2);

for(i=0;i< can1.Children.Count;i++)

{//逐一將面板1中色相子實例入列,并保存標準位置數據

if (can1.Children[i].GetType()!=typeof(UserControl1)) continue;

lstCtr.Add((UserControl1)can1.Children[i]);

((UserControl1)can1.Children[i]).ToTop=//ToTop屬性全程不變

(double)((UserControl1)can1.Children[i]).GetValue(Canvas.TopProperty);

lstXPos.Add((double)((UserControl1)can1.Children[i]).GetValue(Canvas.LeftProperty));

}

//逐一將面板2中色相子入列,代碼從略

for(i=0;i

}

// DragFinished在Xaml控件聲明中關聯至控件拖放行為的DragEnd事件

public void DragFinished(Object obj)

{

int i,j=0;

double dtemp,mindiff=10000;

//三行代碼根據回調參數確定色相子控件、父面板及其配對列表容器

UserControl1 ctr=(UserControl1)obj;

Canvas can=(Canvas)VisualTreeHelper.GetParent(ctr);

List lstCtrTemp=dicCanPairedUCList[can];

if(bIsNearIns){ //若是就近插入邏輯

for(i=0;i

{/*dtemp用于保存受拖動控件與組內各控件的距離;

距離最小的控件序號將保存在變量j中,代碼從略*/

dtemp=Math.Abs(lstXPos.ElementAt(i)-(double)(ctr.GetValue(Canvas.LeftProperty)));

……

}

//將被拖放的控件插入到新的位置

lstCtrTemp.Remove(ctr);

if(j==lstCtrTemp.Count)lstCtrTemp.Add(ctr);

else lstCtrTemp.Insert(j,ctr);

}

else{//空位側優先插入邏輯直接采用Lambda表達式完成冒泡排序

lstCtrTemp.Sort((ctr1,ctr2)=>{

return(double)ctr1.GetValue(Canvas.LeftProperty) <

(double)ctr2.GetValue(Canvas.LeftProperty) ? -1:1;});

}

//交換業務邏輯從略

……

//創建故事板實例sb并行管理一組色相子的歸位動畫

Storyboard sb=new Storyboard();

for(i=0;i

{ //將標準X坐標賦給各色相子控件的ToLeft

lstCtrTemp.ElementAt(i).ToLeft=lstXPos.ElementAt(i);

//橫坐標歸位動畫

DoubleAnimationctrAL=newDoubleAnimation();

ctrAL.To=lstCtrTemp.ElementAt(i).ToLeft;

ctrAL.Duration=TimeSpan.FromSeconds(0.1);

Storyboard.SetTarget(ctrAL,lstCtrTemp.ElementAt(i));

Storyboard.SetTargetProperty(ctrAL,newPropertyPath("(Canvas.Left)"));

sb.Children.Add(ctrAL);

//縱坐標歸位動畫與橫坐標相類,代碼從略

……

}

//動畫時長設置為0.1秒,以免拖延操作時間

sb.Duration=TimeSpan.FromSeconds(0.1);

//動畫結束清理工作函數提交給故事板結束事件委托

sb.Completed+=storyboard_Completed;

sb.Begin();

storyboards.Add(can,sb);//將面板與動畫配對加入字典

}

//動畫結束時將被執行的清理函數

privatevoidstoryboard_Completed(objectsender,EventArgse)

{

//由結束的故事板時間線對象查找受控色相子的父面板及其配對列表容器、配對故事板實例

ClockGroupclockGroup=(ClockGroup)sender;

UserControl1ctrTemp=(UserControl1)Storyboard.GetTarget(

(AnimationTimeline)clockGroup.Children[0].Timeline);

Canvascan=(Canvas)VisualTreeHelper.GetParent(ctrTemp);

Listlstctr=dicCanPairedUCList[can];

Storyboardstoryboard=storyboards[can];

//停止、清除動畫,并將面板、動畫配對從字典中刪除

storyboard.Stop();

storyboard.Children.Clear();

storyboards.Remove(can);

foreach(UserControl1ctrinlstctr)

{ //逐一將同組各色相子的目標位置賦予自身的實際位置屬性

ctr.SetValue(Canvas.LeftProperty,ctr.ToLeft);

ctr.SetValue(Canvas.TopProperty,ctr.ToTop);

ctr.IsPressed=false; //清除控件拖放狀態標志,去除層次效果

Canvas.SetZIndex(ctr,1); //恢復控件初始層次

}

}

//PreDrag函數在Xmal聲明中關聯到控件拖放行為的PreDrag事件

privateboolPreDrag(objectsender)

{

UserControl1ctr=(UserControl1)sender;

//檢查色相子控件的父面板是否處于動畫狀態

boolbTemp=storyboards.ContainsKey(((Canvas)ctr.Parent)) ?false:true;

if(bTemp) {//不在動畫狀態即將進入拖放操作

Canvas.SetZIndex(ctr, 2);//提升控件疊放層次

ctr.IsPressed=true;//設置拖放標志,觸發層次特效

}

returnbTemp;

}

}

為色相子控件定義的ToLeft、ToTop依賴項屬性作用在故事板中得到體現。如果不這樣設計,就需要在主窗體中為全部色相子定義相應的依賴項屬性數組,那樣代碼邏輯顯然要混亂很多,并且當界面色相子控件數量發生變化時,也會帶來代碼維護上的不便。

本例中用到了Dictionary、List兩種泛型容器,帶來的好處有兩方面。首先,雖然ArrayList類可以實現與泛型類相似的功能,但泛型實例是強類型的,即在聲明時必須給定容器內將要存儲的對象類型,從而省去了ArrayList類應用時對未知數組元素的裝箱/拆箱操作,提高程序運行效率;其次,泛型類直接或間接提供了對數組元素的查詢、定位、插入、排序等豐富的成員函數或接口,在程序設計方面帶來的便利是顯而易見的。

3.4 與分辨率無關的自適應界面設計

對于Win32應用來說,控件隨著界面的大小而自動縮放是一項繁瑣的任務。但由于WPF強大的布局設計與圖形化界面功能,這幾乎不算一個問題。如圖3中的可視化樹所示,將面板包含在Viewbox中,并根據需要設置Viewbox的Stretch、StretchDirection屬性,就可以實現控件隨用戶界面大小而自適應地動態調整自身大小,滿足用戶的視覺需求。如圖5所示,對比標題欄大小可見兩個不同大小窗口中,控件完全隨著窗體的拉伸自適應縮放并調整布局繪制,不需要任何后臺代碼。

圖5 仿真色相子界面自適應縮放及布局

這種與界面大小無關的控件自適應縮放與自動布局充分體現了WPF的強大,其將編程人員從繁瑣的界面布局邏輯中完全解放出來,從而可以更加專注于核心業務代碼設計,對于程序開發效率和用戶體驗的提升具有劃時代的意義。

4 結束語

根據Farnsworth-Munsell色相測試系統實物使用特點及原有軟件的不足之處,文中提出了基于WPF技術的色相子仿真交互界面設計方案。該方案充分利用到.Net的圖形界面優勢,綜合運用依賴項屬性、觸發器、故事板、泛型等.Net和WPF的優勢特性,具有界面外觀可拓展性強、更接近實際物理特性的層次效果和仿真排序過渡動畫、與分辨率無關的界面自適應縮放與布局調整等特點,并對涉及的關鍵技術進行了詳細介紹。在Win32應用逐漸落伍,個性化、富媒體化跨平臺應用日益崛起的大背景下,文中介紹的.Net框架下的WPF相關技術,對于圖形化界面與人機交互類的應用開發都有一定的借鑒意義。文中示例在Windows XP系統Visual Studio 2010 C#開發環境下編譯,Win XP、Win 8操作系統測試通過。

[1] Troelsen A.C#與.Net 4高級程序設計[M].朱 曄,肖 逵,姚琪琳,等,譯.第5版.北京:人民郵電出版社,2011.

[2] MacDonald M.WPF編程寶典—C#2010版[M].王德才,譯.北京:清華大學出版社,2011.

[3] Petzold C.Windows Presentation Foundation程序設計指南[M].蔡學鏞,譯.北京:電子工業出版社,2008.

[4] 王 鵬,崔 靜.新一代界面技術WPF的架構及應用[J].成都紡織高等專科學校學報,2011,28(1):18-20.

[5] 張京明,曹國忠,張承業,等.創新方法與交互設計結合的探討[J].價值工程,2012,31(10):10-11.

[6] 李 穎.基于WPF的課堂教學管理系統研究與設計[J].中國教育技術裝備,2011(24):85-87.

[7] 袁云云,周之昊.基于WPF的醫療輔助軟件設計與開發[J].數字技術與應用,2012(2):132-132.

[8] 李成剛,馮 靜,凌 玲.基于WPF的交互式繪圖系統的開發[J].微型機與應用,2011,30(6):50-52.

[9] Macdonald M.Pro WPF in C# 2008:Windows Presentation Foundation with .NET 3.5[M].New York:Apress,2008.

[10] Farnsworth D.The Farnsworth-Munsell 100 hue and Dichotomous tests for color vision[J].Journal of the Optical Society of America B-optical Physics,1943,33:568-578.

[11] Hidajat R R,Hidayat J R,McLay J L,et al.A fast system for reporting the Farnsworth-Munsell 100-hue colour vision test[J].Documenta Ophthalmologica,2004,109(2):109-114.

[12] Ghose S,Parmar T,Dada T,et al.A new computer-based Farnsworth-Munsell 100-hue test for evaluation of color vision[J].International Ophthalmology,2014,34(4):747-751.

[13] Melamud A,Simpson E,Traboulsi E I.Introducing a new computer-based test for the clinical evaluation of color discrimination[J].American Journal of Ophthalmology,2006,142(6):953-960.

[14] 張洪定,孟冬梅.基于Expression Blend 4中文版 WPF和Silverlight項目設計基礎[M].北京:清華大學出版社,2011.

Application of WPF in Farnsworth-Munsell Hue Simulation Testing System Development

LI Xiao-jing,MA Jin,HU Wen-dong,ZHANG Li-li,HUI Duo-duo

(Key Laboratory of Aerospace Medical of Ministry of Education,Fourth Military Medical University,Xi’an 710032,China)

Farnsworth-Munsell Hue Test is applied to inspect the color weakness area of hypochromatopsia patients.But,for the computer simulation software of the test,there are some improvable aspects in the characteristics’ simulation.Based on the demand analysis of the test,a kind of software function and frame,utilizing .NET WPF,was developed for Hue-Token (HT) manipulating simulation.Primarily,the design of HT component,drag-drop behavior class,layer effect based on property trigger,sorting arithmetic of generic class and HT shifting animation under the control of storyboard were described in detail.Features of the final simulation interface such as resolution self-adaption,special effects of HT operation,multi-business logic of HT shift,could meet the need of demand of object application sufficiently.

WPF (Windows Presentation Foundation);Farnsworth-Munsell Hue Simulation Testing;user control;behavior class;property trigger;generic type;storyboard

2015-04-08

2015-07-13

時間:2016-01-04

國家自然科學基金青年項目(81202178/H2602);全軍醫藥衛生重大項目(AWS12J003)

李曉京(1975-),男,高級實驗師,碩士,研究方向為計算機應用、生物醫學工程;馬 進,副研究員,博士,研究方向為心理學;胡文東,研究員,碩士,研究方向為心理學、醫學工程。

http://www.cnki.net/kcms/detail/61.1450.TP.20160104.1510.060.html

TP311

A

1673-629X(2016)02-0154-07

10.3969/j.issn.1673-629X.2016.02.035

猜你喜歡
排序動畫界面
排序不等式
做個動畫給你看
動畫發展史
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
恐怖排序
我的動畫夢
文苑(2019年22期)2019-12-07 05:28:56
節日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
人機交互界面發展趨勢研究
主站蜘蛛池模板: 国产美女91呻吟求| 久久久久久尹人网香蕉| 国产成人精品高清不卡在线| 三级国产在线观看| 这里只有精品在线播放| 一级片一区| 国产喷水视频| 国产欧美精品一区二区| www.91中文字幕| 91啦中文字幕| 国产亚洲精久久久久久无码AV| 白丝美女办公室高潮喷水视频| 美女潮喷出白浆在线观看视频| 色欲国产一区二区日韩欧美| 婷婷综合缴情亚洲五月伊| 欧美三级不卡在线观看视频| 免费激情网址| 久久免费观看视频| 综合天天色| 丰满人妻被猛烈进入无码| 国产精品亚洲va在线观看| 三级视频中文字幕| 国产91成人| 亚洲男人天堂网址| 国产亚洲成AⅤ人片在线观看| 无码'专区第一页| 久久久亚洲国产美女国产盗摄| 亚洲Av激情网五月天| 欧美日韩一区二区三区在线视频| 91欧美在线| 色成人亚洲| 日韩黄色在线| 久久国产香蕉| 国产成人精品综合| 99久视频| 欧美国产日韩在线观看| 国产永久在线视频| 亚洲浓毛av| 国产亚洲欧美另类一区二区| 99精品免费在线| 亚洲无码一区在线观看| 国产尹人香蕉综合在线电影 | 少妇精品久久久一区二区三区| 国产精品2| 奇米影视狠狠精品7777| 日韩精品一区二区三区swag| 国产精品第一区在线观看| 高h视频在线| 国产99视频精品免费视频7| 精品视频在线观看你懂的一区| 久久毛片免费基地| 国产毛片片精品天天看视频| 久久99国产综合精品1| 最新国产在线| 亚洲国产精品一区二区高清无码久久| 婷婷激情五月网| 亚洲日本韩在线观看| 欧美精品亚洲精品日韩专区| 成AV人片一区二区三区久久| 自拍中文字幕| 亚洲国产成人自拍| 婷婷亚洲最大| 欧美亚洲一区二区三区导航| 亚洲第一综合天堂另类专| www.av男人.com| 欧美va亚洲va香蕉在线| 欧美亚洲国产精品久久蜜芽| 国产又色又爽又黄| 亚洲国产中文在线二区三区免| 日韩 欧美 国产 精品 综合| 日韩毛片免费| 亚洲区一区| aⅴ免费在线观看| 天天综合网色| 午夜丁香婷婷| 一级做a爰片久久毛片毛片| 日韩精品欧美国产在线| 亚洲精品第1页| AV不卡无码免费一区二区三区| 久久久久久尹人网香蕉 | 精品久久国产综合精麻豆| 久久久久亚洲AV成人人电影软件|