您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
623 行
22 KiB
623 行
22 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using RSG;
|
|
using Unity.UIWidgets.editor;
|
|
using Unity.UIWidgets.material;
|
|
using Unity.UIWidgets.painting;
|
|
using Unity.UIWidgets.ui;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using Color = Unity.UIWidgets.ui.Color;
|
|
using Gradient = Unity.UIWidgets.ui.Gradient;
|
|
using Material = UnityEngine.Material;
|
|
using Rect = UnityEngine.Rect;
|
|
|
|
namespace UIWidgets.Tests {
|
|
public class CanvasAndLayers : EditorWindow {
|
|
static Material _guiTextureMat;
|
|
|
|
internal static Material _getGUITextureMat() {
|
|
if (_guiTextureMat) {
|
|
return _guiTextureMat;
|
|
}
|
|
|
|
var guiTextureShader = Shader.Find("UIWidgets/GUITexture");
|
|
if (guiTextureShader == null) {
|
|
throw new Exception("UIWidgets/GUITexture not found");
|
|
}
|
|
|
|
_guiTextureMat = new Material(guiTextureShader);
|
|
_guiTextureMat.hideFlags = HideFlags.HideAndDontSave;
|
|
return _guiTextureMat;
|
|
}
|
|
|
|
readonly Action[] _options;
|
|
|
|
readonly string[] _optionStrings;
|
|
|
|
int _selected;
|
|
|
|
ImageStream _stream;
|
|
|
|
RenderTexture _renderTexture;
|
|
|
|
WindowAdapter _windowAdapter;
|
|
|
|
MeshPool _meshPool;
|
|
|
|
static Texture2D texture6;
|
|
|
|
int _antiAliasing = Window.defaultAntiAliasing;
|
|
|
|
CanvasAndLayers() {
|
|
this._options = new Action[] {
|
|
this.drawPloygon4,
|
|
this.drawRect,
|
|
this.drawRectShadow,
|
|
this.drawImageRect,
|
|
this.drawPicture,
|
|
this.clipRect,
|
|
this.clipRRect,
|
|
this.saveLayer,
|
|
this.drawLine,
|
|
this.drawParagraph,
|
|
};
|
|
this._optionStrings = this._options.Select(x => x.Method.Name).ToArray();
|
|
this._selected = 0;
|
|
|
|
this.titleContent = new GUIContent("CanvasAndLayers");
|
|
}
|
|
|
|
void OnGUI() {
|
|
this._selected = EditorGUILayout.Popup("test case", this._selected, this._optionStrings);
|
|
if (this._selected == 3) {
|
|
using (this._windowAdapter.getScope()) {
|
|
if (GUI.Button(new Rect(20, 50, 100, 20), "Image 1")) {
|
|
this.LoadImage(
|
|
"http://a.hiphotos.baidu.com/image/h%3D300/sign=10b374237f0e0cf3bff748fb3a47f23d/adaf2edda3cc7cd90df1ede83401213fb80e9127.jpg");
|
|
}
|
|
|
|
if (GUI.Button(new Rect(20, 150, 100, 20), "Image 2")) {
|
|
this.LoadImage(
|
|
"http://a.hiphotos.baidu.com/image/pic/item/cf1b9d16fdfaaf519b4aa960875494eef11f7a47.jpg");
|
|
}
|
|
|
|
if (GUI.Button(new Rect(20, 250, 100, 20), "Image 3")) {
|
|
this.LoadImage(
|
|
"http://a.hiphotos.baidu.com/image/pic/item/2f738bd4b31c8701c1e721dd2a7f9e2f0708ffbc.jpg");
|
|
}
|
|
}
|
|
}
|
|
|
|
this._windowAdapter.OnGUI();
|
|
|
|
if (Event.current.type == EventType.Repaint || Event.current.type == EventType.MouseDown) {
|
|
this.createRenderTexture();
|
|
|
|
Window.instance = this._windowAdapter;
|
|
|
|
if (Event.current.type == EventType.MouseDown) {
|
|
Promise.Delayed(new TimeSpan(0, 0, 5)).Then(() => { Debug.Log("Promise.Delayed: 5s"); });
|
|
}
|
|
|
|
this._options[this._selected]();
|
|
|
|
Window.instance = null;
|
|
|
|
Graphics.DrawTexture(new Rect(0, 0, this.position.width, this.position.height),
|
|
this._renderTexture, _getGUITextureMat());
|
|
}
|
|
}
|
|
|
|
void Update() {
|
|
this._windowAdapter.Update();
|
|
}
|
|
|
|
void OnEnable() {
|
|
this._windowAdapter = new EditorWindowAdapter(this);
|
|
this._windowAdapter.OnEnable();
|
|
this._meshPool = new MeshPool();
|
|
|
|
texture6 = Resources.Load<Texture2D>("6");
|
|
}
|
|
|
|
void OnDisable() {
|
|
this._meshPool.Dispose();
|
|
this._meshPool = null;
|
|
}
|
|
|
|
void createRenderTexture() {
|
|
var width = (int) (this.position.width * EditorGUIUtility.pixelsPerPoint);
|
|
var height = (int) (this.position.height * EditorGUIUtility.pixelsPerPoint);
|
|
if (this._renderTexture == null ||
|
|
this._renderTexture.width != width ||
|
|
this._renderTexture.height != height) {
|
|
var desc = new RenderTextureDescriptor(
|
|
width,
|
|
height,
|
|
RenderTextureFormat.Default, 24) {
|
|
useMipMap = false,
|
|
autoGenerateMips = false,
|
|
};
|
|
|
|
if (this._antiAliasing != 0) {
|
|
desc.msaaSamples = this._antiAliasing;
|
|
}
|
|
|
|
this._renderTexture = RenderTexture.GetTemporary(desc);
|
|
}
|
|
}
|
|
|
|
void LoadImage(string url) {
|
|
Dictionary<string, string> headers = new Dictionary<string, string>();
|
|
NetworkImage networkImage = new NetworkImage(url, headers: headers);
|
|
ImageConfiguration imageConfig = new ImageConfiguration();
|
|
this._stream = networkImage.resolve(imageConfig);
|
|
}
|
|
|
|
void drawPloygon4() {
|
|
var canvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
|
|
this._meshPool);
|
|
|
|
var paint = new Paint {
|
|
color = new Color(0xFFFF0000),
|
|
shader = Gradient.linear(new Offset(80, 80), new Offset(180, 180), new List<Color>() {
|
|
Colors.red, Colors.black, Colors.green
|
|
}, null, TileMode.clamp)
|
|
};
|
|
|
|
var path = new Path();
|
|
path.moveTo(10, 150);
|
|
path.lineTo(10, 160);
|
|
path.lineTo(140, 120);
|
|
path.lineTo(110, 180);
|
|
path.winding(PathWinding.clockwise);
|
|
path.close();
|
|
path.addRect(Unity.UIWidgets.ui.Rect.fromLTWH(0, 100, 100, 100));
|
|
path.addRect(Unity.UIWidgets.ui.Rect.fromLTWH(200, 0, 100, 100));
|
|
path.addRRect(RRect.fromRectAndRadius(Unity.UIWidgets.ui.Rect.fromLTWH(150, 100, 30, 30), 10));
|
|
path.addOval(Unity.UIWidgets.ui.Rect.fromLTWH(150, 50, 100, 100));
|
|
path.winding(PathWinding.clockwise);
|
|
|
|
if (Event.current.type == EventType.MouseDown) {
|
|
var pos = new Offset(
|
|
Event.current.mousePosition.x,
|
|
Event.current.mousePosition.y
|
|
);
|
|
|
|
Debug.Log(pos + ": " + path.contains(pos));
|
|
}
|
|
|
|
canvas.drawPath(path, paint);
|
|
|
|
canvas.rotate(Mathf.PI * 15 / 180);
|
|
|
|
canvas.translate(100, 100);
|
|
|
|
paint.shader = Gradient.radial(new Offset(80, 80), 100, new List<Color>() {
|
|
Colors.red, Colors.black, Colors.green
|
|
}, null, TileMode.clamp);
|
|
canvas.drawPath(path, paint);
|
|
|
|
|
|
canvas.translate(100, 100);
|
|
paint.shader = Gradient.sweep(new Offset(120, 100), new List<Color>() {
|
|
Colors.red, Colors.black, Colors.green, Colors.red,
|
|
}, null, TileMode.clamp, 10 * Mathf.PI / 180, 135 * Mathf.PI / 180);
|
|
canvas.drawPath(path, paint);
|
|
|
|
|
|
canvas.translate(100, 100);
|
|
//paint.maskFilter = MaskFilter.blur(BlurStyle.normal, 5);
|
|
paint.shader = new ImageShader(new Image(texture6, true), TileMode.mirror);
|
|
canvas.drawPath(path, paint);
|
|
|
|
canvas.flush();
|
|
}
|
|
|
|
void drawLine() {
|
|
var canvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
|
|
this._meshPool);
|
|
|
|
var paint = new Paint {
|
|
color = new Color(0xFFFF0000),
|
|
style = PaintingStyle.stroke,
|
|
strokeWidth = 10,
|
|
shader = Gradient.linear(new Offset(10, 10), new Offset(180, 180), new List<Color>() {
|
|
Colors.red, Colors.green, Colors.yellow
|
|
}, null, TileMode.clamp)
|
|
};
|
|
|
|
canvas.drawLine(
|
|
new Offset(10, 20),
|
|
new Offset(50, 20),
|
|
paint);
|
|
|
|
canvas.drawLine(
|
|
new Offset(10, 10),
|
|
new Offset(100, 100),
|
|
paint);
|
|
|
|
canvas.drawLine(
|
|
new Offset(10, 10),
|
|
new Offset(10, 50),
|
|
paint);
|
|
|
|
canvas.drawLine(
|
|
new Offset(40, 10),
|
|
new Offset(90, 10),
|
|
paint);
|
|
|
|
|
|
canvas.drawArc(Unity.UIWidgets.ui.Rect.fromLTWH(200, 200, 100, 100), Mathf.PI / 4,
|
|
-Mathf.PI / 2 + Mathf.PI * 4 - 1, true, paint);
|
|
|
|
paint.maskFilter = MaskFilter.blur(BlurStyle.normal, 1);
|
|
paint.strokeWidth = 4;
|
|
|
|
canvas.drawLine(
|
|
new Offset(40, 20),
|
|
new Offset(120, 190),
|
|
paint);
|
|
|
|
canvas.scale(3);
|
|
TextBlobBuilder builder = new TextBlobBuilder();
|
|
string text = "This is a text blob";
|
|
builder.setBounds(new Rect(-10, -20, 200, 50));
|
|
builder.setPositionXs(new float[] {
|
|
10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
|
|
110, 120, 130, 140, 150, 160, 170, 180, 190
|
|
});
|
|
builder.allocRunPos(new TextStyle(), text, 0, text.Length);
|
|
|
|
var textBlob = builder.make();
|
|
canvas.drawTextBlob(textBlob, new Offset(100, 100), new Paint {
|
|
color = Colors.black,
|
|
maskFilter = MaskFilter.blur(BlurStyle.normal, 5),
|
|
});
|
|
canvas.drawTextBlob(textBlob, new Offset(100, 100), paint);
|
|
|
|
canvas.drawLine(
|
|
new Offset(10, 30),
|
|
new Offset(10, 60),
|
|
new Paint() {style = PaintingStyle.stroke, strokeWidth = 0.1f});
|
|
|
|
canvas.drawLine(
|
|
new Offset(20, 30),
|
|
new Offset(20, 60),
|
|
new Paint() {style = PaintingStyle.stroke, strokeWidth = 0.333f});
|
|
|
|
canvas.flush();
|
|
}
|
|
|
|
void drawRect() {
|
|
var canvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
|
|
this._meshPool);
|
|
|
|
var paint = new Paint {
|
|
color = new Color(0xFFFF0000),
|
|
};
|
|
|
|
canvas.rotate(15 * Mathf.PI / 180);
|
|
var rect = Unity.UIWidgets.ui.Rect.fromLTWH(10, 10, 100, 100);
|
|
var rrect = RRect.fromRectAndCorners(rect, 0, 4, 8, 16);
|
|
|
|
canvas.drawRRect(rrect, paint);
|
|
|
|
paint = new Paint {
|
|
color = new Color(0xFF00FF00),
|
|
};
|
|
|
|
rect = Unity.UIWidgets.ui.Rect.fromLTWH(10, 150, 100, 100);
|
|
rrect = RRect.fromRectAndCorners(rect, 0, 4, 8, 16);
|
|
canvas.drawRRect(rrect, paint);
|
|
|
|
rect = Unity.UIWidgets.ui.Rect.fromLTWH(150, 150, 100, 100);
|
|
rrect = RRect.fromRectAndCorners(rect, 10, 12, 14, 16);
|
|
var rect1 = Unity.UIWidgets.ui.Rect.fromLTWH(160, 160, 80, 80);
|
|
var rrect1 = RRect.fromRectAndCorners(rect1, 5, 6, 7, 8);
|
|
|
|
canvas.drawDRRect(rrect, rrect1, paint);
|
|
|
|
canvas.flush();
|
|
}
|
|
|
|
void drawRectShadow() {
|
|
var canvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
|
|
this._meshPool);
|
|
|
|
var paint = new Paint {
|
|
color = new Color(0xFF00FF00),
|
|
maskFilter = MaskFilter.blur(BlurStyle.normal, 3),
|
|
};
|
|
|
|
canvas.clipRect(Unity.UIWidgets.ui.Rect.fromLTWH(25, 25, 300, 300));
|
|
|
|
canvas.rotate(-Mathf.PI / 8.0f);
|
|
|
|
canvas.drawRect(
|
|
Unity.UIWidgets.ui.Rect.fromLTWH(10, 10, 100, 100),
|
|
paint);
|
|
|
|
paint = new Paint {
|
|
color = new Color(0xFFFFFF00),
|
|
maskFilter = MaskFilter.blur(BlurStyle.normal, 5),
|
|
style = PaintingStyle.stroke,
|
|
strokeWidth = 55,
|
|
shader = Gradient.linear(new Offset(10, 10), new Offset(180, 180), new List<Color>() {
|
|
Colors.red, Colors.green, Colors.yellow
|
|
}, null, TileMode.clamp)
|
|
};
|
|
|
|
canvas.drawRect(
|
|
Unity.UIWidgets.ui.Rect.fromLTWH(10, 150, 200, 200),
|
|
paint);
|
|
|
|
canvas.drawImage(new Image(texture6, true),
|
|
new Offset(50, 150),
|
|
paint);
|
|
|
|
canvas.flush();
|
|
}
|
|
|
|
void drawPicture() {
|
|
var pictureRecorder = new PictureRecorder();
|
|
var canvas = new RecorderCanvas(pictureRecorder);
|
|
|
|
var paint = new Paint {
|
|
color = new Color(0xFFFF0000),
|
|
};
|
|
|
|
var path = new Path();
|
|
path.moveTo(10, 10);
|
|
path.lineTo(10, 110);
|
|
path.lineTo(90, 110);
|
|
path.lineTo(100, 10);
|
|
path.close();
|
|
canvas.drawPath(path, paint);
|
|
|
|
paint = new Paint {
|
|
color = new Color(0xFFFFFF00),
|
|
};
|
|
|
|
var rect = Unity.UIWidgets.ui.Rect.fromLTWH(10, 150, 100, 100);
|
|
var rrect = RRect.fromRectAndCorners(rect, 0, 4, 8, 16);
|
|
var rect1 = Unity.UIWidgets.ui.Rect.fromLTWH(18, 152, 88, 92);
|
|
var rrect1 = RRect.fromRectAndCorners(rect1, 0, 4, 8, 16);
|
|
|
|
canvas.drawDRRect(rrect, rrect1, paint);
|
|
|
|
canvas.rotate(-45 * Mathf.PI / 180, new Offset(150, 150));
|
|
|
|
paint = new Paint {
|
|
color = new Color(0xFF00FFFF),
|
|
maskFilter = MaskFilter.blur(BlurStyle.normal, 3),
|
|
};
|
|
canvas.drawRect(
|
|
Unity.UIWidgets.ui.Rect.fromLTWH(150, 150, 110, 120),
|
|
paint);
|
|
|
|
var picture = pictureRecorder.endRecording();
|
|
Debug.Log("picture.paintBounds: " + picture.paintBounds);
|
|
|
|
var editorCanvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
|
|
this._meshPool);
|
|
editorCanvas.drawPicture(picture);
|
|
|
|
editorCanvas.rotate(-15 * Mathf.PI / 180);
|
|
editorCanvas.translate(100, 100);
|
|
editorCanvas.drawPicture(picture);
|
|
editorCanvas.flush();
|
|
}
|
|
|
|
void drawParagraph() {
|
|
var pb = new ParagraphBuilder(new ParagraphStyle{});
|
|
pb.addText("Hello drawParagraph");
|
|
var paragraph = pb.build();
|
|
paragraph.layout(new ParagraphConstraints(width:300));
|
|
var canvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
|
|
this._meshPool);
|
|
canvas.drawParagraph(paragraph, new Offset(10f, 100f));
|
|
canvas.flush();
|
|
Unity.UIWidgets.ui.Paragraph.release(ref paragraph);
|
|
}
|
|
|
|
void drawImageRect() {
|
|
if (this._stream == null || this._stream.completer == null || this._stream.completer.currentImage == null) {
|
|
return;
|
|
}
|
|
|
|
var canvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
|
|
this._meshPool);
|
|
|
|
var paint = new Paint {
|
|
// color = new Color(0x7FFF0000),
|
|
shader = Gradient.linear(new Offset(100, 100), new Offset(280, 280), new List<Color>() {
|
|
Colors.red, Colors.black, Colors.green
|
|
}, null, TileMode.clamp)
|
|
};
|
|
|
|
canvas.drawImageRect(this._stream.completer.currentImage.image,
|
|
Unity.UIWidgets.ui.Rect.fromLTWH(100, 50, 250, 250),
|
|
paint
|
|
);
|
|
canvas.flush();
|
|
}
|
|
|
|
void clipRect() {
|
|
var pictureRecorder = new PictureRecorder();
|
|
var canvas = new RecorderCanvas(pictureRecorder);
|
|
|
|
var paint = new Paint {
|
|
color = new Color(0xFFFF0000),
|
|
};
|
|
|
|
var path = new Path();
|
|
path.moveTo(10, 10);
|
|
path.lineTo(10, 110);
|
|
path.lineTo(90, 110);
|
|
path.lineTo(110, 10);
|
|
path.close();
|
|
|
|
canvas.drawPath(path, paint);
|
|
|
|
paint = new Paint {
|
|
color = new Color(0xFFFFFF00),
|
|
};
|
|
|
|
var rect = Unity.UIWidgets.ui.Rect.fromLTWH(10, 150, 100, 100);
|
|
var rrect = RRect.fromRectAndCorners(rect, 0, 4, 8, 16);
|
|
var rect1 = Unity.UIWidgets.ui.Rect.fromLTWH(18, 152, 88, 92);
|
|
var rrect1 = RRect.fromRectAndCorners(rect1, 0, 4, 8, 16);
|
|
canvas.drawDRRect(rrect, rrect1, paint);
|
|
|
|
canvas.rotate(-45 * Mathf.PI / 180.0f, new Offset(150, 150));
|
|
|
|
// paint = new Paint {
|
|
// color = new Color(0xFF00FFFF),
|
|
// blurSigma = 3,
|
|
// };
|
|
// canvas.drawRectShadow(
|
|
// Rect.fromLTWH(150, 150, 110, 120),
|
|
// paint);
|
|
|
|
var picture = pictureRecorder.endRecording();
|
|
Debug.Log("picture.paintBounds: " + picture.paintBounds);
|
|
|
|
var editorCanvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
|
|
this._meshPool);
|
|
editorCanvas.rotate(-5 * Mathf.PI / 180);
|
|
editorCanvas.clipRect(Unity.UIWidgets.ui.Rect.fromLTWH(25, 15, 250, 250));
|
|
editorCanvas.rotate(5 * Mathf.PI / 180);
|
|
|
|
editorCanvas.drawPicture(picture);
|
|
|
|
editorCanvas.rotate(-15 * Mathf.PI / 180);
|
|
editorCanvas.translate(100, 100);
|
|
|
|
editorCanvas.drawPicture(picture);
|
|
|
|
editorCanvas.flush();
|
|
}
|
|
|
|
void clipRRect() {
|
|
var pictureRecorder = new PictureRecorder();
|
|
var canvas = new RecorderCanvas(pictureRecorder);
|
|
|
|
var paint = new Paint {
|
|
color = new Color(0xFFFF0000),
|
|
};
|
|
|
|
var path = new Path();
|
|
path.moveTo(10, 10);
|
|
path.lineTo(10, 110);
|
|
path.lineTo(90, 110);
|
|
path.lineTo(110, 10);
|
|
path.close();
|
|
|
|
canvas.drawPath(path, paint);
|
|
|
|
paint = new Paint {
|
|
color = new Color(0xFFFFFF00),
|
|
};
|
|
|
|
var rect = Unity.UIWidgets.ui.Rect.fromLTWH(10, 150, 100, 100);
|
|
var rrect = RRect.fromRectAndCorners(rect, 0, 4, 8, 16);
|
|
var rect1 = Unity.UIWidgets.ui.Rect.fromLTWH(18, 152, 88, 92);
|
|
var rrect1 = RRect.fromRectAndCorners(rect1, 0, 4, 8, 16);
|
|
canvas.drawDRRect(rrect, rrect1, paint);
|
|
|
|
canvas.rotate(-45 * Mathf.PI / 180.0f, new Offset(150, 150));
|
|
|
|
// paint = new Paint {
|
|
// color = new Color(0xFF00FFFF),
|
|
// blurSigma = 3,
|
|
// };
|
|
// canvas.drawRectShadow(
|
|
// Rect.fromLTWH(150, 150, 110, 120),
|
|
// paint);
|
|
|
|
var picture = pictureRecorder.endRecording();
|
|
Debug.Log("picture.paintBounds: " + picture.paintBounds);
|
|
|
|
var editorCanvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
|
|
this._meshPool);
|
|
editorCanvas.rotate(-5 * Mathf.PI / 180);
|
|
editorCanvas.clipRRect(RRect.fromRectAndRadius(Unity.UIWidgets.ui.Rect.fromLTWH(25, 15, 250, 250), 50));
|
|
editorCanvas.rotate(5 * Mathf.PI / 180);
|
|
|
|
editorCanvas.drawPicture(picture);
|
|
|
|
editorCanvas.rotate(-15 * Mathf.PI / 180);
|
|
editorCanvas.translate(100, 100);
|
|
|
|
editorCanvas.drawPicture(picture);
|
|
|
|
editorCanvas.flush();
|
|
}
|
|
|
|
void saveLayer() {
|
|
var pictureRecorder = new PictureRecorder();
|
|
var canvas = new RecorderCanvas(pictureRecorder);
|
|
var paint1 = new Paint {
|
|
color = new Color(0xFFFFFFFF),
|
|
};
|
|
|
|
var path1 = new Path();
|
|
path1.moveTo(0, 0);
|
|
path1.lineTo(0, 90);
|
|
path1.lineTo(90, 90);
|
|
path1.lineTo(90, 0);
|
|
path1.close();
|
|
canvas.drawPath(path1, paint1);
|
|
|
|
|
|
var paint = new Paint {
|
|
color = new Color(0xFFFF0000),
|
|
};
|
|
|
|
var path = new Path();
|
|
path.moveTo(20, 20);
|
|
path.lineTo(20, 70);
|
|
path.lineTo(70, 70);
|
|
path.lineTo(70, 20);
|
|
path.close();
|
|
|
|
canvas.drawPath(path, paint);
|
|
|
|
var paint2 = new Paint {
|
|
color = new Color(0xFFFFFF00),
|
|
};
|
|
|
|
var path2 = new Path();
|
|
path2.moveTo(30, 30);
|
|
path2.lineTo(30, 60);
|
|
path2.lineTo(60, 60);
|
|
path2.lineTo(60, 30);
|
|
path2.close();
|
|
|
|
canvas.drawPath(path2, paint2);
|
|
|
|
var picture = pictureRecorder.endRecording();
|
|
|
|
var editorCanvas = new CommandBufferCanvas(this._renderTexture, Window.instance.devicePixelRatio,
|
|
this._meshPool);
|
|
|
|
editorCanvas.saveLayer(
|
|
picture.paintBounds, new Paint {
|
|
color = new Color(0xFFFFFFFF),
|
|
});
|
|
editorCanvas.drawPicture(picture);
|
|
editorCanvas.restore();
|
|
|
|
editorCanvas.saveLayer(Unity.UIWidgets.ui.Rect.fromLTWH(45, 45, 90, 90), new Paint {
|
|
color = new Color(0xFFFFFFFF),
|
|
backdrop = ImageFilter.blur(3f, 3f)
|
|
});
|
|
editorCanvas.restore();
|
|
|
|
editorCanvas.flush();
|
|
}
|
|
}
|
|
}
|