Windows Phone开发(21):做一个简单的绘图板

原文:Windows Phone开发(21):做一个简单的绘图板

其实我们今天要说的就是一个控件——InkPresenter,这个控件并不是十分强大,没办法和WPF中的InkCanvas相比,估计在实际开发中也很少可能会用到它,不过,我们还是来了解一下吧,毕竟用起来也不难。

 

使用该控件没有什么技术含量,注意一下以下几点就是了:

1、必须明确指定InkPresenter的宽度和高度,也就是不能使用自动值和Margin,不然不能收集墨迹,除非里面有子元素;

2、要收集墨迹,要设置Clip属性;

3、可以使用DrawingAttributes类设置墨迹的大小和颜色。

 

该控件不能像WPF那样自动实现收集墨迹的功能,也就是说只能是我们自己写代码了。

 

    <Grid>
        <InkPresenter x:Name="MyPresenter"
                      HorizontalAlignment="Left"
                      VerticalAlignment="Top"
                      MouseLeftButtonDown="MyPresenter_MouseLeftButtonDown"
                      LostMouseCapture="MyPresenter_LostMouseCapture"
                      MouseMove="MyPresenter_MouseMove"
                      Background="Transparent"
                      Opacity="1" Width="480" Height="750" />
    </Grid>

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
// 引入以下命名空间。
using System.Windows.Ink;

namespace InkPresentSample
{
    public partial class MainPage : PhoneApplicationPage
    {
        Stroke CurrentStroke = null;
        // 构造函数
        public MainPage()
        {
            InitializeComponent();

            // 设置剪辑,以便收集墨迹
            RectangleGeometry rg = new RectangleGeometry();
            // 为了使范围准确,应使用控件的最终呈现高度。
            rg.Rect = new Rect(0, 0, MyPresenter.ActualWidth, MyPresenter.ActualHeight);
            MyPresenter.Clip = rg;
        }

        private void MyPresenter_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            // 当我们点击时获捉鼠标光标
            MyPresenter.CaptureMouse();
            // 收集当前的光标所在的位置的点
            StylusPointCollection sc = new StylusPointCollection();
            sc.Add(e.StylusDevice.GetStylusPoints(MyPresenter));
            CurrentStroke = new Stroke(sc);
            // 设置笔触的颜色,大小
            CurrentStroke.DrawingAttributes.Color = Colors.Yellow;
            CurrentStroke.DrawingAttributes.Width = 8;
            CurrentStroke.DrawingAttributes.Height = 8;
            // 把新的笔触添加到集合中
            MyPresenter.Strokes.Add(CurrentStroke);
        }

        private void MyPresenter_LostMouseCapture(object sender, MouseEventArgs e)
        {
            // 当释放鼠标时,也同时释放笔触变量的引用
            CurrentStroke = null;
        }

        private void MyPresenter_MouseMove(object sender, MouseEventArgs e)
        {
            if (CurrentStroke != null)
            {
                // 每移动一次鼠标,都收集对应的点。
                CurrentStroke.StylusPoints.Add(e.StylusDevice.GetStylusPoints(MyPresenter));
            }
        }
    }
}

 

 

时间: 2024-09-21 17:47:27

Windows Phone开发(21):做一个简单的绘图板的相关文章

线程-我想做一个简单的抽签 用windows from 做对txt读写

问题描述 我想做一个简单的抽签 用windows from 做对txt读写 求windows from线程步骤 求windowsfrom 对txt文档读写步骤 非常感谢 解决方案 非常感谢 解决方案二: http://blog.csdn.net/xianfajushi/article/details/7498079

源码-用javaSSH框架做一个简单的登录功能

问题描述 用javaSSH框架做一个简单的登录功能 用SSH框架做一个简单的登录功能,登录成功则跳转到一个页面,登录失败则跳转到一个失败页面,MySQL数据库.求大神指点,最好能提供源码 解决方案 Spring 3.x 企业应用开发实战的第一个例子就符合你的要求了.Mysql+srping3 解决方案二: 告诉我你的扣扣邮箱,我发你邮箱 解决方案三: 主要还是在struts2 里面,处理业务逻辑,再跳转到指定页面,关键在struts,xml配置文件里面

[Qt Topic] – 二维绘图研习,做一个简单批量水印工具

