БлогNot. C++ Builder: создаём программно рисунок и растягиваем его на всю форму...

C++ Builder: создаём программно рисунок и растягиваем его на всю форму...

Эта типовая задача решается элементарно, так что проекта-примера, думаю, не понадобится.

Создаём пустой проект с формой Form1, в обработчике её события onCreate включим двойную буферизацию:

Form1->DoubleBuffered=true;

В обработчике события onResize формы поставим код

Form1->Invalidate();

для последующей корректной перерисовки при изменении размеров окна.

Основной код (программное создания объекта типа TImage, чтение файла с рисунком и отрисовка) поместим, например, в обработчик события onPaint:

TImage *Image1 = new TImage(this);
Image1->Picture->LoadFromFile("имяфайла.bmp");
Image1->Align = alClient;
Image1->AutoSize=true;
Image1->Stretch=true;
Image1->Width = Form1->ClientWidth;
Image1->Height = Form1->ClientHeight;
TRect tRect(0,0,Form1->ClientWidth,Form1->ClientHeight);
Form1->Canvas->StretchDraw(tRect,Image1->Picture->Bitmap);

Обычный метод Draw может в этом случаем не отмасштабировать рисунок. Ну и, конечно, нужно понимать, что onPaint выполняется каждый раз при перерисовке окна формы, так что каждый раз заново подгружать рисунок может оказаться "разорительно".

Если объект TImage был создан заранее и добавлен на форму, можно обойтись кодом

Image1->Picture->LoadFromFile("имяфайла.bmp");
Image1->Align = alClient;
Image1->AutoSize=true;
Image1->Stretch=true;
Image1->Width = Form1->ClientWidth;
Image1->Height = Form1->ClientHeight;
Form1->Canvas->Draw(0,0,Image1->Picture->Bitmap);

который достаточно поместить в обработчик события onCreate формы.

22.10.2013, 13:53 [13767 просмотров]


теги: программирование c++ графика builder

К этой статье пока нет комментариев, Ваш будет первым