1.视图状态:fullscreenportrait
FullScreenLandscape snapped(程序只占屏幕一小部分) filled(程序占了snapped宽度剩余的区域)
在设计器里分别设计几种视图 然后监听视图改变事件,以进行相应的处理
其中 SizeChanged += MainView_SizeChanged;是注册事件。ApplicationView.value是获取当前视图状态的值。值类型定义如下:
下面是文件MainPage.xaml.cs
代码:其中方法MainView_SizeChanged 根据不同的视图状态切换到不同的视图,以为用户提供不同的布局
3.颜色选择器:
writeableBitmap中的Render方法不可用了,这样的话writeablebitmap无法与多边形控件交互。
这样的话就首先要把轨迹轮廓绘制到writeablebitmap上。
在设计器里分别设计几种视图 然后监听视图改变事件,以进行相应的处理
其中 SizeChanged += MainView_SizeChanged;是注册事件。ApplicationView.value是获取当前视图状态的值。值类型定义如下:
04 |
public enum ApplicationViewState |
05 |
{ |
06 |
//
摘要: |
07 |
//
当前应用程序的视图为全屏(没有预期相邻的对齐的应用程序)并且已更改为横向。 |
08 |
FullScreenLandscape
= 0, |
09 |
// |
10 |
//
摘要: |
11 |
//
当前应用程序视图已缩小到部分屏幕视图作为另一个应用程序对齐的结果。 |
12 |
Filled
= 1, |
13 |
// |
14 |
//
摘要: |
15 |
//
当前应用程序的视图已对齐。 |
16 |
Snapped
= 2, |
17 |
// |
18 |
//
摘要: |
19 |
//
当前应用程序的视图为全屏(没有预期相邻的对齐的应用程序)并且已更改为纵向。 |
20 |
FullScreenPortrait
= 3, |
21 |
} |
public LandPaperCutHandPaint()
{
this.InitializeComponent();
SizeChanged += MainView_SizeChanged;
}
void MainView_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (ApplicationView.Value == ApplicationViewState.FullScreenLandscape)
{
}
if (ApplicationView.Value == ApplicationViewState.FullScreenPortrait)
{
Frame.Navigate(typeof(PaperCutHandPaint));
}
if (ApplicationView.Value == ApplicationViewState.Filled)
Frame.Navigate(typeof(PaperCut.FilledMainPage));
if (ApplicationView.Value == ApplicationViewState.Snapped)
Frame.Navigate(typeof(PaperCut.SnappedMainPage));
} 另外后来发现可以设置页面固定在一个视图状态上,只是在模拟器上看不到设置的效果,在真实的机器上可以看到。
2.触控操作:这边的触屏操作已经变得简单多了,只需要在image控件定义一个CompositeTransform对象,然后根据触屏函数参数中的成员变量来进行相应的改变即可protected override void OnManipulationDelta(ManipulationDeltaRoutedEventArgs args) //控制相应的拖动、放大和旋转
{//重写触屏函数
if (isDragging == true)
{
transform.TranslateX += args.Delta.Translation.X;
transform.TranslateY += args.Delta.Translation.Y;
transform.ScaleX *= args.Delta.Scale;
transform.ScaleY *= args.Delta.Scale;
transform.Rotation += args.Delta.Rotation;
base.OnManipulationDelta(args);
}
} 3.颜色选择器:
在codeplex下载开源项目coding4fun的源代码,根据颜色选择器的源代码添加到win8的app中
4.最大的难点是writeableBitmap中的Render方法不可用了,这样的话writeablebitmap无法与多边形控件交互。
这样的话就首先要把轨迹轮廓绘制到writeablebitmap上。
考虑过使用writeablebitmapEx的setpixel方法,来将多义线控件的坐标写到writeablebitmap上,但是这个方法效率太低。