说位图,先把image控件简单过下,Image的Source设置

<Image Name="img" Source="可以是网络图片的Uri、应用文件的Uri或者安装包文件的Uri" />
img.Source = new BitmapIamge(new Uri(同上));

Image的Stretch属性指定图像如何填充,枚举定义:

None,图像不拉伸,一合适尺寸显示;

Uniform,保留图像的纵横比,按控件的大小输出图像;

UnifToFill,已原始大小比填充;

Fill,将整个图完全填充到控件中

Clip属性是UIElement的属性,所以所有的UI对象都有,Clip属性可用来剪切图像

    <Grid Background="Black"          PointerMoved="Grid_PointerMoved">        <Image Name="ContentPanel" Source="ms-appx:///Assets/Logo.scale-240.png">            <Image.Clip>                <RectangleGeometry x:Name="geometry" Rect="0,0,150,150" />            </Image.Clip>        </Image>    </Grid>

        private void Grid_PointerMoved(object sender, PointerRoutedEventArgs e)        {            Point p = e.GetCurrentPoint(ContentPanel).Position;            geometry.Rect = new Rect(p.X, p.Y, 150, 150);        }

效果图,就不切了,自己下来弄下,就知道了。我们截取了图像,如何生成图片呢?使用RenderTragetBitmap类

        //PointerReleased可以捕获单击事件
        private async void root_PointerReleased(object sender, PointerRoutedEventArgs e)
        {
            //创建RenderTargetBitmap对象
            RenderTargetBitmap bitmap = new RenderTargetBitmap();
            //root为UIElement的Name
            await bitmap.RenderAsync(root);
            img.Source = bitmap;
        }

生成图片之后,就是存储图片了,存储图片就需要获得图像的二进制数据,然后通过BitmapEncoder类实现对图像的创建、编辑和保存的各种方法。示例如下:

    <Grid Name="root">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <StackPanel Name="TitlePanel" Margin="10,35,10,10">
            <TextBlock Text=" />
            <TextBlock Text=" />
        </StackPanel>
        <Grid Name=" Margin="10,0,10,10">
            <Image Name="img" />
        </Grid>
        <Grid Grid.Row=">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Button VerticalAlignment="Center" HorizontalAlignment="Center" Content="获取图像" Click="Button_Click_1" />
            <Button VerticalAlignment=" />
        </Grid>
    </Grid>
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            img.Source = new BitmapImage(new Uri("ms-appdata:///local/testBitmap.png",UriKind.Absolute));
        }

        private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            //创建要存储的文件,这个不需多说了。
            var storageFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("testBitmap.png", CreationCollisionOption.OpenIfExists);

            RenderTargetBitmap bitmap = new RenderTargetBitmap();
            await bitmap.RenderAsync(root);

            //获取图像的二进制数据
            var pixelBuffer = await bitmap.GetPixelsAsync();

            using (var fileStream = await storageFile.OpenAsync(FileAccessMode.ReadWrite))
            {
                var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, fileStream);
                encoder.SetPixelData(
                    BitmapPixelFormat.Bgra8,//像素格式
                    BitmapAlphaMode.Ignore,//像素数据的alpha模式,定义透明的
                    (uint)bitmap.PixelWidth,//像素宽
                    (uint)bitmap.PixelHeight,//像素高
                    DisplayInformation.GetForCurrentView().LogicalDpi,//像素水平分辨率,这个就是获取设备的屏幕分辨率的方法
                    DisplayInformation.GetForCurrentView().LogicalDpi,//像素垂直分辨率
                    pixelBuffer.ToArray());//像素数据

                await encoder.FlushAsync();
            }

            await new MessageDialog("获取图像成功并已保存").ShowAsync();
        }

好了,位图编程就到这儿。

windowsphone8.1学习笔记之位图编程的更多相关文章

  1. 孙鑫VC学习笔记:多线程编程

    孙鑫VC学习笔记:多线程编程 SkySeraph Dec 11st 2010  HQU Email:zgzhaobo@gmail.com    QQ:452728574 Latest Modified ...

  2. Hadoop学习笔记(7) ——高级编程

    Hadoop学习笔记(7) ——高级编程 从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成 ...

  3. WCF学习笔记之事务编程

    WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...

  4. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  5. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  6. Python学习笔记6 函数式编程_20170619

    廖雪峰python3学习笔记: # 高阶函数 将函数作为参数传入,这样的函数就是高阶函数(有点像C++的函数指针) def add(x, y): return x+y def mins(x, y): ...

  7. IOS学习笔记之 Socket 编程

    最近开始静心学习IOS编程,虽然起步有点晚,但有句话说的好:“如果想去做,任何时候都不晚”.所以在今天,开始好好学习IOS.(本人之前4年都是搞.Net的,java也培训过一年) 打算学IOS,从哪入 ...

  8. javascript 学习笔记之模块化编程

    题外: 进行web开发3年多了,javascript(后称js)用的也比较多,但是大部分都局限于函数的层次,有些公共的js函数可重用性不好,造成了程序的大量冗余,可读性差(虽然一直保留着注释的习惯,但 ...

  9. javascript 学习笔记之面向对象编程(一):类的实现

    ~~想是一回事,做是一回事,写出来又是一回事~~一直以来,从事C++更多的是VC++多一些,从面向过程到面向对象的转变,让我对OO的编程思想有些偏爱,将一个客观存在的规律抽象出来总是让人比较兴奋,通过 ...

随机推荐

  1. Oracle Study之-AIX6.1构建Oracle 10gR2 RAC(4)

    Oracle Study之-AIX6.1构建Oracle 10gR2 RAC(4) 一.安装CRS补丁 在安装CRS之前,须要安装补丁p6718715_10203_AIX64-5L,否则在安装时会出现 ...

  2. [转载]SecureCRT 绝佳配色方案, 保护你的眼睛

    FROM:http://blog.csdn.net/zklth/article/details/8937905 SecureCRT 绝佳配色方案, 保护你的眼睛   关键词:SecureCRT配色,  ...

  3. wp8手机浏览器项目

    项目需求如下: 1.页面布局 最上方为搜索/网址框 中间为网页显示区,默认主页为百度搜索 最下方为功能栏,分别有后退,前进,窗口和更多功能 在更多功能中有 分享给好友 发送网址到桌面 查看历史记录等 ...

  4. 转:如何查看MyEclipse包含的Eclipse的版本号

    如何查看MyEclipse包含的Eclipse的版本号 博客分类: 技术 myeclipseeclipse  说到Eclipse的版本号,可能只有在安装插件时才会需要到,有人就曾在安装svn时为了找到 ...

  5. Elasticsearch教程(一),全程直播(小白级别)

    ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...

  6. 最美应用-从Android研发project师的角度之[最美时光]

    最美应用-从Android研发project师的角度之最美时光 @author ASCE1885的 Github 简书 微博 CSDN 近期发现最美应用这样一个站点.它会定期推介一些非常有意思的app ...

  7. Warning: isMounted(...) is deprecated in plain JavaScript React classes.

    1.错误提示 警告:isMounted(…)在纯 react.js 类中被弃用. 2.原因解析 出现此错误提示的原因是源代码内有已被React舍弃的代码,但此并不影响程序运行. 在index.js 内 ...

  8. linux 文件&文件夹大小排序

    按照当前文件夹的文件大小排序: ls -l | sort -k 5 -n -r 其中 sort 的几个参数: -k 5: 表示使用第五列字段排序, 当需要按照多个字段排序时, 可使用多个 -k 参数, ...

  9. MySql 删除相同前缀的表名

    SELECT CONCAT('drop table ', table_name, ';') FROM information_schema.tables WHERE table_name LIKE ' ...

  10. Oracle ODBC无Oracle连接驱动

    .下载odbc驱动 需要下载两个东西 instantclient.zip instantclient.zip 下载地址:http:.html 解压放到同一个目录(无冲突) .将oracle数据库所在电 ...