您的位置:首页 > 编程语言 > C#

win2d绘制图片

2015-09-11 18:56 746 查看
win8(及更新版本)的软件开发已经弃用了wp7中xna等各种框架。虽然现在的框架和wp7的差不多,但是各种类都变了也是累人。怎么绘制图片就是个很烦人的东西。不久之前,win2d横空出世,但是大概因为太新,网上几乎找不到其用法,居然连msdn里都没有例子,也是醉了。所以只能自己慢慢弄了,弄了一天,终于弄出了绘制图片的方法。如下:

1.顺便说一下安装win2d,vs中没有自带,所以要自己安装。如图打开nuget联网添加win2d(8.1)或win10版本。


2.直接上代码

xaml文件添加

xmlns:canvas="using:Microsoft.Graphics.Canvas.UI.Xaml"
<Grid
<canvas:CanvasControl Draw="canvasControl_Draw" ClearColor="CornflowerBlue" />
</Grid>


cs文件

//cs文件
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.Storage.Streams;
using Windows.Graphics.Imaging;
using Windows.Graphics;
using  Windows.Storage;
using Microsoft.Graphics.Canvas.UI.Xaml;
using Microsoft.Graphics.Canvas.Effects;
using Microsoft.Graphics.Canvas;
using System.Threading.Tasks;
async void canvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args)
{
CanvasBitmap mtg = await CanvasBitmap.LoadAsync(sender,@"C:\Users\lin\AppData\Local\Packages\ef85bb1d-3be4-402d-b9cf-5bd3f662b472_f5vgcp4em8nbc\LocalState\jws.png");
//第二个参数是图片路径,win8程序限制访问文件的范围,这个文件夹有点难找,可以用
//  StorageFolder folder = ApplicationData.Current.LocalFolder; folder.toString();获得
var cmdList = new CanvasCommandList(sender);
using (var clds = cmdList.CreateDrawingSession())
{
clds.DrawImage(mtg,new Rect(10,10,100,100));
//前两个参数是坐标,后两个是绘图大小
}
args.DrawingSession.DrawImage(cmdList);
}


这样就把图给绘制出来了


await应该是添加线程,用await要在该函数名前加async,如async void canvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args)。

另外找到的唯一参考网址:https://github.com/Microsoft/Win2D-Samples/tree/1530e50b955b815b7f718fb32256ffbfee3173ef
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息