C#:相当于C#中的HTML5 Canvas

Rai*_*ain 4 javascript c# html5 canvas visual-studio

我的目标是通过URI加载带透明度的.png图像,裁剪它们并在画布上绘制它们,然后将画布图像保存为png文件.

在javascript中,它看起来像:

var canvas = document.createElement("canvas");
var ctx = canvas.getContext('2d');

var img = new Image();
img.src = "a.png";

ctx.drawImage(img,10,10,20,20,30,30,10,10);

//drawing more images...

something(canvas.toDataURL('image/png'));
Run Code Online (Sandbox Code Playgroud)

我怎么能在C#Visual Studios 2013中做到这一点?最接近这个JS代码的是什么?

我不介意使用WPF或Winforms.我不需要能够显示图像.我只需要能够保存它.

Ry-*_*Ry- 6

一种方法是使用GDI +(假设using System.Drawing;):

using (var b = new Bitmap()) {            // This is your canvas
    Graphics g = Graphics.FromImage(b);   // This is your graphics context

    g.DrawImage(Image.FromFile("a.png"),
                new Rectangle(30, 30, 10, 10), 10, 10, 20, 20,
                GraphicsUnit.Pixel);

    // Do something with b (e.g. b.Save(…))
}
Run Code Online (Sandbox Code Playgroud)

如果你想要相同的数据URI,那就是(假设using System.Drawing.Imaging;):

using (var ms = new MemoryStream()) {
    using (var b = new Bitmap()) {
        // …

        b.Save(ms, ImageFormat.Png);
    }

    string base64 = Convert.ToBase64String(ms.ToArray());
    something("data:image/png;base64," + base64);
}
Run Code Online (Sandbox Code Playgroud)