• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    WPF技術(shù)在蒙塞爾色相仿真測(cè)試中的應(yīng)用

    2016-02-23 07:53:03李曉京胡文東張利利惠鐸鐸
    關(guān)鍵詞:排序動(dòng)畫(huà)界面

    李曉京,馬 進(jìn),胡文東,張利利,惠鐸鐸

    (第四軍醫(yī)大學(xué) 航空航天醫(yī)學(xué)教育部重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710032)

    WPF技術(shù)在蒙塞爾色相仿真測(cè)試中的應(yīng)用

    李曉京,馬 進(jìn),胡文東,張利利,惠鐸鐸

    (第四軍醫(yī)大學(xué) 航空航天醫(yī)學(xué)教育部重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710032)

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

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

    0 引 言

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

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

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

    (2)拖拽釋放色相子對(duì)象后,色相子隊(duì)列的重排是一個(gè)跳變過(guò)程,色相子對(duì)象位移沒(méi)有過(guò)渡,易使受測(cè)者產(chǎn)生困惑和懷疑;

    (3)軟件界面大小無(wú)法調(diào)節(jié),在高分辨率顯示器上不能全屏?xí)@得交互界面過(guò)小。

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

    從測(cè)試實(shí)物外觀及相應(yīng)仿真軟件的不足之處可見(jiàn),該仿真應(yīng)用存在如下關(guān)鍵需求:

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

    色相子拖拽跟隨及層次特效:采用鼠標(biāo)操作模擬手工挪動(dòng)色相子的位置變化,同時(shí)添加陰影效果,模擬控件的懸空狀態(tài)。

    色相子釋放后的排序業(yè)務(wù)邏輯:在色相子拖拽釋放后,需要根據(jù)其新的位置信息來(lái)判斷它應(yīng)該歸置于什么標(biāo)準(zhǔn)位置,從而引起整個(gè)色相子隊(duì)列的重排。

    色相子歸位動(dòng)畫(huà):用戶在釋放色相子控件后,如果參與排序業(yè)務(wù)的色相子控件都直接按照排序結(jié)果直接出現(xiàn)在其標(biāo)準(zhǔn)位置上,無(wú)疑是一種位置和色彩的突變,在視覺(jué)上會(huì)給用戶帶來(lái)不適以及對(duì)排序結(jié)果的懷疑與錯(cuò)愕。因此,在完成排序業(yè)務(wù)邏輯運(yùn)算后,讓色相子控件以過(guò)渡動(dòng)畫(huà)的形式運(yùn)動(dòng)到它們的標(biāo)準(zhǔn)位置上,一方面與現(xiàn)實(shí)情況更為接近,另一方面可以讓用戶直觀地觀察到排序動(dòng)態(tài)過(guò)程,從而增強(qiáng)其操作信心。

    分辨率無(wú)關(guān)的自動(dòng)縮放效果:由于用戶顯示器尺寸和分辨率設(shè)置有種種可能,目標(biāo)應(yīng)用應(yīng)能隨著用戶控制交互界面的放大、縮小而自適應(yīng)地調(diào)整界面控件元素的大小,從而滿足不同用戶的喜好。

    從前述可知,WPF技術(shù)可以全方位滿足目標(biāo)應(yīng)用需求,特別是在用戶界面的美觀優(yōu)化與交互人性化設(shè)計(jì)方面,具有顯著的優(yōu)勢(shì)。

    2 色相子控件設(shè)計(jì)

    在WPF豐富的繪圖模型以及聲明式用戶界面的支持下,與專業(yè)設(shè)計(jì)工具Expression Blend相配合,圖形自定義控件的開(kāi)發(fā)變得簡(jiǎn)單而直觀。在Expression Blend中導(dǎo)入豐富的圖形構(gòu)建更加漂亮的控件,與在Photoshop中進(jìn)行圖形處理同樣容易[14]。簡(jiǎn)便起見(jiàn),下面以一個(gè)簡(jiǎn)單明了的自定義控件加以演示和說(shuō)明。

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

    由可視化樹(shù)可見(jiàn),派生于UserControl的色相子控件由簡(jiǎn)單的四個(gè)元素構(gòu)成。其中,第一個(gè)path元素是一個(gè)無(wú)色圓形,將其填充畫(huà)刷命名為CColor;第二個(gè)path則仿真色相子的環(huán)狀邊框覆蓋在上方。這兩個(gè)path元素嵌套在Canvas面板中置于Viewbox元素中,通過(guò)將Viewbox元素的Stretch屬性設(shè)置為"Uniform"實(shí)現(xiàn)控件在應(yīng)用時(shí)的一致性縮放。

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

    后臺(tái)代碼工作主要是為控件創(chuàng)建三個(gè)依賴項(xiàng)屬性:ToTop、ToLeft、IsPressed。前兩個(gè)屬性用于控件實(shí)例的拖放歸位動(dòng)畫(huà),后者用于控件實(shí)例的拖放狀態(tài)層次效果屬性觸發(fā)器。將前述CColor畫(huà)刷的Color屬性封裝為控件的CenterColor屬性公開(kāi),通過(guò)該屬性可直接設(shè)定色相子控件實(shí)例的中心顏色。

    主要代碼如下:

    public partial class UserControl :UserControl

    {

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

    {

    set{CColor.Color=value;}

    get{return (Color)CColor.Color;}

    }

    // ToLeftProperty依賴項(xiàng)屬性用于控件拖放歸位動(dòng)畫(huà)

    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依賴項(xiàng)屬性與ToLeftProperty類似,定義從略

    //IsPressedProperty依賴項(xiàng)屬性用于觸發(fā)控件拖放層次效果,bool型,定義從略

    ……

    public UserControl1()

    {

    InitializeComponent();

    }

    }

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

    3 色相子交互界面設(shè)計(jì)

    仿真色相子界面用戶交互流程見(jiàn)圖2。

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

    可見(jiàn),由色相子控件事件驅(qū)動(dòng)的拖放行為類、層次特效、控件排序業(yè)務(wù)邏輯、色相子歸位動(dòng)畫(huà)等功能模塊相互作用,構(gòu)成了色相子仿真界面的人機(jī)交互邏輯。

    3.1 色相子拖放行為類

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

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

    一個(gè)完整色相子的拖放行為仿真由鼠標(biāo)左鍵按下、鼠標(biāo)移動(dòng)、鼠標(biāo)左鍵松開(kāi)這一系列鼠標(biāo)事件構(gòu)成,因此,目標(biāo)行為類定義了對(duì)這三個(gè)事件的響應(yīng)函數(shù)。此外,由于拖放操作完成后有后續(xù)的排序歸位動(dòng)畫(huà),且在動(dòng)畫(huà)執(zhí)行期間不允許執(zhí)行下一次操作任務(wù),因此,還需要為行為類添加兩個(gè)委托事件,PreDrag用于檢測(cè)是否處于動(dòng)畫(huà)狀態(tài),DragEnd用于通知主程序拖放完成可以開(kāi)始排序歸位動(dòng)畫(huà)。該類的主要代碼如下:

    public class DragInCanvasBehavior:Behavior

    {

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

    private bool isDragging=false;//用于鼠標(biāo)移動(dòng)時(shí)判斷是否處于拖放狀態(tài)

    private Point mouseOffset;//鼠標(biāo)位置偏移量

    //下兩行定義拖放結(jié)束事件委托

    public delegate void DragEndHandler(Object sender);

    public event DragEndHandler DragEnd;

    //下兩行定義拖放預(yù)檢事件委托

    public delegate bool PreDragHandler(Object sender);

    public event PreDragHandler PreDrag;

    protected override void OnAttached()

    {//重載附著函數(shù),將相關(guān)響應(yīng)函數(shù)添加到控件委托

    base.OnAttached();

    //MouseLeftButtonDown委托關(guān)聯(lián),MouseMove、MouseLeftButtonUp相類從略

    this.AssociatedObject.MouseLeftButtonDown+=AssociatedObject_MouseLeftButtonDown;

    ……

    }

    protected override void OnDetaching()

    { //重載解除附著函數(shù),從事件委托列表中刪除相關(guān)函數(shù)

    base.OnDetaching();

    //MouseLeftButtonDown解除委托關(guān)聯(lián),MouseMove、Mouse-LeftButtonUp相類從略

    this.AssociatedObject.MouseLeftButtonDown-=AssociatedObject_MouseLeftButtonDown;

    ……

    }

    private void AssociatedObject_MouseLeftButtonDown(Object sender,MouseButtonEventArgs e) //控件鼠標(biāo)左擊事件響應(yīng)函數(shù)

    {

    if(null!=PreDrag) if (!PreDrag(AssociatedObject)) return; //若不可進(jìn)入拖放狀態(tài),返回

    if(canvas==null)

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

    isDragging=true; //進(jìn)入拖放狀態(tài)標(biāo)志置位

    //獲取點(diǎn)擊點(diǎn)相對(duì)控件的坐標(biāo)(元素左上為0,0)

    mouseOffset=e.GetPosition(AssociatedObject);

    //捕獲鼠標(biāo),持續(xù)接收mousemove事件,即使其離開(kāi)控件

    AssociatedObject.CaptureMouse();

    }

    private void AssociatedObject_MouseMove(Object sender, MouseEventArgs e)

    {//控件鼠標(biāo)移動(dòng)事件響應(yīng)函數(shù)

    if(isDragging)//拖放狀態(tài)下,控件進(jìn)入鼠標(biāo)跟隨效果

    {//計(jì)算控件的新位置并設(shè)置其位置附加屬性

    Point point=e.GetPosition(canvas);

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

    ……

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

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

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

    }

    }

    private void AssociatedObject_MouseLeftButtonUp(Object sender,MouseButtonEventArgs e)

    {//控件左鍵松開(kāi)響應(yīng)函數(shù)

    if(isDragging)

    {

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

    isDragging=false; //拖放狀態(tài)標(biāo)志清除

    //調(diào)用拖放結(jié)束委托函數(shù),通知主線程執(zhí)行排序運(yùn)算和歸位動(dòng)畫(huà)

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

    }

    }

    }

    3.2 色相子控件應(yīng)用與層次特效

    在Xmal聲明文件中,采用常規(guī)的程序集引用和控件聲明即可實(shí)現(xiàn)色相子控件的應(yīng)用,以兩個(gè)Canvas面板各含5個(gè)色相子控件為例,界面元素及可視化樹(shù)見(jiàn)圖3。

    注:UserControl2是用于表示色相子標(biāo)準(zhǔn)位置的圖形控件,可忽略。

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

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

    注意在以上聲明中,已將后臺(tái)定義的PreDrag、DragFinished函數(shù)關(guān)聯(lián)到附著行為類相應(yīng)委托事件上。

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

    還可以通過(guò)故事板為陰影特效創(chuàng)建漸入漸出動(dòng)畫(huà)以實(shí)現(xiàn)更為逼真的操作效果,這里就不作介紹了。

    3.3 色相子排序業(yè)務(wù)邏輯與歸位動(dòng)畫(huà)

    色相子拖放與歸位動(dòng)畫(huà)的中間環(huán)節(jié)是根據(jù)其被釋放時(shí)的位置計(jì)算整個(gè)色相子隊(duì)列成員的新位置。為了充分滿足用戶需求,設(shè)計(jì)插入和交換兩種業(yè)務(wù)邏輯供用戶選擇,插入/交換的目標(biāo)位置可就近或空位側(cè)優(yōu)先,如圖4所示。

    圖4 色相子排序業(yè)務(wù)邏輯示例

    這里以相對(duì)復(fù)雜的插入邏輯加以說(shuō)明。

    初始化時(shí),將所有色相子控件實(shí)例保存在列表泛型容器中,在拖放行為結(jié)束時(shí),根據(jù)被拖放的色相子位置,調(diào)整列表中的控件排序,按排好的順序?qū)?biāo)準(zhǔn)位置賦給各色相子的ToTop、ToLeft依賴項(xiàng)屬性,并進(jìn)入下一步的歸位動(dòng)畫(huà)。

    歸位動(dòng)畫(huà)由動(dòng)態(tài)創(chuàng)建的Storyboard實(shí)例控制,動(dòng)畫(huà)開(kāi)始時(shí)將指示動(dòng)畫(huà)狀態(tài)標(biāo)志量置位,提交給拖放行為類的PreDrag委托函數(shù)將檢測(cè)該標(biāo)志以確定能否進(jìn)入后續(xù)的拖放操作狀態(tài)。

    核心代碼如下:

    public partial class Window2:Window

    {

    //多組色相子放在不同的Canvas面板中,對(duì)每個(gè)面板同時(shí)只允許執(zhí)行一個(gè)歸位動(dòng)畫(huà),因此定義面板與故事板的配對(duì)查詢字典

    private Dictionary storyboards=new Dictionary();

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

    private Dictionary> dicCanPairedUCList=new Dictionary>();

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

    List lstCtr=new List();

    List lstCtr2=new List();

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

    List lstXPos=new List();

    public bool bIsAnimming=false; //是否處于動(dòng)畫(huà)狀態(tài)標(biāo)志位

    public Window2()

    {//構(gòu)造函數(shù),完成初始化工作

    int i;

    InitializeComponent();

    //將Xaml文件聲明的兩個(gè)面板與列表容器配對(duì)加入字典

    dicCanPairedUCList.Add(can1,lstCtr1);

    dicCanPairedUCList.Add(can2,lstCtr2);

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

    {//逐一將面板1中色相子實(shí)例入列,并保存標(biāo)準(zhǔn)位置數(shù)據(jù)

    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控件聲明中關(guān)聯(lián)至控件拖放行為的DragEnd事件

    public void DragFinished(Object obj)

    {

    int i,j=0;

    double dtemp,mindiff=10000;

    //三行代碼根據(jù)回調(diào)參數(shù)確定色相子控件、父面板及其配對(duì)列表容器

    UserControl1 ctr=(UserControl1)obj;

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

    List lstCtrTemp=dicCanPairedUCList[can];

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

    for(i=0;i

    {/*dtemp用于保存受拖動(dòng)控件與組內(nèi)各控件的距離;

    距離最小的控件序號(hào)將保存在變量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{//空位側(cè)優(yōu)先插入邏輯直接采用Lambda表達(dá)式完成冒泡排序

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

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

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

    }

    //交換業(yè)務(wù)邏輯從略

    ……

    //創(chuàng)建故事板實(shí)例sb并行管理一組色相子的歸位動(dòng)畫(huà)

    Storyboard sb=new Storyboard();

    for(i=0;i

    { //將標(biāo)準(zhǔn)X坐標(biāo)賦給各色相子控件的ToLeft

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

    //橫坐標(biāo)歸位動(dòng)畫(huà)

    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);

    //縱坐標(biāo)歸位動(dòng)畫(huà)與橫坐標(biāo)相類,代碼從略

    ……

    }

    //動(dòng)畫(huà)時(shí)長(zhǎng)設(shè)置為0.1秒,以免拖延操作時(shí)間

    sb.Duration=TimeSpan.FromSeconds(0.1);

    //動(dòng)畫(huà)結(jié)束清理工作函數(shù)提交給故事板結(jié)束事件委托

    sb.Completed+=storyboard_Completed;

    sb.Begin();

    storyboards.Add(can,sb);//將面板與動(dòng)畫(huà)配對(duì)加入字典

    }

    //動(dòng)畫(huà)結(jié)束時(shí)將被執(zhí)行的清理函數(shù)

    privatevoidstoryboard_Completed(objectsender,EventArgse)

    {

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

    ClockGroupclockGroup=(ClockGroup)sender;

    UserControl1ctrTemp=(UserControl1)Storyboard.GetTarget(

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

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

    Listlstctr=dicCanPairedUCList[can];

    Storyboardstoryboard=storyboards[can];

    //停止、清除動(dòng)畫(huà),并將面板、動(dòng)畫(huà)配對(duì)從字典中刪除

    storyboard.Stop();

    storyboard.Children.Clear();

    storyboards.Remove(can);

    foreach(UserControl1ctrinlstctr)

    { //逐一將同組各色相子的目標(biāo)位置賦予自身的實(shí)際位置屬性

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

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

    ctr.IsPressed=false; //清除控件拖放狀態(tài)標(biāo)志,去除層次效果

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

    }

    }

    //PreDrag函數(shù)在Xmal聲明中關(guān)聯(lián)到控件拖放行為的PreDrag事件

    privateboolPreDrag(objectsender)

    {

    UserControl1ctr=(UserControl1)sender;

    //檢查色相子控件的父面板是否處于動(dòng)畫(huà)狀態(tài)

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

    if(bTemp) {//不在動(dòng)畫(huà)狀態(tài)即將進(jìn)入拖放操作

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

    ctr.IsPressed=true;//設(shè)置拖放標(biāo)志,觸發(fā)層次特效

    }

    returnbTemp;

    }

    }

    為色相子控件定義的ToLeft、ToTop依賴項(xiàng)屬性作用在故事板中得到體現(xiàn)。如果不這樣設(shè)計(jì),就需要在主窗體中為全部色相子定義相應(yīng)的依賴項(xiàng)屬性數(shù)組,那樣代碼邏輯顯然要混亂很多,并且當(dāng)界面色相子控件數(shù)量發(fā)生變化時(shí),也會(huì)帶來(lái)代碼維護(hù)上的不便。

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

    3.4 與分辨率無(wú)關(guān)的自適應(yīng)界面設(shè)計(jì)

    對(duì)于Win32應(yīng)用來(lái)說(shuō),控件隨著界面的大小而自動(dòng)縮放是一項(xiàng)繁瑣的任務(wù)。但由于WPF強(qiáng)大的布局設(shè)計(jì)與圖形化界面功能,這幾乎不算一個(gè)問(wèn)題。如圖3中的可視化樹(shù)所示,將面板包含在Viewbox中,并根據(jù)需要設(shè)置Viewbox的Stretch、StretchDirection屬性,就可以實(shí)現(xiàn)控件隨用戶界面大小而自適應(yīng)地動(dòng)態(tài)調(diào)整自身大小,滿足用戶的視覺(jué)需求。如圖5所示,對(duì)比標(biāo)題欄大小可見(jiàn)兩個(gè)不同大小窗口中,控件完全隨著窗體的拉伸自適應(yīng)縮放并調(diào)整布局繪制,不需要任何后臺(tái)代碼。

    圖5 仿真色相子界面自適應(yīng)縮放及布局

    這種與界面大小無(wú)關(guān)的控件自適應(yīng)縮放與自動(dòng)布局充分體現(xiàn)了WPF的強(qiáng)大,其將編程人員從繁瑣的界面布局邏輯中完全解放出來(lái),從而可以更加專注于核心業(yè)務(wù)代碼設(shè)計(jì),對(duì)于程序開(kāi)發(fā)效率和用戶體驗(yàn)的提升具有劃時(shí)代的意義。

    4 結(jié)束語(yǔ)

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

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

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

    [3] Petzold C.Windows Presentation Foundation程序設(shè)計(jì)指南[M].蔡學(xué)鏞,譯.北京:電子工業(yè)出版社,2008.

    [4] 王 鵬,崔 靜.新一代界面技術(shù)WPF的架構(gòu)及應(yīng)用[J].成都紡織高等??茖W(xué)校學(xué)報(bào),2011,28(1):18-20.

    [5] 張京明,曹國(guó)忠,張承業(yè),等.創(chuàng)新方法與交互設(shè)計(jì)結(jié)合的探討[J].價(jià)值工程,2012,31(10):10-11.

    [6] 李 穎.基于WPF的課堂教學(xué)管理系統(tǒng)研究與設(shè)計(jì)[J].中國(guó)教育技術(shù)裝備,2011(24):85-87.

    [7] 袁云云,周之昊.基于WPF的醫(yī)療輔助軟件設(shè)計(jì)與開(kāi)發(fā)[J].數(shù)字技術(shù)與應(yīng)用,2012(2):132-132.

    [8] 李成剛,馮 靜,凌 玲.基于WPF的交互式繪圖系統(tǒng)的開(kāi)發(fā)[J].微型機(jī)與應(yīng)用,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項(xiàng)目設(shè)計(jì)基礎(chǔ)[M].北京:清華大學(xué)出版社,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

    時(shí)間:2016-01-04

    國(guó)家自然科學(xué)基金青年項(xiàng)目(81202178/H2602);全軍醫(yī)藥衛(wèi)生重大項(xiàng)目(AWS12J003)

    李曉京(1975-),男,高級(jí)實(shí)驗(yàn)師,碩士,研究方向?yàn)橛?jì)算機(jī)應(yīng)用、生物醫(yī)學(xué)工程;馬 進(jìn),副研究員,博士,研究方向?yàn)樾睦韺W(xué);胡文東,研究員,碩士,研究方向?yàn)樾睦韺W(xué)、醫(yī)學(xué)工程。

    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

    猜你喜歡
    排序動(dòng)畫(huà)界面
    排序不等式
    做個(gè)動(dòng)畫(huà)給你看
    動(dòng)畫(huà)發(fā)展史
    國(guó)企黨委前置研究的“四個(gè)界面”
    恐怖排序
    我的動(dòng)畫(huà)夢(mèng)
    文苑(2019年22期)2019-12-07 05:28:56
    節(jié)日排序
    刻舟求劍
    兒童繪本(2018年5期)2018-04-12 16:45:32
    基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開(kāi)發(fā)方法研究
    人機(jī)交互界面發(fā)展趨勢(shì)研究
    欧美av亚洲av综合av国产av| 色哟哟哟哟哟哟| 成人av一区二区三区在线看| 免费电影在线观看免费观看| 亚洲精品影视一区二区三区av| 精品无人区乱码1区二区| 亚洲国产精品久久男人天堂| 黄色日韩在线| avwww免费| av在线天堂中文字幕| 日韩亚洲欧美综合| 久久伊人香网站| 搡老熟女国产l中国老女人| 一进一出抽搐gif免费好疼| 五月伊人婷婷丁香| 免费观看人在逋| 国产精品嫩草影院av在线观看 | 成人三级黄色视频| 中文字幕熟女人妻在线| 可以在线观看的亚洲视频| 国产成人a区在线观看| 一个人看的www免费观看视频| 亚洲国产精品999在线| 亚洲激情在线av| 夜夜爽天天搞| 亚洲国产中文字幕在线视频| 国产精品亚洲美女久久久| 一个人看视频在线观看www免费 | 久久九九热精品免费| 无人区码免费观看不卡| 亚洲精品乱码久久久v下载方式 | 亚洲性夜色夜夜综合| 一个人观看的视频www高清免费观看| 成人av在线播放网站| 99热这里只有精品一区| 国产亚洲精品av在线| 熟女电影av网| 亚洲成人中文字幕在线播放| 国产欧美日韩精品亚洲av| 国产黄色小视频在线观看| 一进一出抽搐动态| 精品一区二区三区av网在线观看| 国产伦在线观看视频一区| 小说图片视频综合网站| 精品久久久久久,| 国产成人福利小说| 中文字幕熟女人妻在线| 欧美激情在线99| 性色av乱码一区二区三区2| 亚洲av熟女| 亚洲黑人精品在线| 午夜福利免费观看在线| 国产精品爽爽va在线观看网站| 十八禁网站免费在线| 美女免费视频网站| 好男人电影高清在线观看| 成人国产综合亚洲| www日本在线高清视频| 欧美日韩瑟瑟在线播放| 成人特级黄色片久久久久久久| 欧美又色又爽又黄视频| 国产一区二区在线观看日韩 | 国内毛片毛片毛片毛片毛片| 岛国在线免费视频观看| 99久久无色码亚洲精品果冻| 精品乱码久久久久久99久播| 亚洲国产欧洲综合997久久,| 色在线成人网| 一a级毛片在线观看| 岛国视频午夜一区免费看| 老汉色av国产亚洲站长工具| 久久精品影院6| 久久久久久大精品| 国产亚洲精品av在线| 国产免费一级a男人的天堂| 国产精品久久久久久精品电影| 女人十人毛片免费观看3o分钟| 久9热在线精品视频| 热99re8久久精品国产| 国产成人欧美在线观看| 亚洲五月天丁香| 亚洲av五月六月丁香网| 神马国产精品三级电影在线观看| 日韩欧美三级三区| 国产一区二区三区在线臀色熟女| 日韩欧美精品免费久久 | 少妇裸体淫交视频免费看高清| 欧美色视频一区免费| 欧美黄色淫秽网站| 日韩大尺度精品在线看网址| 欧美最新免费一区二区三区 | 性色avwww在线观看| 露出奶头的视频| 久久久精品欧美日韩精品| 久久亚洲精品不卡| 无遮挡黄片免费观看| 丁香欧美五月| 久久久久久久久大av| 国产真实伦视频高清在线观看 | 蜜桃亚洲精品一区二区三区| 午夜激情欧美在线| 久久久国产成人免费| 中文字幕精品亚洲无线码一区| 精品无人区乱码1区二区| 亚洲av成人精品一区久久| 亚洲最大成人中文| 国内精品美女久久久久久| 国产99白浆流出| 国产午夜福利久久久久久| 村上凉子中文字幕在线| 久久久久久大精品| 免费大片18禁| 日日干狠狠操夜夜爽| 亚洲av熟女| 久久性视频一级片| 久久久国产成人免费| 高清在线国产一区| 搞女人的毛片| 哪里可以看免费的av片| 制服丝袜大香蕉在线| 一级作爱视频免费观看| 又爽又黄无遮挡网站| 日韩欧美国产在线观看| 久久国产精品人妻蜜桃| 午夜日韩欧美国产| 日本在线视频免费播放| 看片在线看免费视频| 少妇的逼水好多| 亚洲无线观看免费| 国产精品1区2区在线观看.| 大型黄色视频在线免费观看| 人人妻,人人澡人人爽秒播| 五月玫瑰六月丁香| av视频在线观看入口| 久久久精品欧美日韩精品| 日本与韩国留学比较| 欧美在线黄色| 国产精品爽爽va在线观看网站| 天美传媒精品一区二区| 久久天躁狠狠躁夜夜2o2o| 老司机福利观看| 国产精品乱码一区二三区的特点| 国产99白浆流出| 91av网一区二区| 亚洲狠狠婷婷综合久久图片| 亚洲精品久久国产高清桃花| 最新在线观看一区二区三区| 脱女人内裤的视频| 熟女电影av网| 日本 av在线| 制服丝袜大香蕉在线| 久久久久国内视频| 日本三级黄在线观看| 天天一区二区日本电影三级| 嫩草影视91久久| 亚洲av成人不卡在线观看播放网| 变态另类丝袜制服| 午夜免费激情av| 欧美中文日本在线观看视频| 99热精品在线国产| 夜夜看夜夜爽夜夜摸| 国产成人系列免费观看| 欧美日本亚洲视频在线播放| 丰满的人妻完整版| 一区二区三区免费毛片| 丰满人妻熟妇乱又伦精品不卡| 欧美乱码精品一区二区三区| 国产爱豆传媒在线观看| 日韩人妻高清精品专区| 国产精品一区二区三区四区久久| 国产精品精品国产色婷婷| 18美女黄网站色大片免费观看| 最新在线观看一区二区三区| xxx96com| 午夜福利在线观看免费完整高清在 | 国产精品久久电影中文字幕| 中文字幕高清在线视频| 两个人的视频大全免费| 他把我摸到了高潮在线观看| 深爱激情五月婷婷| 欧美乱妇无乱码| 国产精品永久免费网站| 欧美日韩亚洲国产一区二区在线观看| 热99re8久久精品国产| 很黄的视频免费| 欧美成人免费av一区二区三区| 午夜激情欧美在线| 五月玫瑰六月丁香| 成人国产一区最新在线观看| 精品欧美国产一区二区三| 黄色视频,在线免费观看| 麻豆久久精品国产亚洲av| 色老头精品视频在线观看| 欧美日本视频| 99riav亚洲国产免费| 亚洲av电影在线进入| 一个人免费在线观看电影| 国产精品爽爽va在线观看网站| 黄色女人牲交| 中文字幕人妻丝袜一区二区| 亚洲精品粉嫩美女一区| 噜噜噜噜噜久久久久久91| 欧美成人免费av一区二区三区| 成人特级黄色片久久久久久久| 国产国拍精品亚洲av在线观看 | 亚洲专区国产一区二区| www.999成人在线观看| 51国产日韩欧美| 国产精品乱码一区二三区的特点| 日本 av在线| 久久九九热精品免费| 亚洲中文日韩欧美视频| 亚洲成人中文字幕在线播放| 欧美色视频一区免费| 国产欧美日韩精品一区二区| 国内揄拍国产精品人妻在线| 国产成人aa在线观看| 国产伦精品一区二区三区四那| 国产av在哪里看| 啪啪无遮挡十八禁网站| 久久久精品大字幕| 亚洲精品在线观看二区| 日日干狠狠操夜夜爽| 三级毛片av免费| 国产色爽女视频免费观看| 婷婷精品国产亚洲av在线| 18禁在线播放成人免费| 中文字幕人妻熟人妻熟丝袜美 | 成人鲁丝片一二三区免费| 人人妻人人看人人澡| 国产精品精品国产色婷婷| 国产精华一区二区三区| 在线国产一区二区在线| 3wmmmm亚洲av在线观看| 美女cb高潮喷水在线观看| 一区二区三区国产精品乱码| 久久久久久久久大av| 18禁黄网站禁片午夜丰满| 国产精品国产高清国产av| 天堂动漫精品| 亚洲欧美精品综合久久99| 在线a可以看的网站| 少妇的逼好多水| 亚洲欧美精品综合久久99| 精品国产超薄肉色丝袜足j| 偷拍熟女少妇极品色| 国产精品 欧美亚洲| 日韩人妻高清精品专区| 久久亚洲真实| 亚洲一区二区三区不卡视频| 久久久成人免费电影| 欧美日韩一级在线毛片| 欧美+日韩+精品| 久久精品国产自在天天线| 亚洲成av人片免费观看| 免费看光身美女| 变态另类丝袜制服| 国产久久久一区二区三区| 国产一级毛片七仙女欲春2| 成年女人永久免费观看视频| 熟女少妇亚洲综合色aaa.| 老汉色∧v一级毛片| 久久婷婷人人爽人人干人人爱| www日本黄色视频网| 99热只有精品国产| 天堂动漫精品| 日本三级黄在线观看| 久久久久久九九精品二区国产| 欧美成人性av电影在线观看| 色综合婷婷激情| 99久久精品热视频| 欧美色欧美亚洲另类二区| 免费av不卡在线播放| 亚洲无线在线观看| 尤物成人国产欧美一区二区三区| 人妻夜夜爽99麻豆av| 美女黄网站色视频| 丝袜美腿在线中文| 天堂网av新在线| 精华霜和精华液先用哪个| 亚洲国产色片| 亚洲成人免费电影在线观看| 欧美在线一区亚洲| 午夜日韩欧美国产| 美女高潮喷水抽搐中文字幕| 欧洲精品卡2卡3卡4卡5卡区| 少妇人妻一区二区三区视频| 中文字幕精品亚洲无线码一区| 欧美区成人在线视频| 日本a在线网址| 可以在线观看毛片的网站| 国产高清激情床上av| 精品无人区乱码1区二区| 动漫黄色视频在线观看| 99国产精品一区二区蜜桃av| 日韩大尺度精品在线看网址| 国产欧美日韩一区二区三| 欧美丝袜亚洲另类 | 成人欧美大片| avwww免费| 久99久视频精品免费| 一个人看的www免费观看视频| 噜噜噜噜噜久久久久久91| 精品一区二区三区av网在线观看| www.色视频.com| 两人在一起打扑克的视频| 老汉色∧v一级毛片| 亚洲精品久久国产高清桃花| 手机成人av网站| 中文字幕熟女人妻在线| 精品国内亚洲2022精品成人| 国产欧美日韩一区二区三| 欧美黄色淫秽网站| 在线观看av片永久免费下载| 久久午夜亚洲精品久久| 欧美日韩精品网址| 一个人免费在线观看电影| 麻豆一二三区av精品| 99热只有精品国产| 尤物成人国产欧美一区二区三区| 国产伦精品一区二区三区视频9 | 国产高潮美女av| 午夜老司机福利剧场| 国产精品乱码一区二三区的特点| 国内毛片毛片毛片毛片毛片| a级一级毛片免费在线观看| 国产精品久久久人人做人人爽| 免费看日本二区| 伊人久久大香线蕉亚洲五| 久久性视频一级片| 一级黄色大片毛片| 99国产精品一区二区蜜桃av| 久久久久国产精品人妻aⅴ院| 噜噜噜噜噜久久久久久91| 国产激情欧美一区二区| 亚洲精品色激情综合| 国产精品久久电影中文字幕| 五月伊人婷婷丁香| 欧美色欧美亚洲另类二区| 中文字幕av成人在线电影| 国产亚洲精品久久久com| 国产黄片美女视频| 日本免费a在线| 午夜视频国产福利| 国产一区二区亚洲精品在线观看| 亚洲欧美日韩高清在线视频| 亚洲,欧美精品.| 日本三级黄在线观看| 国产真人三级小视频在线观看| 免费在线观看亚洲国产| 国产三级中文精品| 国产精品嫩草影院av在线观看 | 九色国产91popny在线| 婷婷六月久久综合丁香| 成年女人毛片免费观看观看9| 日韩人妻高清精品专区| bbb黄色大片| 国产免费一级a男人的天堂| 国产精品久久视频播放| 国产毛片a区久久久久| or卡值多少钱| 国产熟女xx| 噜噜噜噜噜久久久久久91| 波多野结衣巨乳人妻| 午夜福利欧美成人| 成年女人毛片免费观看观看9| 久久国产乱子伦精品免费另类| av片东京热男人的天堂| 国产精品影院久久| 桃色一区二区三区在线观看| 大型黄色视频在线免费观看| 狂野欧美白嫩少妇大欣赏| 99久久久亚洲精品蜜臀av| 久久久色成人| 国产乱人伦免费视频| 一个人观看的视频www高清免费观看| 一本综合久久免费| 18禁美女被吸乳视频| 欧美高清成人免费视频www| 99在线人妻在线中文字幕| 国产又黄又爽又无遮挡在线| 美女黄网站色视频| 精品一区二区三区av网在线观看| 天堂√8在线中文| 国产 一区 欧美 日韩| 他把我摸到了高潮在线观看| www国产在线视频色| 精品久久久久久,| 又爽又黄无遮挡网站| av天堂中文字幕网| 精品免费久久久久久久清纯| 国产毛片a区久久久久| 夜夜爽天天搞| 老司机在亚洲福利影院| 高清毛片免费观看视频网站| 久久香蕉精品热| 久久九九热精品免费| 两个人的视频大全免费| 日本 欧美在线| 亚洲无线观看免费| 免费高清视频大片| 国产久久久一区二区三区| 色综合亚洲欧美另类图片| 一卡2卡三卡四卡精品乱码亚洲| 欧美在线黄色| 国内久久婷婷六月综合欲色啪| 搡女人真爽免费视频火全软件 | 国产精品影院久久| 免费看日本二区| 一a级毛片在线观看| 国产精品永久免费网站| 日韩欧美三级三区| 欧美最黄视频在线播放免费| 国产黄a三级三级三级人| 啦啦啦观看免费观看视频高清| АⅤ资源中文在线天堂| 免费一级毛片在线播放高清视频| 俄罗斯特黄特色一大片| 免费无遮挡裸体视频| 日韩av在线大香蕉| 亚洲色图av天堂| 日日干狠狠操夜夜爽| 亚洲精品一卡2卡三卡4卡5卡| 嫁个100分男人电影在线观看| 亚洲 欧美 日韩 在线 免费| 精品一区二区三区视频在线 | 内地一区二区视频在线| 色吧在线观看| 成人欧美大片| 制服丝袜大香蕉在线| 在线十欧美十亚洲十日本专区| 亚洲aⅴ乱码一区二区在线播放| 国产午夜精品论理片| а√天堂www在线а√下载| 免费av不卡在线播放| 久久九九热精品免费| 国产乱人视频| 女人被狂操c到高潮| av欧美777| 两个人看的免费小视频| 麻豆国产97在线/欧美| 免费人成在线观看视频色| 国产精品免费一区二区三区在线| 色综合欧美亚洲国产小说| 一级黄色大片毛片| 亚洲欧美日韩东京热| 欧美性猛交黑人性爽| 高清在线国产一区| 亚洲成人免费电影在线观看| 岛国在线免费视频观看| 久久精品国产综合久久久| 一个人免费在线观看的高清视频| 午夜精品一区二区三区免费看| 久久久久久久久久黄片| 蜜桃亚洲精品一区二区三区| 国产免费一级a男人的天堂| 精品欧美国产一区二区三| 黄色日韩在线| 亚洲精华国产精华精| 日韩欧美在线乱码| 男女床上黄色一级片免费看| 久久人妻av系列| 黄色女人牲交| 每晚都被弄得嗷嗷叫到高潮| 久久精品影院6| 日韩欧美国产在线观看| 亚洲成人精品中文字幕电影| 非洲黑人性xxxx精品又粗又长| 999久久久精品免费观看国产| 精品久久久久久久末码| 国产探花极品一区二区| 色综合站精品国产| 夜夜躁狠狠躁天天躁| av欧美777| 熟女少妇亚洲综合色aaa.| 午夜福利在线在线| 无遮挡黄片免费观看| 1024手机看黄色片| 小说图片视频综合网站| 高清毛片免费观看视频网站| 三级国产精品欧美在线观看| 精品免费久久久久久久清纯| 国产色爽女视频免费观看| 久久久久久久久大av| 国产高清videossex| 色综合亚洲欧美另类图片| 久久久久精品国产欧美久久久| 国产欧美日韩一区二区三| 久久国产精品人妻蜜桃| 丰满人妻一区二区三区视频av | 熟女人妻精品中文字幕| 1000部很黄的大片| 午夜激情欧美在线| 日韩人妻高清精品专区| 精品免费久久久久久久清纯| 少妇熟女aⅴ在线视频| 听说在线观看完整版免费高清| 特级一级黄色大片| а√天堂www在线а√下载| 熟妇人妻久久中文字幕3abv| 天天添夜夜摸| 91九色精品人成在线观看| 欧美性猛交黑人性爽| 在线国产一区二区在线| 听说在线观看完整版免费高清| 熟妇人妻久久中文字幕3abv| 一夜夜www| 在线十欧美十亚洲十日本专区| 丝袜美腿在线中文| 欧美日韩综合久久久久久 | 亚洲久久久久久中文字幕| 啦啦啦免费观看视频1| 国产69精品久久久久777片| 婷婷精品国产亚洲av在线| 免费在线观看亚洲国产| 国产三级在线视频| 很黄的视频免费| 久久人人精品亚洲av| 夜夜夜夜夜久久久久| 国产精品影院久久| 国产亚洲欧美98| 欧美av亚洲av综合av国产av| 成人鲁丝片一二三区免费| www日本黄色视频网| 99热这里只有精品一区| 午夜a级毛片| svipshipincom国产片| 精品国产美女av久久久久小说| 九色国产91popny在线| 亚洲熟妇熟女久久| 国产av麻豆久久久久久久| 国产黄a三级三级三级人| 中文字幕av在线有码专区| 久久久国产精品麻豆| 韩国av一区二区三区四区| 搡老妇女老女人老熟妇| 亚洲色图av天堂| 性色avwww在线观看| 欧美日韩黄片免| 麻豆国产av国片精品| 国内精品美女久久久久久| 可以在线观看的亚洲视频| 在线观看一区二区三区| 国产色婷婷99| 日日干狠狠操夜夜爽| 国产高潮美女av| 国产精品久久电影中文字幕| 波多野结衣高清作品| 国产精品电影一区二区三区| 国产精品爽爽va在线观看网站| 国产真实乱freesex| 亚洲无线观看免费| www.999成人在线观看| 亚洲av中文字字幕乱码综合| 亚洲18禁久久av| 欧美一级a爱片免费观看看| АⅤ资源中文在线天堂| 最近最新中文字幕大全免费视频| 搡老熟女国产l中国老女人| 18禁在线播放成人免费| 日韩精品中文字幕看吧| 偷拍熟女少妇极品色| 欧美激情久久久久久爽电影| 日本a在线网址| 老司机深夜福利视频在线观看| 狠狠狠狠99中文字幕| av福利片在线观看| 午夜精品在线福利| 国产高清视频在线播放一区| 两人在一起打扑克的视频| 3wmmmm亚洲av在线观看| 国产精品永久免费网站| 99精品欧美一区二区三区四区| 国产激情欧美一区二区| 俄罗斯特黄特色一大片| 白带黄色成豆腐渣| 嫁个100分男人电影在线观看| 老熟妇仑乱视频hdxx| aaaaa片日本免费| 亚洲精品日韩av片在线观看 | 日日夜夜操网爽| 99国产综合亚洲精品| 在线十欧美十亚洲十日本专区| 中国美女看黄片| 一进一出抽搐gif免费好疼| 非洲黑人性xxxx精品又粗又长| 97人妻精品一区二区三区麻豆| 成人亚洲精品av一区二区| 黄片小视频在线播放| 美女被艹到高潮喷水动态| 综合色av麻豆| 又黄又粗又硬又大视频| 一本久久中文字幕| 欧美av亚洲av综合av国产av| av专区在线播放| 日韩欧美精品免费久久 | 叶爱在线成人免费视频播放| 久久精品91蜜桃| 特大巨黑吊av在线直播| 淫秽高清视频在线观看| 国产精品久久久久久久电影 | 亚洲av免费在线观看| 国产精品一区二区三区四区免费观看 | 国产成人av教育| 国产欧美日韩一区二区三| 亚洲va日本ⅴa欧美va伊人久久| 国产麻豆成人av免费视频| 日韩欧美三级三区| 亚洲av五月六月丁香网| 日本黄色片子视频| 亚洲内射少妇av| 在线观看66精品国产| 欧美黄色淫秽网站| 亚洲国产欧美人成| 在线观看免费视频日本深夜|