Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 2
Регистрация: 02.04.2012
Сообщений: 23

Как сделать масштабирование фигуры от центра?

01.12.2012, 10:05. Показов 2374. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня масштабируется, но не от центра
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
uses Graph,CRT,IGM_TP7;
var
Driver, Mode:Integer;
x,y,z,c:integer;
d:real;
Xs,Ys:string;
k:char;
procedure arsen;
begin
Line(1,1,639,1);
Line(1,1,1,479);
Line(1,479,639,479);
Line(639,1,639,479);
 
Line(x+Round(100*d),y+Round(100*d),x+Round(200*d),y+Round(100*d));
Line(x+Round(200*d),y+Round(100*d),x+Round(300*d),y+Round(200*d));
Line(x+Round(300*d),y+Round(200*d),x+Round(400*d),y+Round(100*d));
Line(x+Round(400*d),y+Round(100*d),x+Round(500*d),y+Round(100*d));
Line(x+Round(500*d),y+Round(100*d),x+Round(300*d),y+Round(300*d));
Line(x+Round(300*d),y+Round(300*d),x+Round(100*d),y+Round(100*d));
Line(x+Round(200*d),y+Round(100*d),x+Round(300*d),y);
Line(x+Round(300*d),y,x+Round(400*d),y+Round(100*d));
end;
begin
Driver:=Detect;
InitGraph(Driver,Mode,' ');
if GraphResult <> grok then Halt(1);
x:=100;
y:=100;
d:=1;
repeat
SetColor(15);
arsen;
SetColor(0);
Str(x,Xs);
Str(y,Ys);
SetColor(5);
OutTextXY(300,150,'x='+Xs+' : y='+Ys);
k:=ReadKey;
SetColor(0);
arsen;
Str(x,Xs);
Str(y,Ys);
Setcolor(0);
OutTextXY(300,150,'x='+Xs+' : y='+Ys);
if k=#77 then x:=x+10;
if k=#75 then x:=x-10;
if k=#72 then y:=y-10;
if k=#80 then y:=y+10;
if k=#13 then z:=z+10;
if k=#8 then z:=z-10;
if x<=-100 then x:=-100;
if x>=140 then x:=140;
if y>=180 then y:=180;
if y<=2 then y:=2;
if k=#43 then d:=d+0.1;
if k=#45 then d:=d-0.1;
until k=#27;
CloseGraph;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2012, 10:05
Ответы с готовыми решениями:

"Как сделать масштабирование от центра фигуры"
uses Graph,CRT; var Driver, Mode:Integer; x,y,z,c:integer; Xs,Ys:string; k:char; begin Driver:=Detect; ...

Как делать градиентные заливки с изменением прозрачности от центра фигуры к ее краям
Доброго времени суток. Как делать градиентные заливки с изменением прозрачности от центра фигуры (эллипс, многоугольник и т.п.) к ее...

Как нарисовать след (траекторию движения центра тяжести) при параллельном переносе фигуры
Здравствуйте! Делаю лабораторную, не могу разобраться, как нарисовать след (траекторию движения центра тяжести) при параллельном переносе...

