Проблема с загрузкой Bitmap'ов из .res-файла
От: Denned  
Дата: 25.10.05 04:36
Оценка:
Здравствуйте! У меня возникла проблема следующего характера. Имеется: файл ресурсов с несколькими Bitmap'ами. В обработчике события OnPaint формы расположен следующий код:
for X:=1 to 61 do begin //Счетчик битмапов
Bitmap := TBitmap.Create;
Bitmap.LoadFromResourceName(hInstance, BitmapName[X]);
MainForm.Canvas.Draw(Pos[X].X, Pos[X].Y, Bitmap);
Bitmap.Free;
end;
Проблема:1)на первом шаге цикла X'у почему-то присваивается значение 61(!!!), а не 1;2)на первом шаге Bitmap считывается и отрисовывается в Canvas формы, на втором ни с того ни с сего выдается ErrorMessage "Resource такой-то not found", хотя он в действительности существует. Я в шоке! Ничего не могу понять!
Уважаемые Гуру, знает ли кто-нибудь из вас, где тут собака зарыта?
Re: Проблема с загрузкой Bitmap'ов из .res-файла
От: alive Россия  
Дата: 25.10.05 06:19
Оценка:
Здравствуйте, Denned, Вы писали:

D>Здравствуйте! У меня возникла проблема следующего характера. Имеется: файл ресурсов с несколькими Bitmap'ами. В обработчике события OnPaint формы расположен следующий код:

D>  for X:=1 to 61 do begin //Счетчик битмапов
D>    Bitmap := TBitmap.Create;
D>    Bitmap.LoadFromResourceName(hInstance, BitmapName[X]);
D>    MainForm.Canvas.Draw(Pos[X].X, Pos[X].Y, Bitmap);
D>    Bitmap.Free;
D>  end;

А ты не пробовал грузить битмапы не в обработчике OnPaint. Все-таки он предназначен для иных целей.
...<< RSDN@Home 1.2.0 alpha rev. 618>>
...Foobar {Пикник — [Родом ниоткуда #01] Я невидим}
Keep yourself alive
Re[2]: Проблема с загрузкой Bitmap'ов из .res-файла
От: Denned  
Дата: 25.10.05 06:27
Оценка:
Все заработало! Изменил имена битмапов на ID'шники. При этом каждый раз при изменении какой-либо картинки приходится заново открывать проект, билдить его и тока потом запускать

Здравствуйте, alive, Вы писали:

A>А ты не пробовал грузить битмапы не в обработчике OnPaint. Все-таки он предназначен для иных целей.


OnPaint наступает при перемещении формы, поэтому так необходимо расположить код здесь.
Re[3]: Проблема с загрузкой Bitmap'ов из .res-файла
От: alive Россия  
Дата: 25.10.05 08:10
Оценка:
Здравствуйте, Denned, Вы писали:

A>>А ты не пробовал грузить битмапы не в обработчике OnPaint. Все-таки он предназначен для иных целей.


D>OnPaint наступает при перемещении формы, поэтому так необходимо расположить код здесь.


Все равно не место. А перемещение формы можно отслеживать обрабатывая WM_MOVE.
...<< RSDN@Home 1.2.0 alpha rev. 618>>
...Foobar {Пикник — [Харакири #03] Я — пущенная стрела}
Keep yourself alive
Re: Проблема с загрузкой Bitmap'ов из .res-файла
От: AlekseyVP Россия  
Дата: 25.10.05 09:00
Оценка:
Здравствуйте, Denned, Вы писали:

D>Здравствуйте! У меня возникла проблема следующего характера. Имеется: файл ресурсов с несколькими Bitmap'ами. В обработчике события OnPaint формы расположен следующий код:

D>  for X:=1 to 61 do begin //Счетчик битмапов
D>    Bitmap := TBitmap.Create;
D>    Bitmap.LoadFromResourceName(hInstance, BitmapName[X]);
D>    MainForm.Canvas.Draw(Pos[X].X, Pos[X].Y, Bitmap);
D>    Bitmap.Free;
D>  end;

D>Уважаемые Гуру, знает ли кто-нибудь из вас, где тут собака зарыта?
А какого формата BitMap'ы?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Проблема с загрузкой Bitmap'ов из .res-файла
От: Dimonka Верблюд  
Дата: 25.10.05 09:12
Оценка:
Здравствуйте, Denned, Вы писали:

  for X:=1 to 61 do begin //Счетчик битмапов
    Bitmap := TBitmap.Create;
    Bitmap.LoadFromResourceName(hInstance, BitmapName[X]);
    MainForm.Canvas.Draw(Pos[X].X, Pos[X].Y, Bitmap);
    Bitmap.Free;

D>Проблема:1)на первом шаге цикла X'у почему-то присваивается значение 61(!!!), а не 1;2)на первом шаге Bitmap считывается и отрисовывается в Canvas формы, на втором ни с того ни с сего выдается ErrorMessage "Resource такой-то not found", хотя он в действительности существует. Я в шоке! Ничего не могу понять!

Не обращай внимание на 61 в иксе — это глюк из-за оптимизатора. На самом деле там всё в порядке (1, 2, 3..) У тебя чего-то там с ресурсами не ладное.

А вообще если картинки немного места занимают, то лучше их подгрузить заранее, а не стопорить процесс перерисовки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.