| 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>
 
 
  |