Новые книги

Аннотация: Изложены основы программирования на языке Паскаль. По ходу обучения решаются десятки задач (использован проектный подход). От читателя не требуется начальных познаний в программировании, но круг затронутых тем ориентирует его в профессиональную область. Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Будет полезна студентам-первокурсникам и преподавателям информатики.
В XXI веке с наступлением эры визуальной информации мы хотим знать о цвете как можно больше. Откуда взялся тот или иной оттенок? Как устроены цветовые «семьи»? Какие драматические и комические истории связаны с тем или иным оттенком? Английская журналистка Кассия Сен-Клер, изучающая цвет всю свою жизнь, провела целое расследование и предлагает вам окунуться в удивительный и непредсказуемый мир цвета.

Вопрос и Ответ 22

Вопросы и Ответы


      22. Как заполнить форму ЛЮБЫМ растровым изображением?

      Стандартные средства Windows позволяют заполнять форму только изображением размером 8х8 точек (см. "Вопрос и Ответ 19"). Для заполнения формы растровым изображением любого размера необходимо в методе Paint заполнять всю форму нужным растровым изображением вручную.

      Пример:

      ............

        ............
        public

          bmp: TBitMap; {Объект TBitMap}
          kX, kY: Integer; {Количество целых изображений по X и Y}

        end;

      ............

      procedure TForm1.FormCreate(Sender: TObject);

        begin bmp := TBitMap.Create; {Создаем объект TBitMap}
        bmp.LoadFromFile('fon.bmp'); {Загружаем в него изображение}

      end;

      ............

      {Вызывается при изменении размеров окна (и при его создании тоже)}
      procedure TForm1.FormResize(Sender: TObject);
      begin

        {Проверяем загружено или нет изображение}
        IF bmp.Handle <> 0 THEN BEGIN

          {Вычисляем какое целое число раз поместится изображение на экране по вертикали и горизонтали}
          kX := Width DIV bmp.Width;
          kY := Height DIV bmp.Height;
          Refresh; {Перерисовываем окно}

        END;

      end;

      ............

      procedure TForm1.FormPaint(Sender: TObject);
      VAR X, Y: Integer;
      begin

        {Проверяем загружено или нет изображение}
        IF bmp.Handle <> 0 THEN

          FOR X := 0 TO kX DO {Количество изображений по X плюс одно}

            FOR Y := 0 TO kY DO {Количество изображений по Y плюс одно}

              Canvas.Draw(X*bmp.Width, Y*bmp.Height, bmp); {Рисуем}

      end;

      ............

      procedure TForm1.FormDestroy(Sender: TObject);
      begin

        bmp.Free; {Удаляем объект TBitMap}

      end;

      ............


...предыдущая страница следующая...
оглавление



"Вопрос и Ответ 22"
Copyright © "В помощь Веб-Мастеру" (Alexander D. Belyaev) 2005-2024 .
При перепечатке любого материала видимая ссылка на источник "В помощь Веб-Мастеру" и все имена, ссылки авторов обязательны!
Время генерации страницы: 0.006