Форум — Ответы ( К темам )
? | 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'ы, рисовать в них и отображать затем на экран в том месте которое вам понравится. Таким местом может быть всё что угодно. |