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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с Bitmap-оми 
:(
    Опции темы
Guest
  Дата 16.12.2003, 10:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Уважаемые госпада программисты, подскажите плз!

Есть программа, в ней штук двадцать процедур, каждая из которых по мере надобности подсасывает в себя Bitmap-ы, (Bit.Free; делать нельзя sad.gif ).

Проблем через 20-30 итераций все это дело аккуратно падает со словами, что мол нет такой ерунды в файле ресурсов....Файл ресурсов не используется. confused.gif

Квештанс: Могу ли я по окончании отработки всех процедур очистить всю область памяти занятую под картинки. confused.gif

Зараниее спасибо!!!
  Вверх
Seti
Дата 16.12.2003, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код в студию!
PM MAIL   Вверх
Unregistered
Дата 16.12.2003, 17:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код
procedure MoveX(Row, NGrid: integer);
var
 r: integer;
 Rect: TRect;          
 bit: TBitmap;        
 BitS: string;        
 x: integer;          
 ALeft: array[0..11,0..2] of integer;    
 ARight: array[0..11,0..2] of integer;    
 AUp: array[0..2,0..11] of integer;      
 ADown: array[0..2,0..11] of integer;    
 AGeneral: array[0..11,0..11] of integer;

begin
 randomize;
 r:= random(6)+1;
 If NGrid = 2 then
   begin
     aright[Row, 0]:=aright[Row, 1];
     aright[Row, 1]:=aright[Row, 2];
     aright[Row, 2]:=r;
     for x:= 0 to 2 do
        begin
          BitS:= CreatePath(aright[row, x]);
          bit:= TBitmap.Create;
          bit.LoadFromFile(BitS);
          Rect:= Form1.DrawGrid2.CellRect(x, row);
          Form1.DrawGrid2.Canvas.Brush.Bitmap := bit;   // - Рисуем
          Form1.DrawGrid2.Canvas.FillRect(Rect);        ///
        end;
   end
 else if Ngrid = 3 then
   begin
     aleft[Row, 2]:=aleft[Row, 1];
     aleft[Row, 1]:=aleft[Row, 0];
     aleft[Row, 0]:=r;
     for x:= 2 downto 0 do
        begin
          BitS:= CreatePath(aleft[row, x]);
          bit:= TBitmap.Create;
          bit.LoadFromFile(BitS);
          Rect:= Form1.DrawGrid3.CellRect(x, row);
          Form1.DrawGrid3.Canvas.Brush.Bitmap := bit;   // - Рисуем
          Form1.DrawGrid3.Canvas.FillRect(Rect);        ///
        end;
    end
 else if Ngrid = 4 then
   begin
     aup[2, Row]:=aup[1, Row];
     aup[1, Row]:=aup[0, Row];
     aup[0, Row]:=r;
     for x:= 2 downto 0 do
       begin
        BitS:= CreatePath(aup[x, row]);
        bit:= TBitmap.Create;
        bit.LoadFromFile(BitS);
        Rect:= Form1.DrawGrid4.CellRect(row, x);
        Form1.DrawGrid4.Canvas.Brush.Bitmap := bit;   // - Рисуем
        Form1.DrawGrid4.Canvas.FillRect(Rect);        ///
      end;
    end
 else if Ngrid = 5 then
   begin
     adown[0, Row]:=adown[1, Row];
     adown[1, Row]:=adown[2, Row];
     adown[2, Row]:=r;
     for x:= 0 to 2 do
        begin
          BitS:= CreatePath(adown[x, row]);
          bit:= TBitmap.Create;
          bit.LoadFromFile(BitS);
          Rect:= Form1.DrawGrid5.CellRect(row, x);
          Form1.DrawGrid5.Canvas.Brush.Bitmap := bit;   // - Рисуем
          Form1.DrawGrid5.Canvas.FillRect(Rect);        ///
        end;
  end;
end;


В краце.....сия процедура двигает картинку в одном из 4-х ДравГридов (3х12). Первая картинка вылетает, смещаются две стоящие за ней, на место последней встает другая картинка, выбранная случайным образом.....



  Вверх
Полудненко Олег
Дата 16.12.2003, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Українець
**


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

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



Ещё раз: почему нельзя писать .фриconfused.gifconfused.gif
PM MAIL   Вверх
Seti
Дата 17.12.2003, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



в этом участке кода указатель на экземпляр Form1.DrawGrid2.Canvas.Brush.Bitmap замещается указателем на экземпляр bit класса TBitmap

Form1.DrawGrid2.Canvas.Brush.Bitmap := bit

попробуй копировать содержимое объекта bit в Bitmap с помощью Assign:

Form1.DrawGrid2.Canvas.Brush.Bitmap.Assign(bit)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

FAQ раздела лежит здесь!


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

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


 




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


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

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