1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Ну, допустим, залить-то не проблема (для этого достаточно после отрисовки круга вызвать SetFillStyle и FloodFill с координатами центра окружности и зеленым цветом в качестве границы). Но ведь у тебя программа вылетает при попытке выполнить вот эту строку:
Цитата
SetAspectRatio(GetMaxX-a*x0 div2,GetMaxY-b*y0);
Исправь сначала эту ошибку, потом будешь делать заливку...
Значит, контроль границ отключен... Не надо этого делать. В настройках компилятора (Options -> Compiler) отметь все, что находится в группе Runtime Errors, нажми Ok, перекомпилируй и запусти программу.
Не отключай никогда контроль. Лучше чуть больше времени уделить отладке, чем думать, что у тебя все в порядке, а потом попробовать запустить программу на другом компьютере, где другие настройки, и она начнет вылетать.
Добавлено через 4 мин. А вот тебе и доказательство того, что не надо закрывать глаза на ошибку, а надо ее исправлять. Берем компилятор FPC, отключаем контроль границ и контроль переполнения Integer-а, компилируем и запускаем программу. Думаешь, я вижу окружности? Ни разу. Вот, что я вижу (хотя, если закомментировать SetAspectRatio - то все в порядке, появляются окружности):
А он по умолчанию отключен (без него программы меньше по размеру и более быстрые получаются). Так вот включи контроль, и никогда, пока программа не станет полностью работоспособной, не отключай Максимум, что можно делать - это выключать проверки для того, чтобы скомпилировать релиз-версию (в смысле, окончательную и уже полностью отлаженную).
Цитата
что с этим делать?
Обходиться без SetAcpectRatio:
Program Circle3;
Uses Graph;
const
R = 185;
R2 = 190div2 - 9;
var
x0,y0: integer;
driver, regim, error: integer;
a, b: Word;
Begin
Detectgraph(driver,regim);
Initgraph(driver,regim,'');
Error:=GraphResult;
if Error <> grOK thenbegin
writeln(GraphErrorMsg(Error));
Halt(Error)
end;
GetAspectRatio(a,b);
SetLineStyle(SolidLn, 0, ThickWidth);
SetColor(LightGreen);
x0 := GetMaxX div2;
y0 := GetMaxY div2;
SetfillStyle(LineFill, Red);
FillEllipse(x0, y0, R, Trunc((a / b) * R));
SetfillStyle(HatchFill, Yellow);
FillEllipse(420, 225, R2, Trunc((a / b) * R2));
FillEllipse(260, 142, R2, Trunc((a / b) * R2));
FillEllipse(280, 353, R2, Trunc((a / b) * R2));
readln;
CloseGraph;
end.
Никаких ошибок, никаких эллипсов... Странно, правда? Рисуешь Circle (окружность) - получаешь эллипс. Рисуешь FillEllipse (заполненный эллипс) - получаешь окружность ...
А вот теперь - НЕ ВЕРЮ! (С)... Проверено на 4-х машинах, везде окружности. У тебя - эллипсы? Так не бывает. Рассказывай, какой монитор, и какой, собственно, компилятор. Запускай в режиме отладки и показывай, чему равно A и B после GetAspectRatio... Что возвращает GetMaxX, GetMaxY? Какая картинка получается? Давай больше информации. Это в конце концов что, мне надо?
Еще раз: Чему равны значения A и B после вызова GetAspectRatio, кто-нибудь мне может сказать?
У меня всегда выдает (10000:10000), то есть, "сжимать" картинку, используя полученные таким образом коэффициенты - бесполезно, соотношение будет таким же, как и без "сжатия", поэтому я попробовал заменить GetAspectRatio на конкретные значения GetMaxX и GetMaxY.
Кстати, создается впечатление, что SetAspectRatio вообще ни к чему не приводит, пытался делать
В последнем коде нету GetAspectRatio. Но вот после GetMaxX и GetMaxY переменные A и B равны 639 и 479 соответственно. Или надо было вставить GetAspectRatio?)
Сообщение отредактировано: Unconnected -
--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."