Форум — Ответы     (  К темам )
 ?  Newbie: Помогите, очень надо!! (28-12-2002 08:23:03)
1. Как в цикле перебрать все Imag'и на форме? Т.е. есть 10 рисунков (image1,
image2, image3..) и у всех надо поменять какое-то свойство. Хотелось бы
for (int i=1; i<=10; i++) Image%i->Caption = "Help"; но не работает.

2. Есть форма, на ней image1 (используется в качестве canvasa) и
несколько компонентов imageN, расположенных на канвасе. Вопрос: как соеденить
эти компоненты (т.е. провести линию от конца одного до начала второго) ?
Пробывал соеденить imageN с помощью свойств left, top, но проблема
в том, что не получается поставить начальное положение маркера
(Image1->Canvas->MoveTo(Image2->Left+Image2->Width+, Image2->Top / 2) и соотвественно провести его к следующему — координаты разные. Пробывал через Canvas формы, все равно — разные :(
 Devnvd (28-12-2002 09:55:32)
1. Узнать о компонентах на форме можно так:
ListBox1->Clear();
for(int i=0; i < Form1->ComponentCount; i++)
{
TComponent *Temp=Form1->Components[i];
if (dynamic_cast<TImage *>(Temp))
{
ListBox1->Items->Add(((TImage*)Temp)->Name);
}
}
2. Вы неправильно осмыслили понятие Canvas.
Canvas — это вспомогательный класс, содержащий в основе контекст устройства Handle(HDC), Brush, Pen, Font, функции рисования. Всё это сделано для того чтобы вам не приходилось писать всё это на WinApi, в классе это уже расписано за вас.
Класс TCanvas может использоваться самостоятельно. Подставляя в него в качестве Handle контексты различных устройств отображения, вы сможете производить вывод на это устройство.
TImage использовать только ради его Canvas расcточительно, TImage хранит изображение, и следовательно занимает память.
TImage не может содержать в себе другие TImage. Рисование ImageN->Canvas происходит отдельно в области только своего ImageN.
Чтобы оперировать мозаикой картинок, составляя из неё общую картинку, лучше использовать Graphics::TBitmap'ы, рисовать в них и отображать затем на экран в том месте которое вам понравится. Таким местом может быть всё что угодно.