[Qt Topic] – 二维绘图研习,做一个简单批量水印工具 作者:Jason Lee 日期:2010-05-02 平台:Qt SDK v2010.02.1 + Windows Xp 声明:文章作者仅在Intel软件网络和CSDN博客发表本文,如有转载,请注明出处   [1]二维绘图概览 Qt中的二维绘图是基于QPainter.QPaintEngine和QPaintDevice机制的:以QPaintEngine作为中间接口,使用QPainter在不同绘图设备上进行绘图操作,而QPaintDev

spring mvc-初学spring,想做一个简单的登入验证功能,报404错误,已被困扰一天了,跪求帮助

问题描述 初学spring,想做一个简单的登入验证功能,报404错误,已被困扰一天了,跪求帮助 项目用ecliper ee开发,jdk1.7+mysql+tomcat环境.初学spring,想做一个简单的页面登入验证功能,报404错误,用了spring mvc,在Controller类里打了断点发现程序根本没有执行Controller类,检查了n遍配置文件感觉都是对的.这个bug已经困扰我一天多了,跪求帮助!! 页面错误信息 项目目录结构 web.xml 配置 applicationContex

想用mvc5做一个简单的在线考试系统,求大神指点

问题描述 想用mvc5做一个简单的在线考试系统,求大神指点!!!!留下qq或者其他,详聊 解决方案 解决方案二:http://test.icesoft.cc我刚搞完的,看合不合口味,结贴给源代码解决方案三:引用1楼Acyk的回复: http://test.icesoft.cc我刚搞完的,看合不合口味,结贴给源代码 晕!难道不能输出为一张完整的试卷吗?为什么一题一屏幕,而且还不断刷新页面呢?解决方案四:引用楼主qq_24733397的回复: 想用mvc5做一个简单的在线考试系统,求大神指点!!!!

我的编程学习路-想做一个简单对对碰游戏,如何实现游戏界面啊?

问题描述 想做一个简单对对碰游戏,如何实现游戏界面啊? 我目前是大一的学生,编程方面的东西不是很懂,想做一个简单的对对碰游戏,可是运行结果总是不能出现游戏界面,请问我要怎么让那个界面出现呢,是否还要建立包含游戏图片的库??求大神们能和我说一下都需要做些什么 解决方案 做一个简单的游戏服务器 解决方案二: 不知到你的编程环境是什么,windows下可以考虑用MFC.他是windows API 的图形界面库,因该可以满足你的要求.

如何做一个简单的小网站

如何做一个简单的小网站,请注意:拥有域名不代表你就有了网站.做之前要想一下,网站用来干什么?静态的还是动态的,自己至少要懂一点代码知识,不懂程序的话,也要对html多少了解一些. 不然,我建议你还是到各大网站申请个Blog写日志算了:) 如果你: 1.做个简历式的小网站 上面就放些文章,图片或者资料,且文件不多,那么选择静态空间就搞定.你可以自己或者找人来做个网页的模版,自己套内容就 可以. 整体下来只要99元,包括域名和空间.在http://www.nicenic.com/design/?s=

用php做一个简单的表单

PHP最有用的特性之一是它能够自动将表单中的变量值赋予PHP变量.这使得表单处理变得非常快捷. 因此,如果你送出一个内含输入栏位值的表单如下: <INPUT TYPE=TEXT NAME="name" VALUE="Glen Morris"> 当你用PHP处理此页面,$name变量的值就会是 Glen Morris. 因此,你可以用如下的方式把值打印出来: echo "Hi $name!"; 或者像这样测试其值: if ($name

静态网页-求大哥们帮做一个简单的购物网页。

问题描述 求大哥们帮做一个简单的购物网页. 小弟本人是IT新手加菜鸟,刚上大一,这学期初学习了HTML静态网页制作,现在有道结课作业,要求如下: 至少应该有主页.注册登陆页面及其他商品介绍的页面.主页要求有导航栏区.登陆注册区.以及其他主题功能图片预览区:主页命名为index.html; 3. 完成注册.登陆功能,网站主页使用合理的框架结构: 4. 用户的注册功能利用表单来完成,注册用户登陆后可以上传本地其他图片到某某文件夹中: 5. 网站中的其他页面和功能可以根据自己能力水平进行其他方面设计,