Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 10.12.2009
Сообщений: 7

Рисовалка

17.12.2012, 11:56. Показов 4205. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, мне нужно написать простенькую рисовалку на htm5+js. Я сделал тут, но пр нажатии срабатывают все функции сразу, пробовал через switch, if, результат - ноль. Помогите разобраться пожалуйста.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<script> 
 
  window.onload = function() {
    canvas = document.getElementById('canvas');
    ctx = canvas.getContext('2d');
    canvas.height = canvas.height;
    canvas.width = canvas.width; 
  }
 
//function f(a){
//switch(a){
  //case 1: 
  function f1(){   
  canvas.addEventListener('mousedown', function(e) {
    this.down = true;
    this.X = Math.abs(e.clientX-200);
    this.Y = Math.abs(e.clientY-50);
    this.X1 = e.clientX;
    this.Y1 = e.clientY;
    this.color = "red";    
  });
  
  canvas.addEventListener('mouseup', function(e) {
    this.down = false;
    ctx.beginPath();
      var x = e.clientX;
      var y = e.clientY;
      var r = x - this.X1;
      var r1 = y - this.Y1;
      
      ctx.strokeRect(this.X, this.Y,r, r1);
      ctx.strokeStyle = this.color;
      ctx.stroke();
    
  });  }
 
 //case 2:
 function f2(){    
 canvas.addEventListener('mousedown', function(e) {
    this.down = true;
    this.X = Math.abs(e.clientX-200);
    this.Y = e.clientY;;
  this.X1 = e.clientX;
    this.Y1 = e.clientY;
    this.color = "#000000";
 
  });
 
  canvas.addEventListener('mouseup', function(e) {
    this.down = false;
    ctx.beginPath();
      var x = e.clientX;
      var y = e.clientY;
      var r = Math.abs(x - this.X1); 
      ctx.arc(this.X,this.Y,r,0*Math.PI,2*Math.PI);
ctx.stroke();
  }); }
 
   function f3(){
      //if (this.X == this.X1){ctx.arc(this.X,this.Y,r1,0*Math.PI,2*Math.PI)};       
     //ctx.clearRect(0, 0, canvas.width, canvas.height);   
 
   canvas.addEventListener('mousedown', function(e) {
    this.down3 = true;
    is.X1 = Math.abs(e.clientX-200);  
    this.color = "#000000";
  });
 
  canvas.addEventListener('mouseup', function() {
    this.down3 = false;
  });
 
  canvas.addEventListener('mousemove', function(e) {
    if(this.down3) {
      ctx.beginPath();
      ctx.moveTo(this.X1, this.Y1);
      var x = e.clientX-200;
      var y = e.clientY-50;  
      ctx.lineTo(x,y);
      ctx.stroke();
 
      this.X1 = x;
      this.Y1 = y;
        }
  });  
  }   
 
  //}    }
  </script>
</head>
<body>
  <div>
    <header>
    <form name="form1">
<INPUT id="b" name="b" TYPE="button" VALUE="Прямоугольник" onclick="f1()">
<INPUT id="b1" name="b1" TYPE="button" VALUE="Круг" onclick="f2()"><br><br>
<INPUT id="b2" name="b2" TYPE="button" VALUE="Кривая" onclick="f3()"><br><br>
 
</form>
    </header>
    <canvas id="canvas"  width="500" height="500">
    </canvas>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.12.2012, 11:56
Ответы с готовыми решениями:

Рисовалка Canvas
Есть готовая рисовалка, нужно к ней зафигачить 2 кнопки: (1 выбор цвета 3-4 шт, 2я- выбор размера большой, мал, средний) Заранее...

Рисовалка в 3Д
Всем Привет):) Кто подскажет прогу, для рисования в 3Д, простую для рисования фигур возможно наxодящиxся одна в одной с последующей...

Рисовалка
// MyPaint.cpp: определяет точку входа для приложения. // #include &quot;stdafx.h&quot; #include &quot;MyPaint.h&quot; #define MAX_LOADSTRING 100...

