CanvasContext

解释: 绘图上下文。

方法参数

示例

跳转编辑工具

在开发者工具中打开

在 WEB IDE 中打开

扫码体验

代码示例

百度智能小程序

请使用百度APP扫码

图片示例

CanvasContext - 图2

代码示例

  • SWAN
  • JS
  • CSS
  1. <view class="wrap">
  2. <view class="card-area">
  3. <canvas canvas-id="canvas"></canvas>
  4. </view>
  5. <view class="card-area flexBottom swan-security-padding-bottom" style="height:{{isIPhoneX ? 5.4 : 4.1}}rem">
  6. <view class="top-description border-bottom">展示绘图</view>
  7. <scroll-view scroll-y class="scroll">
  8. <button s-for="item in methods" class="canvas-button" type="primary" bindtap="{{item}}">{{item}}</button>
  9. <button bindtap="toTempFilePath" type="primary">toTempFilePath</button>
  10. </scroll-view>
  11. </view>
  12. </view>
  • 在 canvas 文件中

  • JS

  1. const canvas = {};
  2. canvas.arc = function (context) {
  3. context.beginPath();
  4. context.arc(100, 75, 50, 0, 2 * Math.PI);
  5. context.setFillStyle('blue');
  6. context.fill();
  7. context.draw();
  8. };
  9. canvas.beginPath = function (context) {
  10. context.beginPath();
  11. context.setLineWidth(5);
  12. context.setStrokeStyle('#ff0000');
  13. context.moveTo(0, 75);
  14. context.lineTo(250, 75);
  15. context.stroke();
  16. context.beginPath();
  17. context.setStrokeStyle('#0000ff');
  18. context.moveTo(50, 0);
  19. context.lineTo(150, 130);
  20. context.stroke();
  21. };
  22. canvas.bezierCurveTo = function (context) {
  23. context.beginPath();
  24. context.moveTo(20, 20);
  25. context.bezierCurveTo(20, 100, 200, 100, 200, 20);
  26. context.setStrokeStyle('black');
  27. context.stroke();
  28. };
  29. canvas.clearRect = function (context) {
  30. context.setFillStyle('blue');
  31. context.fillRect(0, 0, 250, 150);
  32. context.clearRect(20, 20, 150, 75);
  33. context.draw();
  34. };
  35. canvas.clip = function (context) {
  36. context.beginPath();
  37. context.rect(50, 20, 200, 120);
  38. context.stroke();
  39. context.clip();
  40. context.fillRect(0, 0, 150, 100);
  41. };
  42. canvas.closePath = function (context) {
  43. context.beginPath();
  44. context.moveTo(20, 20);
  45. context.lineTo(20, 100);
  46. context.lineTo(70, 100);
  47. context.closePath();
  48. context.stroke();
  49. };
  50. canvas.createCircularGradient = function (context) {
  51. // Create circular gradient
  52. const grd = context.createCircularGradient(75, 50, 50);
  53. grd.addColorStop(0, 'red');
  54. grd.addColorStop(1, 'blue');
  55. // Fill with gradient
  56. context.setFillStyle(grd);
  57. context.fillRect(30, 30, 150, 80);
  58. };
  59. canvas.createLinearGradient = function (context) {
  60. const grd = context.createLinearGradient(0, 0, 200, 0);
  61. grd.addColorStop(0, 'blue');
  62. grd.addColorStop(1, 'red');
  63. // Fill with gradient
  64. context.setFillStyle(grd);
  65. context.fillRect(30, 30, 150, 80);
  66. };
  67. canvas.drawImage = function (context) {
  68. context.drawImage('https://b.bdstatic.com/searchbox/icms/searchbox/img/api_logo.png', 0, 0);
  69. };
  70. canvas.fill = function (context) {
  71. context.beginPath();
  72. context.moveTo(100, 100);
  73. context.lineTo(10, 100);
  74. context.lineTo(10, 10);
  75. context.fill();
  76. };
  77. canvas.fillRect = function (context) {
  78. context.beginPath();
  79. context.setFillStyle('blue');
  80. context.fillRect(30, 30, 150, 75);
  81. };
  82. canvas.fillText = function (context) {
  83. context.setFontSize(20);
  84. context.fillText('Hello', 20, 20);
  85. context.fillText('World', 100, 100);
  86. };
  87. canvas.font = function (context) {
  88. context.font = '50px oblique bold Microsoft YaiHei';
  89. context.fillText('微软雅黑', 90, 90);
  90. context.font = '50px 楷体';
  91. context.fillText('楷体', 90, 200);
  92. };
  93. canvas.lineTo = function (context) {
  94. context.beginPath();
  95. context.moveTo(10, 10);
  96. context.rect(10, 10, 100, 50);
  97. context.lineTo(110, 60);
  98. context.stroke();
  99. };
  100. canvas.moveTo = function (context) {
  101. context.moveTo(10, 10);
  102. context.lineTo(100, 10);
  103. context.moveTo(10, 100);
  104. context.lineTo(100, 100);
  105. context.stroke();
  106. };
  107. canvas.quadraticCurveTo = function (context) {
  108. context.beginPath();
  109. context.moveTo(20, 20);
  110. context.quadraticCurveTo(20, 100, 200, 20);
  111. context.stroke();
  112. };
  113. canvas.rect = function (context) {
  114. context.beginPath();
  115. context.rect(30, 30, 150, 75);
  116. context.stroke();
  117. };
  118. canvas.rotate = function (context) {
  119. context.beginPath();
  120. context.strokeRect(100, 10, 150, 100);
  121. context.rotate(10 * Math.PI / 180);
  122. context.strokeRect(100, 10, 150, 100);
  123. context.rotate(10 * Math.PI / 180);
  124. context.strokeRect(100, 10, 150, 100);
  125. context.fill();
  126. };
  127. canvas.saveAndRestore = function (context) {
  128. context.beginPath();
  129. context.setFillStyle('red');
  130. context.save();
  131. context.setFillStyle('blue');
  132. context.fillRect(10, 10, 150, 100);
  133. context.restore();
  134. context.fillRect(50, 50, 150, 100);
  135. context.stroke();
  136. };
  137. canvas.scale = function (context) {
  138. context.beginPath();
  139. context.rect(10, 10, 25, 15);
  140. context.stroke();
  141. context.scale(2, 2);
  142. context.beginPath();
  143. context.rect(10, 10, 25, 15);
  144. context.stroke();
  145. context.scale(2, 2);
  146. context.beginPath();
  147. context.rect(10, 10, 25, 15);
  148. context.stroke();
  149. };
  150. canvas.setFillStyle = function (context) {
  151. ['blue', '#ffff00', 'rgba(255,255,0, 0.3)'].forEach(function (item, index) {
  152. context.setFillStyle(item);
  153. context.beginPath();
  154. context.rect(0 + 75 * index, 0, 50, 50);
  155. context.fill();
  156. });
  157. };
  158. canvas.setFontSize = function (context) {
  159. context.setFontSize(20);
  160. context.fillText('20', 20, 20);
  161. context.setFontSize(30);
  162. context.fillText('30', 40, 40);
  163. context.setFontSize(40);
  164. context.fillText('40', 60, 60);
  165. context.setFontSize(50);
  166. context.fillText('50', 90, 90);
  167. };
  168. canvas.setGlobalAlpha = function (context) {
  169. context.setFillStyle('red');
  170. context.fillRect(10, 10, 150, 100);
  171. context.setGlobalAlpha(0.2);
  172. context.setFillStyle('blue');
  173. context.fillRect(50, 50, 150, 100);
  174. context.setFillStyle('yellow');
  175. context.fillRect(100, 100, 150, 100);
  176. context.draw();
  177. };
  178. canvas.setLineCap = function (context) {
  179. context.beginPath();
  180. context.moveTo(20, 10);
  181. context.lineTo(200, 10);
  182. context.stroke();
  183. ['butt', 'round', 'square'].forEach(function (item, index) {
  184. context.beginPath();
  185. context.setLineCap(item);
  186. context.setLineWidth(10);
  187. context.moveTo(20 + 20 * index, 20 + 20 * index);
  188. context.lineTo(200, 20 + 20 * index);
  189. context.stroke();
  190. });
  191. };
  192. canvas.setLineDash = function (context) {
  193. context.setLineDash([10, 20], 5);
  194. context.beginPath();
  195. context.moveTo(0, 100);
  196. context.lineTo(400, 100);
  197. context.stroke();
  198. };
  199. canvas.setLineJoin = function (context) {
  200. context.beginPath();
  201. context.moveTo(10, 10);
  202. context.lineTo(90, 50);
  203. context.lineTo(10, 90);
  204. context.stroke();
  205. ['bevel', 'round', 'miter'].forEach(function (item, index) {
  206. context.beginPath();
  207. context.setLineJoin(item);
  208. context.setLineWidth(10);
  209. context.moveTo(30 + 80 * index, 10);
  210. context.lineTo(120 + 80 * index, 50);
  211. context.lineTo(30 + 80 * index, 90);
  212. context.stroke();
  213. });
  214. };
  215. canvas.setLineWidth = function (context) {
  216. [1, 5, 10, 15].forEach(function (item, index) {
  217. context.beginPath();
  218. context.setLineWidth(item);
  219. context.moveTo(20 + 10 * index, 20 + 20 * index);
  220. context.lineTo(100, 20 + 20 * index);
  221. context.stroke();
  222. });
  223. };
  224. canvas.setMiterLimit = function (context) {
  225. [1, 2, 3, 4].forEach(function (item, index) {
  226. context.beginPath();
  227. context.setMiterLimit(item);
  228. context.setLineWidth(10);
  229. context.setLineJoin('miter');
  230. context.moveTo(50 + 40 * index, 10);
  231. context.lineTo(140 + 40 * index, 50);
  232. context.lineTo(50 + 40 * index, 90);
  233. context.stroke();
  234. });
  235. };
  236. canvas.setShadow = function (context) {
  237. context.beginPath();
  238. context.setFillStyle('blue');
  239. context.setShadow(15, 15, 15, 'red');
  240. context.rect(30, 30, 150, 75);
  241. context.fill();
  242. };
  243. canvas.setStrokeStyle = function (context) {
  244. context.setStrokeStyle('blue');
  245. context.strokeRect(30, 30, 150, 75);
  246. };
  247. canvas.setTextAlign = function (context) {
  248. context.setStrokeStyle('red');
  249. context.moveTo(150, 20);
  250. context.lineTo(150, 170);
  251. context.stroke();
  252. context.setFontSize(15);
  253. context.setTextAlign('left');
  254. context.fillText('textAlign=left', 150, 60);
  255. context.setTextAlign('center');
  256. context.fillText('textAlign=center', 150, 80);
  257. context.setTextAlign('right');
  258. context.fillText('textAlign=right', 150, 100);
  259. };
  260. canvas.setTextBaseline = function (context) {
  261. context.setStrokeStyle('red');
  262. context.moveTo(5, 75);
  263. context.lineTo(295, 75);
  264. context.stroke();
  265. context.setFontSize(20);
  266. context.setTextBaseline('top');
  267. context.fillText('top', 5, 75);
  268. context.setTextBaseline('middle');
  269. context.fillText('middle', 50, 75);
  270. context.setTextBaseline('bottom');
  271. context.fillText('bottom', 120, 75);
  272. context.setTextBaseline('normal');
  273. context.fillText('normal', 200, 75);
  274. };
  275. canvas.setTransform = function (context) {
  276. context.setFillStyle('blue');
  277. context.fillRect(30, 30, 150, 75);
  278. context.setTransform(1, 0.5, -0.5, 1, 30, 10);
  279. context.setFillStyle('red');
  280. context.fillRect(30, 30, 150, 75);
  281. context.setTransform(1, 0.5, -0.5, 1, 30, 10);
  282. };
  283. canvas.stroke = function (context) {
  284. context.beginPath();
  285. context.moveTo(100, 100);
  286. context.lineTo(10, 100);
  287. context.lineTo(10, 10);
  288. context.stroke();
  289. };
  290. canvas.strokeRect = function (context) {
  291. context.setStrokeStyle('blue');
  292. context.strokeRect(30, 30, 150, 75);
  293. };
  294. canvas.translate = function (context) {
  295. context.strokeRect(10, 10, 150, 100);
  296. context.translate(20, 20);
  297. context.strokeRect(10, 10, 150, 100);
  298. context.translate(20, 20);
  299. context.strokeRect(10, 10, 150, 100);
  300. };
  301. canvas.addColorStop = function (context) {
  302. const grd = context.createLinearGradient(30, 10, 120, 10);
  303. grd.addColorStop(0, 'red');
  304. grd.addColorStop(0.16, 'orange');
  305. grd.addColorStop(0.33, 'yellow');
  306. grd.addColorStop(0.5, 'green');
  307. grd.addColorStop(0.66, 'cyan');
  308. grd.addColorStop(0.83, 'blue');
  309. grd.addColorStop(1, 'purple');
  310. context.setFillStyle(grd);
  311. context.fillRect(30, 30, 150, 80);
  312. };
  313. canvas.reset = function (context) {
  314. context.beginPath();
  315. context.setFillStyle('#000000');
  316. context.setStrokeStyle('#000000');
  317. context.setFontSize(10);
  318. context.setShadow(0, 0, 0, 'rgba(0, 0, 0, 0)');
  319. context.setLineCap('butt');
  320. context.setLineJoin('miter');
  321. context.setLineWidth(1);
  322. context.setMiterLimit(10);
  323. };
  324. module.exports = canvas;