博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WP7基础学习---第七讲
阅读量:7211 次
发布时间:2019-06-29

本文共 3080 字,大约阅读时间需要 10 分钟。

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

地址:

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=">

后台代码编写:

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

转载于:https://www.cnblogs.com/SanMaoSpace/archive/2011/08/13/2137476.html

你可能感兴趣的文章
开源漏洞扫描工具(OWASP-Dependency-Check)探索
查看>>
中文分词算法工具hanlp源码解析
查看>>
使用Netsil监控Kubernetes上的微服务
查看>>
小米正式开源 Istio 管理面板 Naftis
查看>>
Zabbix 添加WEB监控(学习笔记十一)
查看>>
ImageIO 框架详细解析
查看>>
查询一个ID出现2种结果的情况
查看>>
亚马逊 OpenJDK 发行版 Corretto GA
查看>>
kaldi 源码分析(七) - HCLG 分析
查看>>
SpaceVim 1.1.0 发布,模块化 Vim IDE
查看>>
Java 设计模式六大原则
查看>>
CentOS7 搭建Ambari-Server,安装Hadoop集群(一)
查看>>
Python爬虫基础:验证码的爬取和识别详解
查看>>
WPF 可触摸移动的ScrollViewer控件
查看>>
mysql事务
查看>>
HBase基本操作-java api
查看>>
PostgreSQL的时间/日期函数使用
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.4. 额外特性
查看>>
十字星文化获数千万元A轮融资,腾讯持续下注
查看>>
cron和crontab
查看>>