Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Маленькая проблемка с графикой

Автор: BRS 14.10.2004 3:11

Вобщем дала мне наша семинаристка проги написать... Подбегаю к ней через 10 минут - мол все готово %)))
Она, как всякая семинаристКА (никаких претензий к женскому роду, просто лично мне ниразу не попадалась номальная женщина + препод по кодингу) была малость не доволньна ))) Вобщем ну совсем ей не понавилось мое оформление проги ))) Ну и то правда - иьо оформления никакого... Вследствии чаго я был отправлен на доработку. Так прога из 40 строчек разрослась уже в прогу с 250 строками %))) Ибо решил я оформить все по высшему уровню, а не по минимальным требованиям )))

Но вот столкнулся с проблемкой... Значит захотел сделать что то вроде заполняющейся шкалы на 100 квадратиков и рядом бегущие циферки от 1% до 100%.

Ну собсно со шкалой проблем не возникло, правда я в каком то трансе был, поэтому зделал довольно оригинально:

Код

  {Два вспомогательных массива}
Wait1[1] := 15; Wait2[1] := 18;
for i := 2 to 100 do
  begin
  Wait1[i] := Wait1[i-1] + 5;
  Wait2[i] := Wait2[i-1] + 5;
  end;

{собственно сама полоска}
for i := 1 to 100 do
  begin
  bar(Wait1[i], 30, Wait2[i], 45);
  Str(i, finish);
  OutTextXY(540, 33, finish);
  delay(5000);
  end;
  OutTextXY(570, 33, '%');


И вот тут проблемка - решения которой я не знаю. Как понятно из кода, в одних и ех же координатах (с права от строки) будет писаться 1%, 2%, 3%, ..., 100%. Но. ВОПРОС! Как "чистить" эти координаты? Ведь по данному коду 1% будет написано поверх 2% и так далее - результат - закрашенные квадратики )

Собсно сабж ) Как почистить?

Автор: volvo 14.10.2004 5:30

Попробуй вместо этого:


OutTextXY(540, 33, finish);
delay(5000);



поставить что-то типа:


SetColor(White);
OutTextXY(540, 33, finish);
delay(5000);
SetColor(GetBkColor);
OutTextXY(540, 33, finish);



для затирания выведенного текста цветом фона...

Автор: GoodWind 14.10.2004 7:38

а просто bar не нарисовать, где находится буква, которую надо затереть ?

Автор: Guest 14.10.2004 14:38

Спасибо! Пробовал зделать тоже самое - но через TextColor - А он разумееться не работал ))))

2 GoodWind Бар то под текстом будет

Автор: Atos 14.10.2004 16:55

А если вырезать этот кусок окна, сохранить, а после каждого вывода цифры копировать обратно?(это, кажется, GetImage делает...совсем склероз замучал) sad.gif ;)

Автор: BRS 14.10.2004 17:41

Все действительно просто через SetColor ) Просто после Delay на месте 1% Пишем 1% но черным и все