Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена фона картинкой, помогите люди добрые 
:(
    Опции темы
Rick
Дата 6.11.2005, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 4.11.2005
Где: Новосибирск

Репутация: нет
Всего: 3



Товарищи, подскажите наинающему, можно ли как-то заменить фон формы на картинку без использования компонента Image или др. компонента. К сожалению в Delphi нет аналога свойства формы Picture.
--------------------
Не бывает атеистов в окопах под огнем   
PM MAIL ICQ   Вверх
DragonFire
Дата 6.11.2005, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Ну, в общем - то все очень просто. Создай обработчик события перерисовки формы(OnPaint).
В нем напиши вот такой код (путь к рисунку укажешь в Bitmap.LoadFromFile('ПУТЬ')):
Код

procedure TForm1.FormPaint(Sender: TObject);
var Bitmap:TBitmap;
begin
  Bitmap:=TBitmap.Create;
  Bitmap.LoadFromFile('D:\1.bmp');
  Form1.Canvas.CopyRect(Rect(0,0,Form1.Width,Form1.Height),Bitmap.Canvas,Rect(0,0,Form1.Width,Form1.Height));
  Bitmap.Destroy;
end;

З.Ы. Проверил - работает!!! smile


--------------------
PM MAIL ICQ   Вверх
Rick
Дата 6.11.2005, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 4.11.2005
Где: Новосибирск

Репутация: нет
Всего: 3



работаетsmile
--------------------
Не бывает атеистов в окопах под огнем   
PM MAIL ICQ   Вверх
DragonFire
Дата 6.11.2005, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Еще бы smile


--------------------
PM MAIL ICQ   Вверх
Poseidon
Дата 6.11.2005, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Код
procedure TForm1.FormPaint(Sender: TObject);
var
Bitmap: TBitmap;
begin
Bitmap:= TBitmap.Create;
Bitmap.LoadFromFile('D:\1.bmp');
Form1.Canvas.Draw(0,0,Bitmap);
Bitmap.Free;
end;



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Rick
Дата 6.11.2005, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 4.11.2005
Где: Новосибирск

Репутация: нет
Всего: 3



а если JPG? конвертировать?

Это сообщение отредактировал(а) Rick - 6.11.2005, 14:40
--------------------
Не бывает атеистов в окопах под огнем   
PM MAIL ICQ   Вверх
Poseidon
Дата 6.11.2005, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Код
uses jpeg;
procedure TForm1.FormPaint(Sender: TObject);
var
Picture: TPicture;
begin
Picture:= TPicture.Create;
Picture.LoadFromFile('D:\1.jpg');
Canvas.Draw(0,0,Picture.Graphic);
Picture.Free;
end;



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
vovan430
  Дата 6.11.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 13.8.2005
Где: Иркутская обл. г. Тайшет

Репутация: нет
Всего: нет



А чем тебе Image не устраивает. С ним же удобнее.

А как сделать чтоб после следующего открытия была та картинка которую я устанавливал последней. Картинку фона беру из OpenPictureDialog. Программу закрываю потом открываю и стоит последняя картинка которую я устанавливал.
PM MAIL WWW   Вверх
Poseidon
Дата 6.11.2005, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(vovan430 @ 6.11.2005, 17:01)
Программу закрываю потом открываю и стоит последняя картинка которую я устанавливал.
А стоит она там потому, что при загрузке в Image на этапе проектирование эта картинка сохраняется в ресурс программы.

Лучшим решение твоей задачи будет сохранять куда-нить новую картинку, а при загрузке читать ее оттуда.



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Rick
Дата 6.11.2005, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 4.11.2005
Где: Новосибирск

Репутация: нет
Всего: 3



Image меня не устраивает тем, что на форме уже расположены др. компоненты, а он их перекрывает. Как то я этот момент сразу упустил, теперь уже поздноsmile

--------------------
Не бывает атеистов в окопах под огнем   
PM MAIL ICQ   Вверх
Poseidon
Дата 6.11.2005, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Еще не поздно. Кидай image на форму, устанавливай в нем Align:= alClient, потом жми по нему правой кнопкой, потом "Управление" - "Перенести Ниже". Все smile


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Rick
Дата 6.11.2005, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 4.11.2005
Где: Новосибирск

Репутация: нет
Всего: 3



мдя...с этого мне наверно и надо было начинатьsmile


--------------------
Не бывает атеистов в окопах под огнем   
PM MAIL ICQ   Вверх
Instal
Дата 2.6.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 30.7.2005

Репутация: нет
Всего: нет



Цитата(Poseidon @ 6.11.2005,  19:57)
Еще не поздно. Кидай image на форму, устанавливай в нем Align:= alClient, потом жми по нему правой кнопкой, потом "Управление" - "Перенести Ниже". Все smile

Хочу тоже сделать фон формы с картинки и чтоб он не перекрывал другие компоненты.
Делаю также, нажимаю "перенести ниже", а все остается как было...
Подскажите плиз в чем может быть проблема?
PM MAIL   Вверх
ivan219
Дата 4.6.2008, 13:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Цитата(Poseidon @ 6.11.2005,  14:17)
Код
procedure TForm1.FormPaint(Sender: TObject);
var
Bitmap: TBitmap;
begin
Bitmap:= TBitmap.Create;
Bitmap.LoadFromFile('D:\1.bmp');
Form1.Canvas.Draw(0,0,Bitmap);
Bitmap.Free;
end;

Както расточительно
Код

var
  Form1: TForm1;
  BitMap: TBitMap;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 BitMap := TBitMap.Create;
 Bitmap.LoadFromFile('1.bmp');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 BitMap.Free;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
 Form1.Canvas.Draw(0,0,Bitmap);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Bitmap.LoadFromFile('2.bmp');
 Invalidate;
end;

PM MAIL ICQ   Вверх
Poseidon
Дата 7.6.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(ivan219 @  4.6.2008,  13:40 Найти цитируемый пост)
Както расточительно
Расточительно? А держать в памяти созданный, да еще и заполненный TBitMap все время, пока загружена программа, это не расточительно? Да и вообще, топик с 2005 года, никрофилы  smile

Цитата(Instal @  2.6.2008,  11:49 Найти цитируемый пост)
Делаю также, нажимаю "перенести ниже", а все остается как было...
Ты точно "перенести ниже" указываешь в меню у Image?


Это сообщение отредактировал(а) Poseidon - 13.6.2008, 08:22


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.