![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Схему рабочего механизма [D7, XP]
DOjD © (2008-11-15 20:20:00)Ребята, в общем надо мне сделать схему рабочего механизма (из рисунка), и на неё нанести точечки или флажки, что бы при наведении на точку всплывал hint, а при щелчке на флажок появлялась доп картинка с более детальным изображением части рабочего механизма.
Дайте инфу, что как сделать, ссылочки, советы на каких компонентах проще реализовать... спасибо!
Справочнег (2008-11-19 10:47:00) [1]Попробуй это http://delphikingdom.ru/asp/viewitem.asp?catalogid=1386
{RASkov} (2008-11-18 12:29:00) [2]> [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;
:) Или не то?)
MsGuns (2008-11-18 12:24:00) [3]>Тогда нужно переписать TImage добавив в него флаг и перекрыть SetBounds, где возводить флаг, и Paint где проверять флаг и сбрасывать его если установлен, но при этом пощекотать пикселы....
И ты представляешь себе, как это будет выглядеть ?
:)
{RASkov} (2008-11-18 11:39:00) [4]> [17] DOjD (18.11.08 02:45)
> Можно как нибудь узнать момент когда Image1 полностью прорисовался?
Перекрыть метод Paint;
> что бы пробежать по пикселям
только при
> после изменения размера
или при любой перерисовке картинки? т.е. каждый раз бегать в припрыжку по пикселам я думаю не обязательно...
Тогда нужно переписать TImage добавив в него флаг и перекрыть SetBounds, где возводить флаг, и Paint где проверять флаг и сбрасывать его если установлен, но при этом пощекотать пикселы....
{RASkov} (2008-11-18 10:32:00) [5]> [19] DOjD (18.11.08 10:23)
Глупость какая-то....
Но можешь "бежать по пикселам" в конце метода рисования "рисунка на форме"...
DOjD (2008-11-18 10:23:00) [6]Для того, что бы пробежать по пикселям формы и выяснить границы (левая,правая,верхняя,нижняя) рисунка на форме..
Германн (2008-11-18 03:54:00) [7]
> DOjD (18.11.08 02:45) [17]
>
> Можно как нибудь узнать момент когда Image1 полностью прорисовался?
> (Например после изменения размера формы)
>
Э. Хм. А зачем?
DOjD (2008-11-18 02:45:00) [8]Можно как нибудь узнать момент когда Image1 полностью прорисовался? (Например после изменения размера формы)
MsGuns (2008-11-17 21:57:00) [9]>Германн © (17.11.08 21:40) [15]
"Мимо ганзовских ремарок
Я без реплик не хожу
То лайно всучу в подарок
То шутиху покажу"
почти (с)
;)
Германн (2008-11-17 21:40:00) [10]
> MsGuns © (17.11.08 11:06) [13]
>
> С одним разъединственным имеджем ничего не выйдет. Это все
> равно, что наносить "точечные" удары по объектам атомными
> взрывами. Следует вместо одной картинки использовать сложные
> конструкции графических объектов и связей между ними (опять
> же графических).
Ты неисправим. Опять парадокс?
:)
DOjD (2008-11-17 21:35:00) [11]
> MsGuns ©
Что ж благодарю за мнение уважаемые!
Делаю как можно проще!
MsGuns (2008-11-17 11:06:00) [12]С одним разъединственным имеджем ничего не выйдет. Это все равно, что наносить "точечные" удары по объектам атомными взрывами. Следует вместо одной картинки использовать сложные конструкции графических объектов и связей между ними (опять же графических).
Задача для начинающего сверхсложная и попросту нереализуемая - правильно johnmen сказал.
Есть целые специальные программы для подобных задач (типа автокадов), надо брать либо их, либо искать соответствующие компоненты.
KSergey (2008-11-17 10:59:00) [13]А координаты точек привязки относительно первоначального рисунка хотя бы известны?
Ну и просто пересчитывать исходные координаты привязки к отмасштабированным (только не спрашивайте как, это неприличный вопрос для окончившего хотя бы 5..6 классов церковно-приходской).
И я бы лучше ручками масштабировал картинку, чтобы быть уверенным в результате. Хотя, если поведение достаточно предсказуемо у точность +-пиксель не критична - то пусть само масштабируется.
DOjD (2008-11-16 21:45:00) [14]
> Задача просто сверхсложная...
Спасибо уважаемый @!!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!
Надеюсь довел суть! ))
@!!ex (2008-11-16 12:02:00) [15]http://www.mediafire.com/?bp3zducg1li
Задача просто сверхсложная...
@!!ex (2008-11-16 11:37:00) [16]Какие ждесткие вопросы поджнимают на ДМ. :)
AIK (2008-11-16 10:34:00) [17]
> но вопрос в том как при изменении размера Image1, сделать
> так, что бы Image2 оставался примерно в том же месте Image1?
>
До изменения размера Image1 или после?
если после то при изменении размера Image1 присвоить его кординаты (Left, Top) Imag'у 2, ну а если до то сперва присвоить а потом изменения размера Image1.
Или кажется я вообще тебя не понял :(
DOjD (2008-11-16 08:36:00) [18]
> Добавляй не "на TIMAGE", а "поверх TIMAGE".
Спасибо сделал, но вопрос в том как при изменении размера Image1, сделать так, что бы Image2 оставался примерно в том же месте Image1?
Германн (2008-11-16 00:55:00) [19]
> Вопрос в том как добавить на TIMAGE новые картинки в заданные
> координаты?
Добавляй не "на TIMAGE", а "поверх TIMAGE".
KilkennyCat (2008-11-16 00:52:00) [20]HotImage tmssoftware