2
 Аватар для JsLoveR
425 / 167 / 48
Регистрация: 05.12.2012
Сообщений: 855
17.12.2012, 12:55
slavka, addEventListener добавляет новый обработчик к старым, получается на одно событие несколько обработчиков f1() f2() f3().
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  window.onload = function() {
    canvas = document.getElementById('canvas');
    ctx = canvas.getContext('2d');
    canvas.height = canvas.height;
    canvas.width = canvas.width; 
  }
 
  function f1(){   
  canvas.onmousedown = function(e) {
    this.down = true;
    this.X = Math.abs(e.clientX-200);
    this.Y = Math.abs(e.clientY-50);
    this.X1 = e.clientX;
    this.Y1 = e.clientY;
    this.color = "red";    
  };
  
  canvas.onmouseup = function(e) {
    this.down = false;
    ctx.beginPath();
    var x = e.clientX;
    var y = e.clientY;
    var r = x - this.X1;
    var r1 = y - this.Y1;
     
    ctx.strokeRect(this.X, this.Y,r, r1);
    ctx.strokeStyle = this.color;
    ctx.stroke();
    
    };
  }
 
 function f2(){    
 canvas.onmousedown = function(e) {
    this.down = true;
    this.X = Math.abs(e.clientX-200);
    this.Y = e.clientY;;
    this.X1 = e.clientX;
    this.Y1 = e.clientY;
    this.color = "#000000";
 
  };
 
  canvas.onmouseup = function(e) {
    this.down = false;
    ctx.beginPath();
    var x = e.clientX;
    var y = e.clientY;
    var r = Math.abs(x - this.X1); 
    ctx.arc(this.X,this.Y,r,0*Math.PI,2*Math.PI);
    ctx.stroke();
    };
  }
 
  function f3(){
    canvas.onmousedown = function(e) {
    this.down3 = true;
    this.X1 = Math.abs(e.clientX-200);  
    this.color = "#000000";
  };
 
  canvas.onmouseup = function() {
    this.down3 = false;
  };
 
  canvas.onmousemove = function(e) {
    if(this.down3) {
      ctx.beginPath();
      ctx.moveTo(this.X1, this.Y1);
      var x = e.clientX-200;
      var y = e.clientY-50;  
      ctx.lineTo(x,y);
      ctx.stroke();
 
      this.X1 = x;
      this.Y1 = y;
    }
  } 
 }
HTML5
1
2
3
4
5
6
7
8
9
    <form name="form1">
<INPUT id="b" name="b" TYPE="button" VALUE="Прямоугольник" onclick="f1()">
<INPUT id="b1" name="b1" TYPE="button" VALUE="Круг" onclick="f2()"><br><br>
<INPUT id="b2" name="b2" TYPE="button" VALUE="Кривая" onclick="f3()"><br><br>
 
</form>
    </header>
    <canvas id="canvas"  width="800" height="800">
    </canvas>
1
0 / 0 / 0
Регистрация: 10.12.2009
Сообщений: 7
17.12.2012, 13:18  [ТС]
Спасибо огромное-преогромное!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2012, 13:18
Помогаю со студенческими работами здесь

Рисовалка
AlphaSkin.

Рисовалка
Всем привет,помогите пожалуйста,за ранее спасибо :senor:.Вот суть проблемы: Пишу апплет-рисовалку,все бы хорошо, но возникла одна...

Рисовалка в вб
Всем привет народ! Задали мне сделать рисовалку в vb, вот такую: Создать простой графический редактор Постановка задачи: Создать...

Рисовалка
Проблема в следующем: есть рисовалка, в которой открывается файл, затем нечто рисуется и потом всё это сохраняется, проблема в том, что...

Рисовалка линии
Нужно, чтобы линия рисовалась вслед за курсором, один конец линии устанавливается в точке (100,100). Цвет линии синий, толщина - 3 пикселя....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru