С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript: ReactJS
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 5
1

Как выделять фрагмент изображения мышкой?

16.11.2022, 19:16. Показов 443. Ответов 0

Author24 — интернет-сервис помощи студентам
Здравствуйте! Мне необходимо реализовать функционал: выделение объекта на изображении прямоугольником и получение координат прямоугольника на картинке. Как можно это сделать? Я пробовал сделать это с помощью canvas, с абсолютным позиционированным поверх картинки, но не очень получается. В чем ошибка? Или можно реализовать попроще?

Фрагменты кода ниже:

Компонент Canvas:
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
function Canvas() {
 
  const canvasRef = useRef(null);
  const [ctx, setCtx] = useState(null);
  const [right, setRight] = useState(0);
  const [bottom, setBottom] = useState(0);
  const [left, setLeft] = useState(-1);
  const [top, setTop] = useState(-1);
 
  function setMouseEvent(event) {
    console.log('push');
    if (ctx != null) {
      ctx.clearRect(0, 0, 1200, 1000);
    }
    setLeft(event.x);
    setTop(event.y);
    event.target.addEventListener('mousemove', getCoordinates)
  }
 
  function removeMouseEvent(event) {
    console.log('unpush');
    event.target.removeEventListener('mousemove', getCoordinates)
  }
 
  function getCoordinates(event) {
    setRight(event.x);
    setBottom(event.y);
  }
 
  useEffect(() => {
    setCtx(canvasRef.current.getContext('2d'));
    canvasRef.current.addEventListener('mousedown', setMouseEvent)
    canvasRef.current.addEventListener('mouseup', removeMouseEvent)
  }, []);
 
  useEffect(() => {
    console.log(right, bottom);
    console.log(ctx);
    if (ctx != null) {
      ctx.clearRect(0, 0, 1200, 1000)
      ctx.rect(left, top, right - left, bottom - top);
      ctx.stroke();
    }
  }, [right, bottom]);
 
  return (
    <canvas className='canvas' ref={canvasRef} width='1200' height='1000'></canvas>
  );
}
 
export default Canvas;

Компонент App:
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
function App() {
 
  const [isPopupOpen, setIsPopupOpen] = useState(false);
 
  function getSelectedData() {
    setIsPopupOpen(true);
  }
 
  function closePopUp() {
    setIsPopupOpen(false);
  }
 
  return (
    <main className='main'>
      <div className='main__container'>
        <img className='main__image' src={image} alt='Изображение с объектом'></img>
        <Canvas></Canvas>
      </div>
      <button className='button' type="button"  onClick={getSelectedData}>Добавить</button>
      <Popup isOpen={isPopupOpen} onClose={closePopUp}></Popup>
    </main>
  );
}
 
export default App;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2022, 19:16
Ответы с готовыми решениями:

Как вырезать фрагмент из изображения?
Добрый день. Мне хотелось бы реализовать в своей программе вот это...

Как вырезать фрагмент из изображения
Помогите. Как в vb вырезать фрагмент из изображения и сохранить его в отдельный файл

Как размыть небольшой фрагмент изображения
Вопрос к опытным верстальщикам: есть div в нем img далее ещё один div меньший по высоте первого с...

Как можно в сообщении при нажатии на клавишу сделать тот же самый фрагмент, как и при нажатии на кнопку мышкой?
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { ...

0
16.11.2022, 19:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2022, 19:16
Помогаю со студенческими работами здесь

Вырезать фрагмент изображения
Здравствуйте! Есть слой с фоном и произвольная фигура. Можно ли как-то вырезать часть фона по...

Выделить фрагмент изображения
Ребята подскажите!! Мне нужно на картинке в PictureBox выделить фрагмент мышкой. Как это сделать?

Перемещение изображения мышкой
Добрый день, нужно реализовать перемещение изображения по метке. Метка(Label) меньше изображения,...

Перемещение изображения мышкой
Подскажите, возможно ли переместить изображение в место клика левой кнопки мышки? Если не сложно,с...

Поворот изображения за мышкой
Как можно реализовать програмку которая будет поворачивать изображение за курсором мышки?

Перемещение изображения мышкой
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru