logo
  • Yazılar
  • Yorumlar
  • Popüler
  • RSS
Son Yazılar
  • Türkçe upper, lower ve ucwords fonksiyonları (utf-8) ...
  • Linux’un 17. Yılı ...
  • Firefox için CSS Transform’ları ...
Son yorumlar
  • prefabrik - Linux'un 17. Yılı
  • prefabrik - Sitenize proxy ile bağlananları t…
  • Fuat - Döviz kuru optimizasyonu
Popüler Yazılar
  • Başka siteden istediğiniz datayı alın (39)
  • Video: Smarty’e Giriş (19)
  • Otomatik Subdomain Yaratma (14)
RSS Beslemeleri
  • RSS
  • Yorumlar RSS
  • Geçerli XHTML

HTML5 Canvas ile resim yaratma

icon1 Posted by Altan Tanrıverdi in Web 2.0 on 07 3rd, 2007 |

Aşağıdaki kod ile HTML5 ile canvas çizimi örneğini görebilirsiniz:

PLAIN TEXT
HTML:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta>
  5. </head>
  6. <script>
  7. function deg2rad(degrees) {
  8. return Math.PI *degrees/180;
  9. }
  10. function drawString(ctx, txt, col, fh, tx, ty) {
  11. var fw = fh*0.666666; var lw = fh*0.125;
  12. var ls = lw/2; var xp = 0; var cr = lw;
  13. ctx.lineCap = "round"; ctx.lineJoin = "round"
  14. ctx.lineWidth = lw; ctx.strokeStyle = col;
  15. for (var i = 0; i <txt.length; i++) {
  16. drawSymbol(ctx, txt[i], ls, tx+xp, ty, fw, fh);
  17. xp += (txt[i]!="."?fw+cr:(fw/2)+cr);
  18. }
  19. }
  20. function drawSymbol(ctx, symbol, fc, cx, cy, cw, ch) {
  21. ctx.beginPath();
  22. switch (symbol) {
  23. case "0":
  24. ctx.moveTo(cx+fc,cy+(ch*0.333333));
  25. ctx.arc(cx+(cw/2),cy+(cw/2),(cw/2)-fc,deg2rad(180),0, false);
  26. ctx.arc(cx+(cw/2),(cy+ch)-(cw/2),(cw/2)-fc,0,deg2rad(180), false);
  27. ctx.closePath();
  28. break;
  29. case "1":
  30. ctx.moveTo(cx+(cw*0.1)+fc,cy+ch-fc);
  31. ctx.lineTo(cx+cw-fc,cy+ch-fc);
  32. ctx.moveTo(cx+(cw*0.666666),cy+ch-fc);
  33. ctx.lineTo(cx+(cw*0.666666),cy+fc);
  34. ctx.lineTo(cx+(cw*0.25),cy+(ch*0.25));
  35. break;
  36. case "2":
  37. ctx.moveTo(cx+cw-fc,cy+(ch*0.8));
  38. ctx.lineTo(cx+cw-fc,cy+ch-fc);
  39. ctx.lineTo(cx+fc,cy+ch-fc);
  40. ctx.arc(cx+(cw/2),cy+(cw*0.425),(cw*0.425)-fc,deg2rad(45),deg2rad(-180), true);
  41. break;
  42. case "3":
  43. ctx.moveTo(cx+(cw*0.1)+fc,cy+fc);
  44. ctx.lineTo(cx+(cw*0.9)-fc,cy+fc);
  45. ctx.arc(cx+(cw/2),cy+ch-(cw*0.5),(cw*0.5)-fc,deg2rad(-90),deg2rad(180), false);
  46. break;
  47. case "4":
  48. ctx.moveTo(cx+(cw*0.75),cy+ch-fc);
  49. ctx.lineTo(cx+(cw*0.75),cy+fc);
  50. ctx.moveTo(cx+cw-fc,cy+(ch*0.666666));
  51. ctx.lineTo(cx+fc,cy+(ch*0.666666));
  52. ctx.lineTo(cx+(cw*0.75),cy+fc);
  53. ctx.moveTo(cx+cw-fc,cy+ch-fc);
  54. ctx.lineTo(cx+(cw*0.5),cy+ch-fc);
  55. break;
  56. case "5":
  57. ctx.moveTo(cx+(cw*0.9)-fc,cy+fc);
  58. ctx.lineTo(cx+(cw*0.1)+fc,cy+fc);
  59. ctx.lineTo(cx+(cw*0.1)+fc,cy+(ch*0.333333));
  60. ctx.arc(cx+(cw/2),cy+ch-(cw*0.5),(cw*0.5)-fc,deg2rad(-80),deg2rad(180), false);
  61. break;
  62. case "6":
  63. ctx.moveTo(cx+fc,cy+ch-(cw*0.5)-fc);
  64. ctx.arc(cx+(cw/2),cy+ch-(cw*0.5),(cw*0.5)-fc,deg2rad(-180),deg2rad(180), false);
  65. ctx.bezierCurveTo(cx+fc,cy+fc,cx+fc,cy+fc,cx+(cw*0.9)-fc,cy+fc);
  66. ctx.moveTo(cx+(cw*0.9)-fc,cy+fc);
  67. break;
  68. case "7":
  69. ctx.moveTo(cx+(cw*0.5),cy+ch-fc);
  70. ctx.lineTo(cx+cw-fc,cy+fc);
  71. ctx.lineTo(cx+(cw*0.1)+fc,cy+fc);
  72. ctx.lineTo(cx+(cw*0.1)+fc,cy+(ch*0.25)-fc);
  73. break;
  74. case "8":
  75. ctx.moveTo(cx+(cw*0.92)-fc,cy+(cw*0.59));
  76. ctx.arc(cx+(cw/2),cy+(cw*0.45),(cw*0.45)-fc,deg2rad(25),deg2rad(-205), true);
  77. ctx.arc(cx+(cw/2),cy+ch-(cw*0.5),(cw*0.5)-fc,deg2rad(-135),deg2rad(-45), true);
  78. ctx.closePath();
  79. ctx.moveTo(cx+(cw*0.79),cy+(ch*0.47));
  80. ctx.lineTo(cx+(cw*0.21),cy+(ch*0.47));
  81. break;
  82. case "9":
  83. ctx.moveTo(cx+cw-fc,cy+(cw*0.5));
  84. ctx.arc(cx+(cw/2),cy+(cw*0.5),(cw*0.5)-fc,deg2rad(0),deg2rad(360), false);
  85. ctx.bezierCurveTo(cx+cw-fc,cy+ch-fc,cx+cw-fc,cy+ch-fc,cx+(cw*0.1)+fc,cy+ch-fc);
  86. break;
  87. case "%":
  88. ctx.moveTo(cx+fc,cy+(ch*0.75));
  89. ctx.lineTo(cx+cw-fc,cy+(ch*0.25));
  90. ctx.moveTo(cx+(cw*0.505),cy+(cw*0.3));
  91. ctx.arc(cx+(cw*0.3),cy+(cw*0.3),(cw*0.3)-fc,deg2rad(0),deg2rad(360), false);
  92. ctx.moveTo(cx+(cw*0.905),cy+ch-(cw*0.3));
  93. ctx.arc(cx+(cw*0.7),cy+ch-(cw*0.3),(cw*0.3)-fc,deg2rad(0),deg2rad(360), false);
  94. break;
  95. case ".":
  96. ctx.moveTo(cx+(cw*0.25),cy+ch-fc-fc);
  97. ctx.arc(cx+(cw*0.25),cy+ch-fc-fc,fc,deg2rad(0),deg2rad(360), false);
  98. ctx.closePath();
  99. break;
  100. default:
  101. break;
  102. }
  103. ctx.stroke();
  104. }
  105. function setDataURL(cid) {
  106. if(cid.toDataURL) {
  107. var obj = document.getElementById(cid.id+"_link");
  108. if(obj) {
  109. obj.setAttribute("title", "resmi ac");
  110. obj.setAttribute("target", "_blank");
  111. obj.setAttribute("href", cid.toDataURL());
  112. }
  113. }
  114. }
  115. window.onload = function() {
  116. var canvas = document.getElementById("text");
  117. var ctx = canvas.getContext("2d");
  118. ctx.fillStyle = "#E2EDFF";
  119. ctx.fillRect(0, 0, 480, 190);
  120. //drawString(context, "text", font-color, font-height, x-pos, y-pos)
  121. drawString(ctx, "0123456789%.", "#000", 48, 0, 0);
  122. drawString(ctx, "0123456789%.", "#000", 32, 0, 53);
  123. drawString(ctx, "0123456789%.", "#000", 16, 0, 90);
  124. drawString(ctx, "0123456789%.", "#000", 14, 0, 110);
  125. drawString(ctx, "0123456789%.", "#000", 12, 0, 127);
  126. drawString(ctx, "0123456789%.", "#000", 10, 0, 141);
  127. drawString(ctx, "0123456789%.", "#000", 9, 0, 153);
  128. drawString(ctx, "0123456789%.", "#000", 8, 0, 164);
  129. drawString(ctx, "0123456789%.", "#000", 7, 0, 173);
  130. drawString(ctx, "0123456789%.", "#000", 6, 0, 181);
  131. setDataURL(canvas);
  132. }
  133. </script>
  134. <body bgcolor="#E2EDFF">
  135. <div id="ornek">
  136. <a id="text_link"><canvas id="text" width="480" height="190"></canvas></a>
  137. </div>
  138. </body>
  139. </html>

2 Yorum

  1. avatar GncTurkler.COM » Blog Archive » HTML5 duyuruldu !:
    Ocak 27th, 2008 | 01:37

    [...] Canvas ile resim yaratma; http://javam.org/html5-canvas-ile-resim-yaratma/ Posted in Array | Leave a [...]

  2. avatar foRumCuQ » HTML5 duyuruldu !:
    Ocak 27th, 2008 | 01:41

    [...] HTML5 Canvas ile resim yaratma; http://javam.org/html5-canvas-ile-resim-yaratma/ [...]

Yorumla

Uyarı: Yorum onaya tabidir ve bu nede ile eklenmesi zaman alabilir. Tekrar göndermenize gerek yoktur.

Yazarlar

  • Altan Tanrıverdi
  • Paul Bakaus
  • Erhan Burhan
  • Tümay Çeber

Kategoriler

  • jQuery
  • Php
  • Linux
  • Json
  • Zend
  • Web 2.0
  • Kılavuzlar
  • Tanıtımlar
  • Konu Dışı

Dost Siteler

  • jQuery
  • jQuery Türkiye
  • jQuery UI
  • Ohloh
  • PHP
  • Zend
  • Zend Framework
  • Zend Türkiye
CopyLeft javam. GNU GPL. | Wordpress | Wordpress Türkiye | Lisanslı Tema: Elegant WPT | Sponsor: Türkiye Vitrin