• WP7基础学习第七讲


    wp7--7

    (注:本节主讲WP7的全景视图和枢轴视图,两个很有用的控件,可以使程序做成一些特效!记录少了些,主要是如何添加Item)

    1.Panorama全景视图控件
    2.Pivot枢轴视图控件

    Panorama:
    1.简介:使用一个超过屏幕宽度的长水平画布,提供了独特显示控件、数据和服务的方式;是一种选项、导航和数据的多屏幕滚动菜单
    2.结构:
      1.Background/2.Title/3.Items/4.Header
    3.使用:
    背景图片的高为800像素,宽度大于480像素,不超过2000像素

    对于它的一个事件SelectionChange
    panorama1.Title=((PanoramaItem)e.AddedItems[0].Header.ToString());

    Pivot:(像TabControl)
    1.简介:快捷管理应用中的视图或页面;过滤数据、视图分类
    2.结构;
       1.Title/2.Header/3.PivotItem
    3.使用:
    Header文字不要过长,以免其他PivotItem中的Header无法显示;
    在PivotItem中,不要使用ScrollViewer或ListBox这类带有手势的控件


    对于它的一个事件SelectionChange
    pivot.Title=((PivotItem)e.AddedItems[0]).Header.ToString();

    WP7--8

    (注:本节主要讲DeepZoom应用,因为项目没有到,也没怎么使用也没深究它,你如果感兴趣可以试试,很不错的图片处理)

    DeepZoom基本知识:
    源于遥感影像的金字塔显示方式;提供了与高分辨率图像进行交互的能力;可以快速缩放图像而不影响应用的性能;加载或平移图像时可以光滑过渡;spring animations

    应用:高分辨率、极大图像的浏览;3D合成图像;广告
    分类:Single;Collection

    制作DeepZoom图像工具:DeepZoomComposer
    地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=45TB17B7-52BF-4BDA-87A3-FA8A4673F8BF

    MultiScaleImage

    属于:
    Source-Web Uri;UseSprings-springs animations;
    ViewportOrigin-CenterPoint;ViewportWidth-ZoomLevel(级别)

    事件:
    ImageFailed;ImageOpenFailed;ImageOpenSucceeded

    使用:
    <MultiScaleImage x:Name="msi" Width="474" Height="652" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="6,0,0,0" Source="http://www.daisy123.com/MyDeepZoom/dzc_output.xml"/>

    后台代码编写:
    1.声明的变量:
    private double zoom=1;
    private bool inMoving=false;
    private bool isDown=false;
    private Point lastMouseDownPos=new Point();
    private Point lastMousePos=new Point();
    private Point lastMouseViewPort=new Point();

    2.在ImageOpenSucceeded中,代码:
    mri.ViewportOrign=new Point(0,0);
    mri.ViewportWidth=1;

    3.在Xaml中加载鼠标按下、鼠标移动、鼠标弹起事件
    3.在鼠标左键按下事件中:
    lastMouseDownPos=e.GetPorition(mri);
    lastMouseViewPort=mri.ViewportOrigin;
    isDown=true;

    mri.CaptureMouse();

    4.在鼠标移动事件中:
    lastMousePos=e.GetPorition(mri);

    if(isDown&&!isMoving)
    {
     isMoveing=true;
     double w=mri.ViewportWidth;
     Point p=new Point(mri.ViewportOrigin.X,mri.ViewportOrigin.Y);
     mri.UseSpring=false;
     mri.ViewportOrigin=new Point(p.X,p.Y);
     mri.ViewportWidth=w;
     zoom=1/w;
     mri.UseSpring=true;
    }
    if(isMoving)
    {
     Point point=lastMouseViewPort;
     point.X=(lastMouseDownPos.X- lastMousePos.X)/mri.ActualWidth*mri.ViewportWidth;
     point.Y=(lastMouseDownPos.Y- lastMousePos.Y)/mri.ActualWidth*mri.ViewportWidth;
     mri.ViewportOrigin=point;//可以平移
    }

    5.在鼠标左键抬起事件:
    if(isMoving)
    {
     bool isShift=(Keyboard.Modifiers & ModifierKeys.Shift) ==ModifierKeys.Shift;
     double newzoom=zoom;
     if(isShift)
      newzoom/=2;
     else
      newzoom*=2;

     Icon(newzoom,mri.EleamentToLogicalPoint(this.lastMousePos));
    }

    isMoving=false;
    isDown=false;
    mri.EeleameMouseCapture();
    }

    对于函数Icon://缩放
    private void Icon(double zoomnew ,Point p)
    {
     if(zoomnew<0.5)
      zoomnew=0.5;
     mri.IconAboutLogicalPoint(zoomnew/zoom,p.X,p.Y);
     zoom=zoomnew;
    }
    6.使用ApplicationBar四个按钮:full/Original/zoomin/zoomout
    对于full按钮下的事件代码:
    mri.IconAboutLogicalPoint(1.5,0,0);
    对于Original按钮下的事件代码:
    this.mri.ViewportWidth=1;
    this.mri.ViewportOrigin=new Point(0,0);
    对于zoomin按钮下的事件代码:
    Zoom(zoom*1.3,mri.EleamentToLogicalPoint(new Point(0.5*mri.ActualWidth,0.5*mri.ActualHeight)));
    对于zoomout按钮下的事件代码:
    Zoom(zoom/1.3,mri.EleamentToLogicalPoint(new Point(0.5*mri.ActualWidth,0.5*mri.ActualHeight)));

  • 相关阅读:
    字符串初始化、查找字符+获取字符
    冒泡排序
    JAVA中值类型和引用类型的不同?
    二维数组初始化,属性,遍历,输出各元素总和。
    数组定义属性遍历循环,输出最大数
    for穷举,叠代练习
    HTML--Boby部分之<a>标签
    HTML--Boby内标签之多行文本及下拉框
    HTML--Boby部分Input之重置
    HTML--Boby部分Input之上传文件
  • 原文地址:https://www.cnblogs.com/SanMaoSpace/p/2137476.html
Copyright © 2020-2023  润新知