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 [13946 просмотров]