• Window Phone7中SL开发中的位图和从相机获取图片


    在SL中位图可指向一个图像,图像其实又可能是位图或者矢量图,SL中主要使用Image元素来显示位图。

    SL模式下只支持JPEG和PGn两种格式

    这个文章主要介绍从各种资源中获取位图,显示位图

    1.使用Image控件读取本地图片

    在项目中新建一个文件夹Images,然后添加一个png图片到这个文件夹中,添加后点击右键查看属性“生成操作”=“资源resource”。注意这个地方

    <Image Source="Images/test.png" Width="100" Height="100"></Image>

    这样就可以显示这个test.png图片,默认情况下image控件会使用伸展属性(Stretch)来扩充这个图片到最大。

    Stretch有4个不同的值,不用不同的填充方式来显示图片

    2.使用image读取网络图片

    直接把图片的网络地址赋值给source就可以

    <Image Source="http://XXXXXX.jpg" Width="100" Height="100"></Image>

    Image控件有ImageOpened和ImageFailed两个事件,可以来判断是否加载成功。

    Image的属性Source不是字符串类型,而是ImageSource类。

    ImageSource是一个抽象类,派生有BitmapSource ,这个继而派生BitMapImage

    cs代码给Image控件赋值如下

    Uri uri = new Uril("图片地址路径,或者网络路径");

    BitmapImage bmp= new BitMapImage(uri);

    img.Source = bmp;

    或者

    Uri uri = new Uril("图片地址路径,或者网络路径");

      StreamResourceInfo resourceInfo = Application.GetResourceStream(uri);

                BitmapImage bmp = new BitmapImage();

                bmp.SetSource(resourceInfo.Stream);

    img.Source = bmp;

     

    //如果图片文件是资源属性,在cs代码使用下面的语法

                 Uri uri = new Uri("/PhoneApp1;component/Images/test.png", UriKind.RelativeOrAbsolute);

    3。图片资源文件的属性

    添加一个图片文件到vs项目中的时候,查看属性中的“生成操作”默认是“Resource资源”。

    如果使用这个方式,图片文件会当作资源被打包到项目的dll文件或者exe文件中

    如果把“生成操作”修改成“Content内容”,这个时候图片文件和所在的文件夹,会被复制到生成的目录中(默认debug文件夹中),可以独立的查看

    一般情况下图片数量比较少,而且又小,可以当做资源文件随程序一起分发。

    如果图片数量比较大,又比较大,可以考虑当做内容属性,独立的存储。如果都打包的程序中,会使程序启动比较慢

    4.裁剪图片,模糊化图片

    裁剪图片,通过指定图片的某个几何区域,只显示图片这个区域内的内容

    图片有个Clip属性可以完成这个工作

     <Image Source="Images/test.png" >
                <Image.Clip>
                    <EllipseGeometry RadiusX="100" RadiusY="200" Center="180,180"></EllipseGeometry>
      </Image.Clip>

    模糊化图片只的对图片部分位置模糊化,形成特定的效果OpacityMask

      <Image.OpacityMask>
                    <RadialGradientBrush GradientOrigin="0.5,0.5"
    Center="0.5,0.5"
    RadiusX="0.5"
    RadiusY="0.5">
                        <!-- These Gradient Stop colors are only changing the
    alpha values so the image fades out toward the edges. -->
                        <GradientStop Color="#ffffffff" Offset="0.5" />
                        <GradientStop Color="#00ffffff" Offset="0.8" />
                    </RadialGradientBrush>
                </Image.OpacityMask>

    从相机获取图片

    在window.Phone.Task下有几个选择器(Chooser)和启动器(Launcher),选择器可以返回数据,启动器不返回数据。

    CameraCaptureTask是一个选择器,定义了Completed方法和show方法。completed方法执行的时候表示相机程序被调用了,返回的PhoneResult方法包含了一个照片的Stream对象。

    show方法用来显示相机程序

      CameraCaptureTask camer = new CameraCaptureTask();
            // 构造函数
            public MainPage()
            {
                InitializeComponent();
    
                camer.Completed += new EventHandler<PhotoResult>(camer_Completed);
            }
    
            void camer_Completed(object sender, PhotoResult e)
            {
                if (e.TaskResult == TaskResult.OK)
                {
                    BitmapImage bmp = new BitmapImage();
                    bmp.SetSource(e.ChosenPhoto);
                    Img1.Source = bmp;
                }
                
            }
    
  • 相关阅读:
    int&amp;boolean——Java和C的一点小差别
    华宇软件笔试题
    腾讯笔试感受
    JavaScript-创建第一个自己的类库
    大数据处理之道 (htmlparser获取数据&lt;一&gt;)
    mui.fire()用法
    Juicer 轻量级javascript模板引擎
    art-template引擎模板
    js模板引擎-art-template常用总结
    移动端开发框架Zepto.js
  • 原文地址:https://www.cnblogs.com/zjypp/p/2336343.html
Copyright © 2020-2023  润新知