Текущий архив: 2008.12.28;
Скачать: CL | DM;
Вниз
Схему рабочего механизма Найти похожие ветки
← →
DOjD (2008-11-15 20:20) [0]Ребята, в общем надо мне сделать схему рабочего механизма (из рисунка), и на неё нанести точечки или флажки, что бы при наведении на точку всплывал hint, а при щелчке на флажок появлялась доп картинка с более детальным изображением части рабочего механизма.
Дайте инфу, что как сделать, ссылочки, советы на каких компонентах проще реализовать... спасибо!
← →
Johnmen © (2008-11-15 20:22) [1]Ничего не выйдет. Забей.
← →
DOjD (2008-11-15 20:31) [2]
> Ничего не выйдет. Забей.
Спасибо... учту, но загрузить картинку в TIMAGE думаю можно, осталось прорисовать на TIMAGE флажки и при он Click вывести форму с более подробным рисунком... (теоретически)
Вопрос в том как добавить на TIMAGE новые картинки в заданные координаты?
← →
Johnmen © (2008-11-15 20:38) [3]Хм... Вопрос уже другой?
Всё равно забей. Глупости это...
← →
DOjD (2008-11-15 20:40) [4]
> Всё равно забей. Глупости это...
Спасибо, задумаюсь над этим, когда закончу этот проект! ))
← →
KilkennyCat © (2008-11-16 00:52) [5]HotImage tmssoftware
← →
Германн © (2008-11-16 00:55) [6]
> Вопрос в том как добавить на TIMAGE новые картинки в заданные
> координаты?
Добавляй не "на TIMAGE", а "поверх TIMAGE".
← →
DOjD (2008-11-16 08:36) [7]
> Добавляй не "на TIMAGE", а "поверх TIMAGE".
Спасибо сделал, но вопрос в том как при изменении размера Image1, сделать так, что бы Image2 оставался примерно в том же месте Image1?
← →
AIK © (2008-11-16 10:34) [8]
> но вопрос в том как при изменении размера Image1, сделать
> так, что бы Image2 оставался примерно в том же месте Image1?
>
До изменения размера Image1 или после?
если после то при изменении размера Image1 присвоить его кординаты (Left, Top) Imag"у 2, ну а если до то сперва присвоить а потом изменения размера Image1.
Или кажется я вообще тебя не понял :(
← →
@!!ex © (2008-11-16 11:37) [9]Какие ждесткие вопросы поджнимают на ДМ. :)
← →
@!!ex © (2008-11-16 12:02) [10]http://www.mediafire.com/?bp3zducg1li
Задача просто сверхсложная...
← →
DOjD (2008-11-16 21:45) [11]
> Задача просто сверхсложная...
Спасибо уважаемый @!!ex за то что накидали примерчик, дело не в этом....
Объясню суть проблемы подробнее...
Есть Form1, на ней Image1. Image1 имеет свойства AutoSize:=True; Center:=:=True; Align:=alClient; и самое главное Proportional:=True; (важно иначе если рисунок больше формы он не влазиет на нее... виден только его кусок....)
При загрузке рисунка в Image1, рисунок выравнивается пропорционально размерам и при его не пропорциональности по отношению формы (например ширина рисунка меньше ширины формы а высота больше) по бокам остается пустое место...сам рисунок центрируется по центру, но главное помещается полностью!
Делаю так:
> если после то при изменении размера Image1 присвоить его
> кординаты (Left, Top) Imag"у 2, ну а если до то сперва присвоить
> а потом изменения размера Image1.
procedure TForm1.FormResize(Sender: TObject);
begin
Image2.Left:=Round((Image2.Left*Form1.Width)/WOld);
Image2.Top:=Round((Image2.Top*Form1.Height)/HOld);
WOld:=Form1.Width;
HOld:=Form1.Height;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
WOld:=Form1.Width;
HOld:=Form1.Height;
end;
но при изменении ширины формы рисунок из-за свойства Proportional:=True; не изменяется (в силу того что высота рисунка больше высоты формы а ширина рисунка больше ширины формы), а Image то тянется в ширину в месте с формой... вот и получаю что сам рисунок закруженный в Image1 не изменяется а Image2 при этом изменяет свое положение из-за увеличения Image1.... тоесть расширили форму по ширине рисунок загруженный в Image1 остался неизменным в размере а Image2 сместился....... а нужно что бы был привязан к реальному размеру не Image а рисунка загруженного в Image!
Надеюсь довел суть! ))
← →
KSergey © (2008-11-17 10:59) [12]А координаты точек привязки относительно первоначального рисунка хотя бы известны?
Ну и просто пересчитывать исходные координаты привязки к отмасштабированным (только не спрашивайте как, это неприличный вопрос для окончившего хотя бы 5..6 классов церковно-приходской).
И я бы лучше ручками масштабировал картинку, чтобы быть уверенным в результате. Хотя, если поведение достаточно предсказуемо у точность +-пиксель не критична - то пусть само масштабируется.
← →
MsGuns © (2008-11-17 11:06) [13]С одним разъединственным имеджем ничего не выйдет. Это все равно, что наносить "точечные" удары по объектам атомными взрывами. Следует вместо одной картинки использовать сложные конструкции графических объектов и связей между ними (опять же графических).
Задача для начинающего сверхсложная и попросту нереализуемая - правильно johnmen сказал.
Есть целые специальные программы для подобных задач (типа автокадов), надо брать либо их, либо искать соответствующие компоненты.
← →
DOjD (2008-11-17 21:35) [14]
> MsGuns ©
Что ж благодарю за мнение уважаемые!
Делаю как можно проще!
← →
Германн © (2008-11-17 21:40) [15]
> MsGuns © (17.11.08 11:06) [13]
>
> С одним разъединственным имеджем ничего не выйдет. Это все
> равно, что наносить "точечные" удары по объектам атомными
> взрывами. Следует вместо одной картинки использовать сложные
> конструкции графических объектов и связей между ними (опять
> же графических).
Ты неисправим. Опять парадокс?
:)
← →
MsGuns © (2008-11-17 21:57) [16]>Германн © (17.11.08 21:40) [15]
"Мимо ганзовских ремарок
Я без реплик не хожу
То лайно всучу в подарок
То шутиху покажу"
почти (с)
;)
← →
DOjD (2008-11-18 02:45) [17]Можно как нибудь узнать момент когда Image1 полностью прорисовался? (Например после изменения размера формы)
← →
Германн © (2008-11-18 03:54) [18]
> DOjD (18.11.08 02:45) [17]
>
> Можно как нибудь узнать момент когда Image1 полностью прорисовался?
> (Например после изменения размера формы)
>
Э. Хм. А зачем?
← →
DOjD (2008-11-18 10:23) [19]Для того, что бы пробежать по пикселям формы и выяснить границы (левая,правая,верхняя,нижняя) рисунка на форме..
← →
{RASkov} © (2008-11-18 10:32) [20]> [19] DOjD (18.11.08 10:23)
Глупость какая-то....
Но можешь "бежать по пикселам" в конце метода рисования "рисунка на форме"...
← →
{RASkov} © (2008-11-18 11:39) [21]> [17] DOjD (18.11.08 02:45)
> Можно как нибудь узнать момент когда Image1 полностью прорисовался?
Перекрыть метод Paint;
> что бы пробежать по пикселям
только при
> после изменения размера
или при любой перерисовке картинки? т.е. каждый раз бегать в припрыжку по пикселам я думаю не обязательно...
Тогда нужно переписать TImage добавив в него флаг и перекрыть SetBounds, где возводить флаг, и Paint где проверять флаг и сбрасывать его если установлен, но при этом пощекотать пикселы....
← →
MsGuns © (2008-11-18 12:24) [22]>Тогда нужно переписать TImage добавив в него флаг и перекрыть SetBounds, где возводить флаг, и Paint где проверять флаг и сбрасывать его если установлен, но при этом пощекотать пикселы....
И ты представляешь себе, как это будет выглядеть ?
:)
← →
{RASkov} © (2008-11-18 12:29) [23]> [22] MsGuns © (18.11.08 12:24)
Хм....
Вот так примерно:
TMyImage = class (TImage)
private
FSizing: Boolean;
protected
procedure Paint; override;
public
procedure SetBounds(ALeft: Integer; ATop: Integer; AWidth: Integer; AHeight: Integer); override;
end;
...........
procedure TMyImage.Paint;
begin
inherited;
if FSizing then try
//Тут бежим сломя голову по пикселам....
finally
FSizing:=False;
end;
end;
procedure TMyImage.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
FSizing:=True;
inherited;
end;
:) Или не то?)
← →
Справочнег (2008-11-19 10:47) [24]Попробуй это http://delphikingdom.ru/asp/viewitem.asp?catalogid=1386
Страницы: 1 вся ветка
Текущий архив: 2008.12.28;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.014 c