IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> "протягивание" линии от выбранной точки
blackhard
сообщение 21.04.2008 15:31
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


Задача такова: Написать программу построения чертежей планиметрии "протягиванием" от выбранной точки с изображением ее промежуточного положения с возможностью обозначения точек и проведения стандартных линий в треугольнике.
Как это сделать я впринципе знаю но есть 1 проблема это работа с указателем мыши.Для начала я попытался сделать так чтобы при нажатии на изображение рисовалась линия из текущего положения курсора в положение указателя мыши
procedure TForm1.Image1Click(Sender: TObject);
var
Mo: TMouse;
MX, MY: integer;
begin
MX := Mo.CursorPos.X;
MY := Mo.CursorPos.Y;
image1.canvas.LineTo(mx,my);
end;
получается чето не то линия проводится явно не к указателю мыши.Может это связано с масштабом Image1 (833x533)?подскажите.И еще какие свойства в Tmouse отвечают за нажатые кнопки мыши?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
andriano
сообщение 24.04.2008 7:22
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Ты по-русски напиши, чего хочешь добиться, что для этого делаешь, что получаешь и чем то, что получаешь, отличается от того, что хочешь.
Вполне вероятно этого уже окажется достаточным для того, чтобы найти ошибку.

Из того, что я вижу в коде: у тебя ВСЕГДА рисуется белым (подозреваю, так ты стираешь), но НЕ ВСЕГДА - черным. При таком способе рисования, естественно, белых линий и будет рисоваться больше, чем черных.
Могу повторить свой совет: ввести дополнительную переменную состояния и сделать конечный автомат.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
blackhard
сообщение 24.04.2008 8:58
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


Цитата(andriano @ 24.04.2008 8:22) *

Ты по-русски напиши, чего хочешь добиться, что для этого делаешь, что получаешь и чем то, что получаешь, отличается от того, что хочешь.
Вполне вероятно этого уже окажется достаточным для того, чтобы найти ошибку.

Из того, что я вижу в коде: у тебя ВСЕГДА рисуется белым (подозреваю, так ты стираешь), но НЕ ВСЕГДА - черным. При таком способе рисования, естественно, белых линий и будет рисоваться больше, чем черных.
Могу повторить свой совет: ввести дополнительную переменную состояния и сделать конечный автомат.

Если по русски то вот чего я хочу: кликаю мышуой по изображению(1 раз) фиксируется точка перемещаю мыш линия от этой точки тянется за указателем мыши кликаю опять по изображению (1раз) линия завершается но мыш не освобождается (те от точки завершения старой линии тянется новая) рисую очередную линию и кликаю по изображению (2раза) линия завершается и мыш освобождается полностью(те можно проводить новую линию не связанную с предыдущим изображением).Ну вот вобщем и все работает все токо ничего невидно ( линии закрашиваются белым).Я понимаю что нужно ввести новую переменную состояния но не понимаю где изменять условие ее истинности?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
blackhard   "протягивание" линии от выбранной точки   21.04.2008 15:31
volvo   Используй вот это событие: procedure TForm1.Image1...   21.04.2008 15:46
blackhard   блин чето не получается сделать протягивание с изо...   21.04.2008 17:14
volvo   Тебе надо отрисовывать не по OnClick, а по OnMouse...   21.04.2008 17:44
blackhard   Тебе надо отрисовывать не по OnClick, а по OnMous...   21.04.2008 19:32
blackhard   Надеюсь последний вопрос :) Как очистить изображе...   21.04.2008 20:35
volvo   Image1.Canvas.Brush.Color := clRed; // Здесь зад...   21.04.2008 20:39
blackhard   А как можно сделать чтоб при 1ом нажатии накнопку ...   22.04.2008 16:30
blackhard   И еще 1 вопрос как можно сделать чтобы новая линия...   22.04.2008 23:01
andriano   1. Ввести состояние (см.конечные автоматы) и отсле...   23.04.2008 8:09
blackhard   Рисовать ручками, проверяя, что та точка, котору...   23.04.2008 15:02
andriano   Чтото не совсем понимаю как это реализовать можно...   23.04.2008 19:26
blackhard   Рисуешь линию по точкам (например, алгоритмом Бре...   24.04.2008 0:00
andriano   Ты по-русски напиши, чего хочешь добиться, что для...   24.04.2008 7:22
blackhard   Ты по-русски напиши, чего хочешь добиться, что дл...   24.04.2008 8:58
andriano   Сэр знаком с таким знаком препинания как запятая? ...   24.04.2008 19:01
blackhard   Сэр знаком с таким знаком препинания как запятая?...   24.04.2008 19:27
blackhard   Вот процедура для рисования линии по пикселям. pro...   25.04.2008 11:28
andriano   Надо не узнавать цвет пикселя на фоне, а заливать ...   25.04.2008 16:30
blackhard   Надо не узнавать цвет пикселя на фоне, а заливать...   25.04.2008 19:18
andriano   Зачем еще раз что-то УЗНАВАТЬ, что и так ЗНАЕШЬ?   25.04.2008 20:03
blackhard   Ну вот основную часть я сделал теперь все рисуетс...   27.04.2008 22:27
andriano   Наверное, надо анализировать не потом, а сразу. Со...   28.04.2008 6:41
blackhard   Вопрос конечно не совсем по Delphi, но по задаче.М...   28.04.2008 20:31
andriano   Честно говоря, не совсем понятно, что в денном кон...   28.04.2008 21:08
blackhard   И всетаки может ктонибудь поможет вывести формулу ...   29.04.2008 23:16
andriano   Очевидно, точка, до которой идет высота, должна ле...   30.04.2008 6:13
#$# PaVeL #$#   Хотел бы посоветовать использовать TPaintBox, a HE...   2.05.2008 9:21


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 9.08.2025 19:18
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"