C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Проблемы с TImage, Проблемы с TImage
Steam-x
  Отправлено: 24.07.2003, 15:29


Дежурный стрелочник

Группа: Участник
Сообщений: 60



Привет Всем! Не знаю может быть эту тему уже обсуждали, но все же...
Я создаю компонент на основе TImage (специфическое отображение графика).
Компонент я сделал, леплю его на поле Формы, все просчитывается и производится начальное оформление. Все якобы зашибись. Теперь меняю размер и ожидаю, что и мой график изменит свои размеры, но не тут-то было. Ничего не происходит.
Я понимаю почему это так -> не производится повторный вызов начального оформления графика, а вот куда его вставить, чтобы оно (начальное оформление графика) вызывалось при изменении размеров исходного TImage я не знаю.
Это первый и основной вопрос.

Есть еще одна проблема. Я поместил на Форму TImage и сделал его AlClient (т.е. TImage занял все доступное пространство). Также зафигасил начальное оформление графика. Все зашибись.
Вставляю функцию начального оформления графика на Событие Формы — Resize.
Далее давлю максимайз моей Формы, форма на весь экран, а вот график нарисовался только в начальном участке, том которое занял TImage при конструировании.
Хотя все новые размеры пересчитались правильно, но график получился урезаным.
Если поставить возможность растягивать рисунок, то половина графика, та которая урезана, растягивается, как и положено, на все пространство. Вот я и не знаю в чем проблема.
Это два.

И маленький вопрос. Кто-нибудь знает где можно посмотреть описание на PerfomanceGraph (это компонент в закладке Samles), а то в Help-е ничего нет. А лучще бы посмотреть на его исходник, может мне чего из идей и подойдет.

Заранее благодарен. Пишите мне steam-x@mail.ru
Asher
Отправлено: 24.07.2003, 17:16


Мастер участка

Группа: Модератор
Сообщений: 550



Повесь обработчик на OnResize формы, там и будешь вызывать подпрограмму перерисовки, плюс по поводу 2-го пункта — необходимо выставить размеры битмапа, на котором рисуешь(там- же в OnResize )
Image1->Picture->Bitmap->Height = Image1->Height;//
Image1->Picture->Bitmap->Width = Image1->Width;//
Steam-x
Отправлено: 28.07.2003, 10:03


Дежурный стрелочник

Группа: Участник
Сообщений: 60



Огромадное спасибо Asher! Второй вопрос снялсИ! Ура! Победа человеческого разума над бездушными машинами!
Но, есть маленькая проблемка с первым вопросом (относительно компонента).
Люди добрые помогите кто-чего знает!
Заранее благодарен!
Asher
Отправлено: 28.07.2003, 10:30


Мастер участка

Группа: Модератор
Сообщений: 550



А что, исходников PerfomanceGraph в папке \Examples\Controls\Source разве нет?
А по поводу первого вопроса — OnResize того, на ком лежит не подходит?
Steam-x
Отправлено: 29.07.2003, 11:43


Дежурный стрелочник

Группа: Участник
Сообщений: 60



QUOTE (Asher @ 28/07/2003, 11:32)
А что, исходников PerfomanceGraph в папке \Examples\Controls\Source разве нет?


А по поводу первого вопроса — OnResize того, на ком лежит не подходит?

А что, исходников PerfomanceGraph в папке \Examples\Controls\Source разве нет?

- Ура! нашлось! Я даже и не знал, что там лежит что-то нужное.


А по поводу первого вопроса — OnResize того, на ком лежит не подходит?
- OnResize не подходит, потомучто я его (того на ком лежит ) еще не двигаю. Я изменяю размер самого компонента.
Asher
Отправлено: 31.07.2003, 16:13


Мастер участка

Группа: Модератор
Сообщений: 550



Если ты наследуешься от TImage, то без проблем можешь повесить обработчика на OnResize компонента — в чем проблема-то?
в "Unit1.h"
CODE
class MTImage : public TImage
{
__published: // IDE-managed Components
       void __fastcall ImgResize(TObject *Sender);
private: // User declarations
public:  // User declarations
       __fastcall MTImage(TComponent* Owner);

"Unit1.cpp"
CODE
__fastcall MTImage::MTImage(TComponent* Owner)//
{                               //
this->OnResize = ImgResize;    //
}                               //
//---------------------------------------------------------------------------
void __fastcall MTImage::ImgResize(TObject *Sender)
{
//Обработка
}
//---------------------------------------------------------------------------
Steam-x
Отправлено: 31.07.2003, 16:48


Дежурный стрелочник

Группа: Участник
Сообщений: 60



QUOTE (Asher @ 31/07/2003, 17:15)
Если ты наследуешься от TImage, то без проблем можешь повесить обработчика на OnResize компонента — в чем проблема-то?

Спасибо дорогой землянин, Вы спасли меня!
Попробую.
Все!
Успехов!

Вернуться в Вопросы программирования в C++Builder