コード例 #1
0
        private CanvasRenderTarget GetDrawing(bool isedit)
        {
            double w, h; //画布大小

            if (isedit)  //编辑状态
            {
                w = editCanvas.ActualWidth;
                h = editCanvas.ActualHeight;
            }
            else  //最终生成图片  有一定的scale
            {
                Rect des = GetImageDrawingRect();

                w = (editimage.Size.Width / des.Width) * editCanvas.Width;
                h = (editimage.Size.Height / des.Height) * editCanvas.Height;
            }
            var scale = isedit ? 1 : w / editCanvas.Width;  //缩放比例

            CanvasDevice       device = CanvasDevice.GetSharedDevice();
            CanvasRenderTarget target = new CanvasRenderTarget(device, (float)w, (float)h, 96);

            using (CanvasDrawingSession graphics = target.CreateDrawingSession())
            {
                //绘制背景
                graphics.Clear(_back_color);

                //绘制底图
                DrawBackImage(graphics, scale);

                //绘制涂鸦
                if (_doodleUIs != null && _doodleUIs.Count > 0)
                {
                    var list = _doodleUIs.ToList(); list.Reverse();
                    list.ForEach((d) => { d.Draw(graphics, (float)scale); });   //绘制历史涂鸦
                }
                if (_current_editing_doodleUI != null)
                {
                    _current_editing_doodleUI.Draw(graphics, (float)scale); //绘制当前涂鸦
                }
                //绘制贴图
                if (_wall_paperUI != null)
                {
                    _wall_paperUI.Draw(graphics, (float)scale);
                }
                //水印
                if (haveWatermark)
                {
                    graphics.DrawText(watermark_text, (float)editCanvas.Width / 2 - 2, (float)editCanvas.Height / 2, Colors.Black, new CanvasTextFormat()
                    {
                        FontFamily = "微软雅黑", FontSize = 15
                    });
                }
                ////绘制Tag
                //if (_tagsUIs != null)
                //{
                //    _tagsUIs.ForEach((t) => { t.Draw(graphics, (float)scale); });
                //}
                //绘制Crop裁剪工具
                if (cutmanage != null && isedit)
                {
                    cutmanage.Draw(graphics, (float)scale);
                }
            }

            return(target);
        }