Показать сообщение отдельно
Старый 02.11.2011, 20:44   #11
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений
(для 271 пользователей)
Ответ: Помогите исправить ошибку



вариант со снятием огрызка скриншота вместо рисования одноцветных прямоугольников, затирающих нашу машинку и ее какашки в виде надписи "loading N%"

// progress sample for leonid
// (c) barsunduk
// 02.11.2011

program carload;

var
    
carbackimage;
    
iwwscrWscrHinteger;

// на входе состояние прогресса
// от 0 до scrW (ширина экрана)
procedure progress(xinteger);
var
    
whyinteger;
    
sstring;
begin
    w 
:= GetImageWidth(car);
    
:= GetImageHeight(car);
    
:= scrH h;
    
// восстанавливаем содержимое экрана из скриншота - стираем прогрессбар
    
DrawImage(back0y);
        
:= 'loading... ' + (100 scrW) + '% ';
      
SetColor(000);
        
DrawText(sGetStringWidth(s), GetStringHeight(s));
      
SetColor(240255240);
        
DrawText(sGetStringWidth(s) - 1GetStringHeight(s) - 1);
    
// рисуется машинка    
    
DrawImage(carxy);
end;

begin
    car 
:= loadImage('/car.png');
    
scrW := GetWidth;
    
scrH := GetHeight;
    
SetColor(000);
    
FillRect(00scrWscrH);
    
// тут рисуется всякое... ну там реклама, лого, заставка, хз
    // ...
    // например завалим экран мусором:
    
ww := scrW;
    if 
ww 255 then
            ww 
:= 255;
    for 
:= 0 to ww do
    
begin
        SetColor
(ww iww iww i);
        
DrawLine(i0iscrH);
    
end;
    
// берем кусок скриншота
    
back := ImageFromCanvas(0scrH GetImageHeight(car) * 2,  GetWidthGetImageHeight(car));
    
// цикл с шагом в 2 пиксела
    
for := 0 to scrW do
    
begin
        progress
(2);
        
repaint;
        
delay(40);
    
end;
    
// очищаем память от ненужных картинок
    
delay(2000);
end
__________________
to be or not to be - it's not a question!
2b or not 2b = ff

Последний раз редактировалось barsunduk, 09.11.2011 в 20:14.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
leonid (03.11.2011)