Здравствуйте! У меня возникла проблема следующего характера. Имеется: файл ресурсов с несколькими 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", хотя он в действительности существует. Я в шоке! Ничего не могу понять!
Уважаемые Гуру, знает ли кто-нибудь из вас, где тут собака зарыта?
Здравствуйте, 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. Все-таки он предназначен для иных целей.
Все заработало! Изменил имена битмапов на ID'шники. При этом каждый раз при изменении какой-либо картинки приходится заново открывать проект, билдить его и тока потом запускать
Здравствуйте, alive, Вы писали:
A>А ты не пробовал грузить битмапы не в обработчике OnPaint. Все-таки он предназначен для иных целей.
OnPaint наступает при перемещении формы, поэтому так необходимо расположить код здесь.
Re[3]: Проблема с загрузкой Bitmap'ов из .res-файла
Здравствуйте, Denned, Вы писали:
A>>А ты не пробовал грузить битмапы не в обработчике OnPaint. Все-таки он предназначен для иных целей.
D>OnPaint наступает при перемещении формы, поэтому так необходимо расположить код здесь.
Все равно не место. А перемещение формы можно отслеживать обрабатывая WM_MOVE.
Здравствуйте, 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'ы?
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..) У тебя чего-то там с ресурсами не ладное.
А вообще если картинки немного места занимают, то лучше их подгрузить заранее, а не стопорить процесс перерисовки.