8
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
01.12.2012, 10:28
Координаты центра экрана
Pascal
1
2
x:=getmaxX div 2;
y:=getmaxY div 2;
Нужно привязать начальное положение фигуры к этим координатам.
1
0 / 0 / 2
Регистрация: 02.04.2012
Сообщений: 23
01.12.2012, 10:43  [ТС]
Вместо координат 100 поставил ваши, но он всё ровно при увеличении уходит вправо, а нужно чтоб увеличение и уменьшение происходило на месте.
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
01.12.2012, 11:12
Цитата Сообщение от Mr.Zero Посмотреть сообщение
Вместо координат 100 поставил ваши
Так нужно не просто поставить, а привязать к ним всю фигуру, чтобы она была в центре и ее центр совпадал с центром, начальные значения x,y должны быть равны 0.
0
0 / 0 / 2
Регистрация: 02.04.2012
Сообщений: 23
01.12.2012, 12:36  [ТС]
А как привязать к ним всю фигуру, чтобы она была в центре и ее центр совпадал с центром?
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
01.12.2012, 12:41
А где бы хотели видеть центр фигуры? В центре квадрата или где-то ниже? И нафига такая фигура?
0
0 / 0 / 2
Регистрация: 02.04.2012
Сообщений: 23
01.12.2012, 12:45  [ТС]
Центр ромба вполне думаю сойдёт за центр фигуры. Просто сие фигура мой вариант
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
01.12.2012, 13:27
Немного поправил, сделал центр в центре.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
uses Graph,CRT;
var
Driver, Mode:Integer;
xc,yc,x,y,z,c:integer;
d:real;
Xs,Ys:string;
k:char;
procedure arsen;
begin
Line(1,1,639,1);
Line(1,1,1,479);
Line(1,479,639,479);
Line(639,1,639,479);
line(x-round(100*d),y-50,x,y-50-round(100*d));
line(x,y-50-round(100*d),x+round(100*d),y-50);
line(x+round(100*d),y-50,x,y-50+round(100*d));
line(x,y-50+round(100*d),x-round(100*d),y-50);
line(x-round(200*d),y-50,x-round(100*d),y-50);
line(x-round(200*d),y-50,x,y-50+round(200*d));
line(x,y-50+round(200*d),x+round(200*d),y-50);
line(x+round(200*d),y-50,x+round(100*d),y-50);
end;
begin
Driver:=Detect;
InitGraph(Driver,Mode,' ');
if GraphResult <> grok then Halt(1);
x:=getmaxX div 2;
y:=getmaxY div 2;
d:=1;
repeat
SetColor(15);
arsen;
SetColor(0);
Str(x-319,Xs);
Str(y-239,Ys);
SetColor(5);
OutTextXY(10,getmaxY-30,'x='+Xs+' : y='+Ys);
k:=ReadKey;
SetColor(0);
arsen;
Str(x-319,Xs);
Str(y-239,Ys);
Setcolor(0);
OutTextXY(10,getmaxY-30,'x='+Xs+' : y='+Ys);
if k=#77 then x:=x+10;
if k=#75 then x:=x-10;
if k=#72 then y:=y-10;
if k=#80 then y:=y+10;
if k=#13 then z:=z+10;
if k=#8 then z:=z-10;
if x<=200 then x:=200;
if x>=getmaxX-200 then x:=getmaxX-200;
if y>=getmaxY-150 then y:=getmaxY-150;
if y<=150 then y:=150;
if k=#43 then d:=d+0.1;
if k=#45 then d:=d-0.1;
until k=#27;
CloseGraph;
end.
1
0 / 0 / 2
Регистрация: 02.04.2012
Сообщений: 23
01.12.2012, 14:27  [ТС]
Спасибо. Премного благодарен)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.12.2012, 14:27
Помогаю со студенческими работами здесь

Масштабирование фигуры
что тут неверно? что нужно добавить? фигура должна увеличиваться по нажатию клавиши ENTER Uses Graph,CRT; var Driver, Mode:Integer; ...

Масштабирование фигуры
Привет! Подскажите как это можно сделать? Изобразить квадрат АВСD с координатами А (30,30), В(30,50), С (50,50), D(50,30). ...

Масштабирование фигуры
Задача: Изменить размер геометрической фигуры. Описание переменных: x1, y1 – координаты верхнего левого угла прямоугольника; ...

Превращение, масштабирование и поворота фигуры.
Помогите пожалуйста с этим заданием:нужно получить эту фигуру с помощью превращений, масштабирования и поворота. Заранее благодарен

Как сделать масштабирование?
Нужно сделать так, чтобы рисунок занимал 2/3 части холста... Использую Timage


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru