| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366 | <template>	<view>		<page-head :title="title"></page-head>		<view class="uni-common-mt">			<canvas class="canvas-element" canvas-id="canvas" id="canvas"></canvas>			<scroll-view class="canvas-buttons" scroll-y="true">				<block v-for="(name, index) in names" :key="index">					<button class="canvas-button" @click="handleCanvasButton(name)">{{name}}</button>				</block>				<button class="canvas-button" @click="toTempFilePath" type="primary">toTempFilePath</button>			</scroll-view>		</view>	</view></template><script>	var context = null;	export default {		data() {			return {				title: 'createContext',				names: ["rotate", "scale", "reset", "translate", "save", "restore", "drawImage", "fillText", "fill",					"stroke", "clearRect", "beginPath", "closePath", "moveTo", "lineTo", "rect", "arc",					"quadraticCurveTo", "bezierCurveTo", "setFillStyle", "setStrokeStyle", "setGlobalAlpha",					"setShadow", "setFontSize", "setLineCap", "setLineJoin", "setLineWidth", "setMiterLimit"				]			}		},		onReady: function() {			context = uni.createCanvasContext('canvas',this)		},		methods: {			toTempFilePath: function() {				uni.canvasToTempFilePath({					canvasId: 'canvas',					success: function(res) {						console.log(res.tempFilePath)					},					fail: function(err) {						console.error(JSON.stringify(err))					}				})			},			handleCanvasButton: function(name) {				this[name] && this[name]();			},			rotate: function() {				context.beginPath()				context.rotate(10 * Math.PI / 180)				context.rect(225, 75, 20, 10)				context.fill()				context.draw()			},			scale: function() {				context.beginPath()				context.rect(25, 25, 50, 50)				context.stroke()				context.scale(2, 2)				context.beginPath()				context.rect(25, 25, 50, 50)				context.stroke()				context.draw()			},			reset: function() {				context.beginPath()				context.setFillStyle('#000000')				context.setStrokeStyle('#000000')				context.setFontSize(10)				context.setGlobalAlpha(1)				context.setShadow(0, 0, 0, 'rgba(0, 0, 0, 0)')				context.setLineCap('butt')				context.setLineJoin('miter')				context.setLineWidth(1)				context.setMiterLimit(10)				context.draw()			},			translate: function() {				context.beginPath()				context.rect(10, 10, 100, 50)				context.fill()				context.translate(70, 70)				context.beginPath()				context.fill()				context.draw()			},			save: function() {				context.beginPath()				context.setStrokeStyle('#00ff00')				context.save()				context.scale(2, 2)				context.setStrokeStyle('#ff0000')				context.rect(0, 0, 100, 100)				context.stroke()				context.restore()				context.rect(0, 0, 50, 50)				context.stroke()				context.draw()			},			restore: function() {				[3, 2, 1].forEach(function(item) {					context.beginPath()					context.save()					context.scale(item, item)					context.rect(10, 10, 100, 100)					context.stroke()					context.restore()				});				context.draw()			},			drawImage: function() {				// #ifdef APP-PLUS				context.drawImage('../../../static/app-plus/uni@2x.png', 0, 0)				// #endif				// #ifndef APP-PLUS				context.drawImage('../../../static/uni.png', 0, 0)				// #endif				context.draw()			},			fillText: function() {				context.setStrokeStyle('#ff0000')				context.beginPath()				context.moveTo(0, 10)				context.lineTo(300, 10)				context.stroke()				// context.save()				// context.scale(1.5, 1.5)				// context.translate(20, 20)				context.setFontSize(10)				context.fillText('Hello World', 0, 30)				context.setFontSize(20)				context.fillText('Hello World', 100, 30)				// context.restore()				context.beginPath()				context.moveTo(0, 30)				context.lineTo(300, 30)				context.stroke()				context.draw()			},			fill: function() {				context.beginPath()				context.rect(20, 20, 150, 100)				context.setStrokeStyle('#00ff00')				context.fill()				context.draw()			},			stroke: function() {				context.beginPath()				context.moveTo(20, 20)				context.lineTo(20, 100)				context.lineTo(70, 100)				context.setStrokeStyle('#00ff00')				context.stroke()				context.draw()			},			clearRect: function() {				context.setFillStyle('#ff0000')				context.beginPath()				context.rect(0, 0, 300, 150)				context.fill()				context.clearRect(20, 20, 100, 50)				context.draw()			},			beginPath: function() {				context.beginPath()				context.setLineWidth(5)				context.setStrokeStyle('#ff0000')				context.moveTo(0, 75)				context.lineTo(250, 75)				context.stroke()				context.beginPath()				context.setStrokeStyle('#0000ff')				context.moveTo(50, 0)				context.lineTo(150, 130)				context.stroke()				context.draw()			},			closePath: function() {				context.beginPath()				context.setLineWidth(1)				context.moveTo(20, 20)				context.lineTo(20, 100)				context.lineTo(70, 100)				context.closePath()				context.stroke()				context.draw()			},			moveTo: function() {				context.beginPath()				context.moveTo(0, 0)				context.lineTo(300, 150)				context.stroke()				context.draw()			},			lineTo: function() {				context.beginPath()				context.moveTo(20, 20)				context.lineTo(20, 100)				context.lineTo(70, 100)				context.stroke()				context.draw()			},			rect: function() {				context.beginPath()				context.rect(20, 20, 150, 100)				context.stroke()				context.draw()			},			arc: function() {				context.beginPath()				context.setLineWidth(2)				context.arc(75, 75, 50, 0, Math.PI * 2, true)				context.moveTo(110, 75)				context.arc(75, 75, 35, 0, Math.PI, false)				context.moveTo(65, 65)				context.arc(60, 65, 5, 0, Math.PI * 2, true)				context.moveTo(95, 65)				context.arc(90, 65, 5, 0, Math.PI * 2, true)				context.stroke()				context.draw()			},			quadraticCurveTo: function() {				context.beginPath()				context.moveTo(20, 20)				context.quadraticCurveTo(20, 100, 200, 20)				context.stroke()				context.draw()			},			bezierCurveTo: function() {				context.beginPath()				context.moveTo(20, 20)				context.bezierCurveTo(20, 100, 200, 100, 200, 20)				context.stroke()				context.draw()			},			setFillStyle: function() {				['#fef957', 'rgb(242,159,63)', 'rgb(242,117,63)', '#e87e51'].forEach(function(item, index) {					context.setFillStyle(item)					context.beginPath()					context.rect(0 + 75 * index, 0, 50, 50)					context.fill()				})				context.draw()			},			setStrokeStyle: function() {				['#fef957', 'rgb(242,159,63)', 'rgb(242,117,63)', '#e87e51'].forEach(function(item, index) {					context.setStrokeStyle(item)					context.beginPath()					context.rect(0 + 75 * index, 0, 50, 50)					context.stroke()				})				context.draw()			},			setGlobalAlpha: function() {				context.setFillStyle('#000000');				[1, 0.5, 0.1].forEach(function(item, index) {					context.setGlobalAlpha(item)					context.beginPath()					context.rect(0 + 75 * index, 0, 50, 50)					context.fill()				})				context.draw()				context.setGlobalAlpha(1)			},			setShadow: function() {				context.beginPath()				context.setShadow(10, 10, 10, 'rgba(0, 0, 0, 199)')				context.rect(10, 10, 100, 100)				context.fill()				context.draw()			},			setFontSize: function() {				[10, 20, 30, 40].forEach(function(item, index) {					context.setFontSize(item)					context.fillText('Hello, world', 20, 20 + 40 * index)				})				context.draw()			},			setLineCap: function() {				context.setLineWidth(10);				['butt', 'round', 'square'].forEach(function(item, index) {					context.beginPath()					context.setLineCap(item)					context.moveTo(20, 20 + 20 * index)					context.lineTo(100, 20 + 20 * index)					context.stroke()				})				context.draw()			},			setLineJoin: function() {				context.setLineWidth(10);				['bevel', 'round', 'miter'].forEach(function(item, index) {					context.beginPath()					context.setLineJoin(item)					context.moveTo(20 + 80 * index, 20)					context.lineTo(100 + 80 * index, 50)					context.lineTo(20 + 80 * index, 100)					context.stroke()				})				context.draw()			},			setLineWidth: function() {				[2, 4, 6, 8, 10].forEach(function(item, index) {					context.beginPath()					context.setLineWidth(item)					context.moveTo(20, 20 + 20 * index)					context.lineTo(100, 20 + 20 * index)					context.stroke()				})				context.draw()			},			setMiterLimit: function() {				context.setLineWidth(4);				[2, 4, 6, 8, 10].forEach(function(item, index) {					context.beginPath()					context.setMiterLimit(item)					context.moveTo(20 + 80 * index, 20)					context.lineTo(100 + 80 * index, 50)					context.lineTo(20 + 80 * index, 100)					context.stroke()				})				context.draw()			}		}	}</script><style>	.canvas-element-wrapper {		display: block;		margin-bottom: 100rpx;	}	.canvas-element {		width: 100%;		height: 500rpx;		background-color: #ffffff;	}	.canvas-buttons {		padding: 30rpx 50rpx 10rpx;		width: 100%;		height: 360rpx;		box-sizing: border-box;	}	.canvas-button {		float: left;		display: inline-flex;		align-items: center;		justify-content: center;		height: 40px;		line-height: 1;		width: 300rpx;		margin: 15rpx 12rpx;	}</style>
 |