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

> ВНИМАНИЕ!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> "протягивание" линии от выбранной точки
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

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

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


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

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


Бывалый
***

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

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


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

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

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

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

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


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

 





- Текстовая версия 9.05.2024 4:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name