Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2010, 08:33   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Мне надо картинку двигать
Как двигать?
Цитата:
то нужно битмапу установить значения ширины и высоты вручную
По-моему если загружаешь из файла он сам выставляет габариты хотя могу и ошибаться
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.02.2010, 11:38   #12
inndim
Пользователь
 
Регистрация: 08.06.2008
Сообщений: 74
По умолчанию

Vigilante
Цитата:
Он по идее будет закрашивать label'ы и т.п.
Вместо timage брось на форму например PaintBox и рисуй на его канве
Код:
mass[1].LoadFromFile('C:\Documents and Settings\Роман\Мои документы\Мои рисунки\neverdie.bmp');
paintbox1.Canvas.Draw(0, 0, mass[1]);
inndim вне форума Ответить с цитированием
Старый 02.02.2010, 12:13   #13
Deamonig
Форумчанин
 
Аватар для Deamonig
 
Регистрация: 19.09.2009
Сообщений: 166
По умолчанию

Цитата:
По-моему если загружаешь из файла он сам выставляет габариты хотя могу и ошибаться
Ну чуть выше этого я какраз написал что
Цитата:
если загружается катинка из файла то Битмапу автоматически присваиваются ширина и высота загружаемой картинки. Если же вы создали битмап и хотите на нем рисовать посредством Canvas что либо, то нужно битмапу установить значения ширины и высоты вручную
То есть во втором предложении я имел ввиду, что мы не загружали картинку из файла, то в таком случаем делаем все ручками.

Последний раз редактировалось Deamonig; 02.02.2010 в 12:16.
Deamonig вне форума Ответить с цитированием
Старый 02.02.2010, 13:39   #14
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Цитата:
Сообщение от Deamonig Посмотреть сообщение
Также имейте ввиду что если Битмап после завершения работы программы не удалить, то он будет "висеть" в оперативной памяти компьютера забивая ресурсы, потому в OnDestroy:
Код:
for i:=1 to n do
mass[1].Free;
Если не ошибаюсь-делфи сама чистит память по завершению приложения.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 02.02.2010, 15:16   #15
Deamonig
Форумчанин
 
Аватар для Deamonig
 
Регистрация: 19.09.2009
Сообщений: 166
По умолчанию

Хмм.. всегда думал что ресурсы таким образом забиваются, где то читал об этом, что важно освобождать ресурсы. Но сделав небольшую программу убедился в обратном - битмапы таки автоматически удаляются из памяти по завершению работы программы. Может быть этот недостаток был в ранних версиях Delphi?
Deamonig вне форума Ответить с цитированием
Старый 02.02.2010, 15:49   #16
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Это недостаток винды - она может очистить память а может и НЕ очистить. Так что, если понасоздавать, то в памяти может получиться убыток казне.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 03.02.2010, 00:41   #17
Vigilante
 
Регистрация: 20.12.2008
Сообщений: 6
По умолчанию

Спасибо. Так кроме paintbox'a нет варианта?
Тогда может лучше делать TImage; ?
PS снег делаю, тренеруюсь.
Vigilante вне форума Ответить с цитированием
Старый 03.02.2010, 08:23   #18
inndim
Пользователь
 
Регистрация: 08.06.2008
Сообщений: 74
По умолчанию

Я бы остановился на paintbox, у TImage сложнее менять цвет фона - я имею ввиду не заполненных картинкой областей, поэксперементируйте.
inndim вне форума Ответить с цитированием
Старый 03.02.2010, 10:40   #19
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Цитата:
Если же вы создали битмап и хотите на нем рисовать посредством Canvas что либо, то нужно битмапу установить значения ширины и высоты вручную :
Код:
mass[1].Width:=X;
mass[1].Height:=Y;
И надо бы ещё формат задавать:
Код:
mass[1].PixelFormat:=pf24bit;
Цитата:
Но сделав небольшую программу убедился в обратном - битмапы таки автоматически удаляются из памяти по завершению работы программы.
Цитата:
Если не ошибаюсь-делфи сама чистит память по завершению приложения.
Никто ни за кем никогда ничего не чистит - просто ОС обычно при завершении процесса удаляет всё что программа насоздавала (ну должна по идее), но вовсе не стоит на неё надеяться...

Цитата:
Так кроме paintbox'a нет варианта?
Да зачем PaintBox? Можно просто на форме рисовать...
Цитата:
PS снег делаю, тренеруюсь.
Если снежинки одинаковые, то и массива не надо никакого...

Пример:

Код:
Var Form1: TForm1; SnowSprite: TBitmap;

...

Procedure TForm1.FormCreate(Sender: TObject);
Begin
Randomize;
Form1.WindowState:=wsMaximized;
SnowSprite:=TBitmap.Create;
SnowSprite.LoadFromFile('C:\SnowFlake.bmp');
Timer1.Interval:=600;
End;

Procedure TForm1.Timer1Timer(Sender: TObject);
Var i: Byte;
Begin
Repaint;
For i:=0 To 9 Do
      Canvas.Draw(Random(ClientWidth-SnowSprite.Width), Random(ClientHeight-SnowSprite.Height), SnowSprite);
End;

Procedure TForm1.FormDestroy(Sender: TObject);
Begin
SnowSprite.Free;
End;
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 03.02.2010 в 10:55.
DomiNick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Array CrystaLize Паскаль, Turbo Pascal, PascalABC.NET 7 29.09.2009 21:33
a:array[1..50] of integer; KulOle Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2008 19:16
Array Devikss Помощь студентам 4 19.06.2008 22:45
Array BETONOMESHALKA Общие вопросы Delphi 2 24.11.2007 22:49
Array или не array Димарик Общие вопросы Delphi 4 18.06.2007 15:16