democanvas2d.pas 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. program democanvas2d;
  2. uses BrowserApi.Web, System.Classes, JSApi.JS, System.SysUtils;
  3. Type
  4. TForm = Class
  5. Canvas2D : TJSCanvasRenderingContext2D;
  6. Ex : TJSHTMLInputElement;
  7. Ey : TJSHTMLInputElement;
  8. EHeight : TJSHTMLInputElement;
  9. EWidth : TJSHTMLInputElement;
  10. ELineWidth : TJSHTMLInputElement;
  11. function ButtonClick(Event{%H-}: TJSMouseEvent): boolean;
  12. Constructor Create; reintroduce;
  13. end;
  14. function TForm.ButtonClick(Event: TJSMouseEvent): boolean;
  15. Var
  16. X,Y,W,H : Double;
  17. begin
  18. writeln('Drawing rectangle');
  19. X:=StrToFloat(EX.value);
  20. Y:=StrToFloat(Ey.value);
  21. W:=StrToFloat(EWidth.value);
  22. H:=StrToFloat(EHeight.value);
  23. Canvas2D.lineWidth:=ParseFloat(ELineWidth.value);
  24. Canvas2D.rect(X,Y, W,H);
  25. Canvas2D.stroke;
  26. Result:=true;
  27. end;
  28. constructor TForm.Create;
  29. Function CreateNumberEdit (aName : String) : TJSHTMLInputElement;
  30. begin
  31. Result:=TJSHTMLInputElement(document.createElement('input'));
  32. Result['type']:='text';
  33. Result.value:='100';
  34. Result.name:=aName;
  35. Result['style']:='width: 80px;';
  36. end;
  37. Var
  38. Panel,PanelContent : TJSElement;
  39. Button1:TJSElement;
  40. Canvas : TJSHTMLCanvasElement;
  41. begin
  42. Panel:=document.createElement('div');
  43. // attrs are default array property...
  44. Panel['class']:='panel panel-default';
  45. PanelContent:=document.createElement('div');
  46. PanelContent['class']:='panel-body';
  47. Button1:=document.createElement('input');
  48. Button1['id']:='Button1';
  49. Button1['type']:='submit';
  50. Button1['class']:='btn btn-default';
  51. Button1['value']:='Draw rectangle';
  52. TJSHTMLElement(Button1).onclick:=@ButtonClick;
  53. EHeight:=CreateNumberEdit('Height');
  54. EWidth:=CreateNumberEdit('Width');
  55. ELineWidth:=CreateNumberEdit('LineWidth');
  56. ELineWidth['type']:='text';
  57. ELineWidth.Value:='0.5';
  58. EX:=CreateNumberEdit('X');
  59. EY:=CreateNumberEdit('Y');
  60. document.body.appendChild(Panel);
  61. Panel.appendChild(PanelContent);
  62. PanelContent.appendChild(Button1);
  63. PanelContent.appendChild(document.createTextNode('X'));
  64. PanelContent.appendChild(EX);
  65. PanelContent.appendChild(document.createTextNode('Y'));
  66. PanelContent.appendChild(EY);
  67. PanelContent.appendChild(document.createTextNode('Width'));
  68. PanelContent.appendChild(EWidth);
  69. PanelContent.appendChild(document.createTextNode('Height'));
  70. PanelContent.appendChild(EHeight);
  71. PanelContent.appendChild(document.createTextNode('LineWidth'));
  72. PanelContent.appendChild(ELineWidth);
  73. Panel.appendChild(PanelContent);
  74. Canvas:=TJSHTMLCanvasElement(document.createElement('canvas'));
  75. Canvas.width:=640;
  76. Canvas.height:=480;
  77. PanelContent.appendChild(canvas);
  78. Canvas2D:=Canvas.getContextAs2DContext('2d');
  79. end;
  80. begin
  81. TForm.Create;
  82. end.