Как сделать фон в делфи

Обновлено: 07.07.2024

Пожалуйста, выделяйте текст программы тегом [сode=pas] . [/сode] . Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля. Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
. (продолжение следует) .
Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца.

Операционная среда WINDOWS является графической средой и для вывода графической информации на экран или принтер использует функции GDI (Graphics Devices Interface – Интерфейс графических устройств). GDI – функции являются аппаратно–независимыми, поэтому взаимодействие приложений (в том числе и созданных в среде Delphi) с аппаратными устройствами компьютера осуществляются через драйвера устройств и через специальную структуру данных – называемой контекстом отображения (дисплейный контекст – DC (Display Context)). Контекст отображения содержит основные характеристики устройств вывода графической информации, а также инструменты для рисования (шрифт, перо и кисть).

Система Delphi предлагает специальные классы, упрощающие использование графических средств:

  • TCanvas – для контекста отображения
  • TFont – для шрифта
  • TPen – для пера
  • TBrush – для кисти

Связанные с этими классами объекты получают соответствующие свойства – canvas, font, pen, brush, которые уже как объекты, в свою очередь, имеют ряд своих свойств.

Для работы с рисунками или изображениями Delphi предлагает классы: TGraphic, TPicture, TImage, TBitMap, TJpegImage, TShape, TIcon, TMetaFile и др. Основной класс для связанных с рисованием графических операций – это TCanvas. С помощью его свойств и методов можно рисовать на поверхности визуальных объектов, которые включают в себя этот класс и имеют свойство сanvas. Для выполнения различных графических операций используются типы TPoint и TRect, описываемые следующим образом (см. листинг 1):

TPoint = record // задание координат точки

TRect = record // определение прямоугольной области

TRect = record // определение прямоугольной области

TRect := Bounds ( X,Y, Width, Height : Integer );

X, Y – координаты левого верхнего угла области ;

Width, Height – ширина и высота прямоугольной области;

Одним из основных объектов для рисования является – поверхность рисования (она же холст или канва) – объект класса TCanvas. У холста есть ряд свойств и методов для отображения графической информации, перемещения графических объектов по поверхности рисования, копирования изображений и/или их отдельных областей, вывода текстовой информации.

Наиболее частыми применяемыми методами отображения (вывода) графики являются:

  • Canvas Arc ( дуга), Pie ( сектор), Ellipse ( эллипс,

круг), Rectangle (прямоугольник) и другие

  • Canvas.Draw – вывод графической информации
  • Canvas.StretchDraw – вывод графической информации с изменением масштаба
  • Canvas.CopyRect – копирование графической области
  • Canvas. TextOut – вывод текстовой информации

Кроме этого еще используются методы загрузки графических объектов из файлов, из других компонентов или объектов.

Самое простое приложение с выводом графики. Урок 2

DeKot_2_1

Рис. 1 Создаем новый проект.

* почему именно эти цифры разберем позже

DeKot_2_2

Рис. 2. Создание обработчика OnPaint()

Теперь запишем в этой процедуре следующий код (см. листинг 2):

with form1.canvas do begin

pen.color:= clred; // цвет пера

rectangle(350, 50, 550, 100); // рисуем прямоугольник с координатами

// верхнего левого угла

// x1=350, y1=50 и правого нижнего x2=550, y2=100

pen.width:= 4; // ширина пера

brush.color:= clskyblue; // цвет заполнения фигуры

ellipse(60, 100, 250, 400) // эллипс, вписанный в прямоугольник

Запустите проект (Run или F9 ) и посмотрите результат. Конечно, это слишком простой проект, поэтому усложним нашу задачу с использованием рисунков находящихся в файлах (формат файлов .bmp). Графические файлы, которые нам понадобятся для последующих проектов, находятся в папке data в соответствующих папках проектов (см. ресурсы к статье).

Далее, выведем на форму изображение звездолета (файл ‘ship1.bmp ) на фоне звездного неба (файл ‘star1.bmp ). В файле ‘ship1’ два изображения звездолета (спрайты – они нам понадобятся для организации движения звездолета), файл ‘star1’ используется для создания фона и имеет размер 700 х 540 (под эти размеры и установлены размеры окна формы через Object Inspector). Нам также понадобятся объекты типа TBitMap: BufFon (буфер для загрузки фона из файла ‘star1.bmp ), BufSpr (буфер для загрузки спрайтов из файла ‘ship1.bmp ), BufPic (буфер для загрузки рисунка одного из спрайтов из BufSpr), Buffer (общий буфер для объединения всех рисунков с последующим выводом на форму).

Размеры BufFon и BufSpr устанавливаются в соответствии с размерами изображений при загрузке. Размер общего буфера Buffer устанавливаем равным BufFon, а размер BufPic – равен размеру одного спрайта, что в общем случае определяется следующим образом:

BufPic.Width := round ( BufSpr.Width / n );

BufPic.Height:= round ( BufSpr.Height / m );

где n – кол–во спрайтов в горизонтальном ряду изображений в файле ‘sprite’,

m – кол–во рядов с изображением спрайтов в файле.

Инициализацию буферов проведем в процедуре OnCreate() формы (см. рис.3):

DeKot_2_3

Рис. 3. Инициализация буферов

Для вывода одного спрайта через BufPic** создаем процедуру копирования спрайта из BufSpr в BufPic методом CopyRect (см. листинг 3):

procedure DrawShip1 ( i: byte); // загрузка одного спрайта в буфер рисунка

BufPic.Canvas.CopyRect(bounds(0, 0, BufPic.Width, BufPic.Height),

BufSpr.Canvas,bounds( i * 66, 0, BufPic.Width,

** на Canvas BufPic в область с координатами левого верхнего угла X= 0 и Y = 0, шириной и высотой соответствующие размерам буфера BufPic копируем изображение спрайта из области с область с координатами левого верхнего угла X= i * 66 и Y = 0, шириной и высотой соответствующие размерам буфера BufPic. В координате Х цифра 66 соответствует ширине одного спрайта. В переменной i передается номер спрайта (0 – 1-й, 1 – 2-й).

Вывод изображений производим аналогично предыдущему примеру (рисование прямоугольника и эллипса) в процедуре OnPaint(). Необходимо ввести переменные xs1 и ys1 (координаты вывода звездолета). Процедура DrawShip1(0) c параметром 0 выводит первый спрайт в буфер рисунка BufPic. Далее выводим фон и спрайт на канву дополнительного буфера Buffer и затем из него выводим все на форму. Удалите из процедуры код предыдущего примера и вставьте следующий (см. листинг 3):

procedure DrawShip1 (i: byte); // загрузка одного спрайта в буфер рисунка

BufPic.Canvas.CopyRect(bounds(0, 0, BufPic.Width, BufPic.Height),

BufSpr.Canvas, bounds(i * 66, 0, BufPic.Width,

procedure Tform1.FormPaint(sender: tobject);

var xs1, ys1: integer; // координаты звездолета SHIP1

xs1:= 250; ys1:= 466;

Buffer.canvas.draw(0, 0, BufFon); // выводим фон в общий буфер

Buffer.canvas.draw(xs1, ys1, BufPic); // выводим рисунок спрайта поверх

Buffer.canvas.draw(0, 0, Buffer); // вывод обеих рисунков (общего буфера)

После запуска проекта и компиляции получаем следующую картинку (см. рис.4):

DeKot_2_4

Рис. 4. Тестовый проект звездолета

Заключение

*** Перед запуском в среде Дельфи скопируйте в папку с проектом папку data с графическими файлами.

Можно использовать Уроки в любых некоммерческих целях с указанием автора и ссылкой на

Компонент delphi Image предназначен для отображение на форме графических изображений по умолчанию выводит на поверхность формы изображения представленных в bmp формате. Для вывода изображений в jpg формате необходимо в дерективе uses подключить модуль JPEG. После размещения на форме компонента Image, он принимает вид выделенной прямоугольной области(рис 1).

Компонент delphi Image

Загрузить картинку можно в коде программы, добавив строку:
Image1.Picture.LoadFromFile( );

Кроме этого, загрузить изображения можно с помощью Object Inspector. Для этого находим свойство Picture и слева от него нажимаем на три точки. Открывается окно Picture Editor и в нем выбираем загрузить(Load), в раскрывшемся окне выбираем файл изображения.

Свойства Image

Picture изображение отображающееся в поле компонента
Width, Height размеры компонента. Если эти размеры меньше размера иллюстрации, а значение свойств Strech, AutoSize и Proportional равны False, то отображается часть изображения
Proportional позволяет автоматически масштабировать картинки без искажения. Для выполнения масштабирования, значение свойства AutoSize должно быть равным False
Strech позволяет автоматически масштабировать (сжимать или растягивать) изображение в соответствии с размером компонента Image. Если размер компонента не пропорционален размеру изображения, то изображение будет искажено
AutoSize позволяет автоматически изменять размер компонента в соответствии с размером изображения
Center позволяет определять расположение изображения в поле компонента Image по горизонтали, если ширина картинки меньше ширины компонента. Если свойства равно False, то изображение прижато к правой границе, если True то изображение располагается по центру
Canvas поверхность, позволяющая вывести графику
Transpa­rent указывает прозрачный цвет фона изображения

Продолжаем изучать Delphi

CustomizeDlg Компонент delphi CustomizeDlg – это диалог, предназначенный для настройки Action-band компонентов, к.

XPColorMap Компонент delphi XPColorMap, наряду с TstandardColorMap и TTwilightColorMap (находятся на вкладке A.

PopupActionBar Компонент Delphi PopupActionBar идентичен компоненту PopupMenu. Разница в них лишь в стиле оформлени.

ActionMainMenuBar Компонент Delphi ActionMainMenuBar представляет собой специализированный контейнер (подобно Panel), .

4ipolino троюродный дядя Чака Норриса
4ipolino троюродный дядя Чака Норриса
4ipolino троюродный дядя Чака Норриса
4ipolino троюродный дядя Чака Норриса
4ipolino троюродный дядя Чака Норриса
4ipolino троюродный дядя Чака Норриса
4ipolino троюродный дядя Чака Норриса
4ipolino троюродный дядя Чака Норриса
4ipolino троюродный дядя Чака Норриса
4ipolino троюродный дядя Чака Норриса
4ipolino троюродный дядя Чака Норриса

стоит Borland Delphi 7 без дополнительных компонентов
хочу сделать загрузочною картинку к программе.
как сделать прозрачный цвет в дельфи например FF00AE?

//темку можно закрыть. Спасибо megatronx =)

megatronx скоро будет известен
megatronx скоро будет известен
megatronx скоро будет известен


Популярность: 291


Сказал(а) спасибо: 31

Имеешь в виду не стандартную форму окна?
Кидаешь Image на форму, загружаешь в него картинку, цвет вокруг нее должен быть, например, желтый.
У формы свойство BorderStyle устанавливаешь в bsNone, TransparentColorValue в цвет, который надобно скрыть (цвет вокруг картинки) и Transparent в true. Получилось то, что видно внутри желтого цвета, и все компоненты, кинутые на форму.

А если в прозрачный цвет, то свойства AlphaBlend и AlphaBlendValue в помощь

Читайте также: