Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
BARSs
2 / 2 / 2
Регистрация: 12.05.2010
Сообщений: 57
#1

Залить только фигуры в схеме, а заливается весь экран - Turbo Pascal

20.02.2011, 17:04. Просмотров 1613. Ответов 10
Метки нет (Все метки)

что в программе не так? нужно залить только фигуры в схеме, а заливается весь экран...

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
program Lab071;                                                               
Uses Graph;                                                                  
                                                                              
Var grDriver : Integer;                                                       
      grMode : Integer;                                                       
     ErrCode : Integer;                                                       
    x,y:integer;                                                             
     MK:real;                                                                 
     const Strelka:FillPatternType = ($00,$1E,$06,$0A,$12,$20,$40,$80);                                                                                     
      Procedure BloKCxeMa(x,y:integer;MK:real);                               
     Begin                                                                  
                                                                              
        setfillstyle(12,14);                                                  
       setfillpattern(Strelka,14);                                           
        floodfill(x,y,round(MK*15));                                       
                                                                              
        circle(x,y,round(MK*15));                                             
        Outtextxy(x-round(MK*5),y-round(MK*5),'H');                           
        line(x+round(MK*15),y,x+round(MK*40),y);                              
        line(x+round(MK*40),y,x+round(MK*37),y-round(MK*3));                  
        line(x+round(MK*40),y,x+round(MK*37),y+round(MK*3));                  
        rectangle(x+round(MK*40),y+round(MK*10),x+round(MK*80),y-round(MK*10));
        Outtextxy(x+round(MK*42),y-round(MK*4),'DIGIT');                      
        line(x+round(MK*80),y,x+round(MK*200),y);                             
        line(x+round(MK*200),y,x+round(MK*197),y-round(MK*3));                
        line(x+round(MK*200),y,x+round(MK*197),y+round(MK*3));                
        arc(x+round(MK*110),y, 90,270,round(MK*20));                          
        line(x+round(MK*90),y,x+round(MK*93),y-round(MK*3));                  
        line(x+round(MK*90),y,x+round(MK*87),y-round(MK*3));                  
        line(x+round(MK*90),y,x+round(MK*93),y+round(MK*3));                  
        line(x+round(MK*90),y,x+round(MK*87),y+round(MK*3));                  
        rectangle(x+round(MK*110),y+round(MK*10),x+round(MK*150),y+round(MK*30));
        Outtextxy(x+round(MK*111),y+round(MK*15),'DIGIT');                    
        rectangle(x+round(MK*110),y-round(MK*10),x+round(MK*150),y-round(MK*30));
        Outtextxy(x+round(MK*115),y-round(MK*22),'WORD');                     
        arc(x+round(MK*150),y,270,90,round(MK*20));                           
        line(x+round(MK*150),y-round(MK*20),x+round(MK*153),y-round(MK*23));  
        line(x+round(MK*150),y-round(MK*20),x+round(MK*153),y-round(MK*17));  
        line(x+round(MK*150),y+round(MK*20),x+round(MK*153),y+round(MK*23));  
       line(x+round(MK*150),y+round(MK*20),x+round(MK*153),y+round(MK*17));  
        circle(x+round(MK*215),y,round(MK*15));                               
        Outtextxy(x+round(MK*210),y-round(MK*5),'K');                         
       end;                                                                   
Begin                                                                         
 grDriver:=Detect;                                                            
 InitGraph(grDriver, grMode, 'C:\LANG\TP71\BGI');                             
 ErrCode:=GraphResult;                                                        
 If ErrCode = grOk Then                                                       
                                                                             
  Begin                                                                       
   write('x=');readln(x);                                                     
   write('y=');readln(y);                                                     
   write('MK=');readln(MK);                                                   
   BloKCxeMa(x,y,MK);                                                         
   ReadLn;                                                                    
   CloseGraph;                                                                
  End                                                                         
 Else WriteLn('Ошибка инициализации графики:', GraphErrorMsg(ErrCode));       
End.

http://www.cyberforum.ru/turbo-pascal/thread402581.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2011, 17:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Залить только фигуры в схеме, а заливается весь экран (Turbo Pascal):

Окно на весь экран.
Вот код: Uses Crt; Var x,y: Integer; begin ClrScr; for y := 1 to 2000...

Картинка во весь экран
Всем привет! Как в pascal поставить в программе на фон картинку с высотой и...

Нарисовать шахматную доску 6*6 на весь экран
Помогите написать программу: Нужно нарисовать шахматную доску 6*6 ( НА ВЕСЬ...

Вывод буквы по горизонтали на весь экран
Вывести на экран ,через циклы 2 задачи: извините :-|

Покройте весь экран фрагментом изображения
Помогите пожалуйста задачу, через цикл. Но можно и без него. Заранее спасибо) ...

10
Puporev
Модератор
54131 / 41764 / 28875
Регистрация: 18.05.2008
Сообщений: 98,291
20.02.2011, 18:30 #2
КА что программа должна рисовать? Что вводить нужно, каков порядок X,Y,MK?
Вроде никто никого не заливает, только стрелки какие-то...

Добавлено через 4 минуты
При заливке цвет заливки должен совпадать с цветом ограничивающих область линий, у вас линии белые, заливка желтая. Кроме того каждую фигуру нужно заливать отдельно, по координатам внутри нее.
0
BARSs
2 / 2 / 2
Регистрация: 12.05.2010
Сообщений: 57
20.02.2011, 21:17  [ТС] #3
Она рисует векторное изображение схемы... х и у опорная точка, а МК- масштабирование. а эти стрелки желтые должны быть только внутри фигур графической схемы...

Добавлено через 1 минуту
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
program Lab071;                                                               
Uses Graph;                                                                  
                                                                              
Var grDriver : Integer;                                                       
      grMode : Integer;                                                       
     ErrCode : Integer;                                                       
    x,y:integer;                                                             
     MK:real;                                                                 
     const Strelka:FillPatternType = ($00,$1E,$06,$0A,$12,$20,$40,$80);                                                                                     
      Procedure BloKCxeMa(x,y:integer;MK:real);                               
     Begin                                                                  
                                                                              
        {setfillstyle(12,14);                                                  
       setfillpattern(Strelka,14);                                           
        floodfill(x,y,round(MK*15));  }                                 
                                                                              
        circle(x,y,round(MK*15));                                             
        Outtextxy(x-round(MK*5),y-round(MK*5),'H');                           
        line(x+round(MK*15),y,x+round(MK*40),y);                              
        line(x+round(MK*40),y,x+round(MK*37),y-round(MK*3));                  
        line(x+round(MK*40),y,x+round(MK*37),y+round(MK*3));                  
        rectangle(x+round(MK*40),y+round(MK*10),x+round(MK*80),y-round(MK*10));
        Outtextxy(x+round(MK*42),y-round(MK*4),'DIGIT');                      
        line(x+round(MK*80),y,x+round(MK*200),y);                             
        line(x+round(MK*200),y,x+round(MK*197),y-round(MK*3));                
        line(x+round(MK*200),y,x+round(MK*197),y+round(MK*3));                
        arc(x+round(MK*110),y, 90,270,round(MK*20));                          
        line(x+round(MK*90),y,x+round(MK*93),y-round(MK*3));                  
        line(x+round(MK*90),y,x+round(MK*87),y-round(MK*3));                  
        line(x+round(MK*90),y,x+round(MK*93),y+round(MK*3));                  
        line(x+round(MK*90),y,x+round(MK*87),y+round(MK*3));                  
        rectangle(x+round(MK*110),y+round(MK*10),x+round(MK*150),y+round(MK*30));
        Outtextxy(x+round(MK*111),y+round(MK*15),'DIGIT');                    
        rectangle(x+round(MK*110),y-round(MK*10),x+round(MK*150),y-round(MK*30));
        Outtextxy(x+round(MK*115),y-round(MK*22),'WORD');                     
        arc(x+round(MK*150),y,270,90,round(MK*20));                           
        line(x+round(MK*150),y-round(MK*20),x+round(MK*153),y-round(MK*23));  
        line(x+round(MK*150),y-round(MK*20),x+round(MK*153),y-round(MK*17));  
        line(x+round(MK*150),y+round(MK*20),x+round(MK*153),y+round(MK*23));  
       line(x+round(MK*150),y+round(MK*20),x+round(MK*153),y+round(MK*17));  
        circle(x+round(MK*215),y,round(MK*15));                               
        Outtextxy(x+round(MK*210),y-round(MK*5),'K');                         
       end;                                                                   
Begin                                                                         
 grDriver:=Detect;                                                            
 InitGraph(grDriver, grMode, 'C:\LANG\TP71\BGI');                             
 ErrCode:=GraphResult;                                                        
 If ErrCode = grOk Then                                                       
                                                                             
  Begin                                                                       
   write('x=');readln(x);                                                     
   write('y=');readln(y);                                                     
   write('MK=');readln(MK);                                                   
   BloKCxeMa(x,y,MK);                                                         
   ReadLn;                                                                    
   CloseGraph;                                                                
  End                                                                         
 Else WriteLn('Ошибка инициализации графики:', GraphErrorMsg(ErrCode));       
End.
в данном варианте ничего не заливается... чисто рисунок.
а для х и у можно ввести значение по 100
0
Puporev
Модератор
54131 / 41764 / 28875
Регистрация: 18.05.2008
Сообщений: 98,291
20.02.2011, 21:18 #4
Цитата Сообщение от BARSs Посмотреть сообщение
только внутри фигур графической схемы.
Вот и выбирайте точки для заливки внутри каждой фигуры, а не 1 для всех и цвет линий сделайте желтым.
0
BARSs
2 / 2 / 2
Регистрация: 12.05.2010
Сообщений: 57
20.02.2011, 21:22  [ТС] #5
Цитата Сообщение от Puporev Посмотреть сообщение
Вот и выбирайте точки для заливки внутри каждой фигуры, а не 1 для всех и цвет линий сделайте желтым.
1)тоесть после задачи каждого предмета пишем новые точки?
2) а как в конце закрыть это чтобы на весь фон не расходились стрелки?
это вот разве не координаты точки? {floodfill(x,y,round(MK*15));}
0
Puporev
Модератор
54131 / 41764 / 28875
Регистрация: 18.05.2008
Сообщений: 98,291
20.02.2011, 21:27 #6
Вот я начал, закрашивает первую окружность, также сделайте остальные фигуры

Pascal
1
2
3
4
5
6
7
Procedure BloKCxeMa(x,y:integer;MK:real);                               
     Begin
        setcolor(14);
        setfillstyle(12,14);
        setfillpattern(Strelka,14);
        circle(x,y,round(MK*15));
        floodfill(x,y,14);
1
BARSs
2 / 2 / 2
Регистрация: 12.05.2010
Сообщений: 57
23.02.2011, 12:06  [ТС] #7
хм... все никак не могу доделать эту прогу... с кругом у меня проблем тоже не оказалось ни каких.... а вот с задачей координат для заливки прямоугольник ошибки выдает. как правильно задать координаты для заливки то?

Добавлено через 38 минут
и еще вопрос. в моей программе можно задавать масштаб рисунка... а как масштабировать ТЕКСТ в фигурах??
0
Puporev
Модератор
54131 / 41764 / 28875
Регистрация: 18.05.2008
Сообщений: 98,291
23.02.2011, 12:12 #8
Например
Pascal
1
2
3
4
setcolor(14);
rectangle(x+round(MK*110),y+round(MK*10),x+round(MK*150),y+round(MK*30));
setfillstyle(1,14);
floodfuill(x+round(MK*110)+2,y+round(MK*10)+2,14);//нужно чтобы точка начала заливки была внутри прямоугольника, а цвет заливки совпадал с цветом линий
Добавлено через 4 минуты
а как масштабировать ТЕКСТ в фигурах??
Только подбором размера шрифта, например
если масштаб целое число
Pascal
1
2
3
4
5
6
7
case mash of
10..20:h:=1;
21..40:h:=2;
41..60:h:=3;
else h:=4;
end;
textstile(0,0,h);
Добавлено через 1 минуту
Все числа это с потолка, нужно самому подбирать, если масштаб вещественного типа, то можно округлять
m1:=round(m);
0
BARSs
2 / 2 / 2
Регистрация: 12.05.2010
Сообщений: 57
23.02.2011, 12:29  [ТС] #9
Цитата Сообщение от Puporev Посмотреть сообщение
[PASCAL]
Только подбором размера шрифта, например
если масштаб целое число
Pascal
1
2
3
4
5
6
7
case mash of
10..20:h:=1;
21..40:h:=2;
41..60:h:=3;
else h:=4;
end;
textstile(0,0,h);
;
а "h" это что? масштаб или как?
0
Puporev
Модератор
54131 / 41764 / 28875
Регистрация: 18.05.2008
Сообщений: 98,291
23.02.2011, 13:15 #10
Там вообще-то нужно
Settextstyle(0,0,h);
h- высота шрифта...
0
BARSs
2 / 2 / 2
Регистрация: 12.05.2010
Сообщений: 57
26.02.2011, 11:56  [ТС] #11
Благодарю за помощь вот конечный, рабочий вариант программы может быть комунибудь и пригодиться
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
program Lab;
 Uses Graph;
 
Var grDriver : Integer;
      grMode : Integer;
     ErrCode : Integer;
     x,y:integer;
     MK:real;
     const Strelka:FillPatternType = ($18,$FF,$FF,$18,$18,$FF,$FF,$18);
 
      Procedure BloKCxeMa(x,y:integer;MK:real);
       Begin
        setcolor(14);
        setfillstyle(12,14);
        setfillpattern(Strelka,14);
        circle(x,y,round(MK*15));
        floodfill(x,y,14);
        setcolor(4);
        Outtextxy(x-round(MK*5),y-round(MK*5),'H');
 
        setcolor(14);
        line(x+round(MK*15),y,x+round(MK*40),y);
        line(x+round(MK*40),y,x+round(MK*37),y-round(MK*3));
        line(x+round(MK*40),y,x+round(MK*37),y+round(MK*3));
 
        setcolor(14);
        setfillstyle(12,14);
        rectangle(x+round(MK*40),y+round(MK*10),x+round(MK*80),y-round(MK*10));
        setfillstyle(12,14);
        floodfill(x+round(MK*40)+2,y+round(MK*10)-2,14);
        setcolor(4);
        Outtextxy(x+round(MK*42),y-round(MK*4),'DIGIT');
 
        setcolor(14);
        line(x+round(MK*80),y,x+round(MK*200),y);
        line(x+round(MK*200),y,x+round(MK*197),y-round(MK*3));
        line(x+round(MK*200),y,x+round(MK*197),y+round(MK*3));
        arc(x+round(MK*110),y, 90,270,round(MK*20));
        line(x+round(MK*90),y,x+round(MK*93),y-round(MK*3));
        line(x+round(MK*90),y,x+round(MK*87),y-round(MK*3));
        line(x+round(MK*90),y,x+round(MK*93),y+round(MK*3));
        line(x+round(MK*90),y,x+round(MK*87),y+round(MK*3));
 
        setcolor(14);
        rectangle(x+round(MK*110),y+round(MK*10),x+round(MK*150),y+round(MK*30));
        setfillstyle(12,14);
        floodfill(x+round(MK*110)+2,y+round(MK*10)+2,14);
        setcolor(4);
        Outtextxy(x+round(MK*111),y+round(MK*15),'DIGIT');
 
        setcolor(14);
        rectangle(x+round(MK*110),y-round(MK*10),x+round(MK*150),y-round(MK*30));
        setfillstyle(12,14);
        floodfill(x+round(MK*110)+2,y-round(MK*10)-2,14);
        setcolor(4);
        Outtextxy(x+round(MK*115),y-round(MK*22),'WORD');
 
        setcolor(14);
        arc(x+round(MK*150),y,270,90,round(MK*20));
        line(x+round(MK*150),y-round(MK*20),x+round(MK*153),y-round(MK*23));
        line(x+round(MK*150),y-round(MK*20),x+round(MK*153),y-round(MK*17));
        line(x+round(MK*150),y+round(MK*20),x+round(MK*153),y+round(MK*23));
        line(x+round(MK*150),y+round(MK*20),x+round(MK*153),y+round(MK*17));
 
        circle(x+round(MK*215),y,round(MK*15));
        setfillstyle(12,14);
        floodfill(x+round(MK*215),y,14);
        setcolor(4);
        Outtextxy(x+round(MK*210),y-round(MK*5),'K');
       end;
 Begin
  grDriver:=Detect;
  InitGraph(grDriver, grMode, 'C:\LANG\TP71\BGI');
  ErrCode:=GraphResult;
   If ErrCode = grOk Then
 
    Begin
     write('x=');readln(x);
     write('y=');readln(y);
     write('MK=');readln(MK);
     if MK<2 then
     settextstyle(0,0,1);
     if MK>2 then
     settextstyle(0,0,3);
     if MK=2 then
     settextstyle(0,0,2);
 
     BloKCxeMa(x,y,MK);
     ReadLn;
     CloseGraph;
    End
   Else WriteLn('Ошибка инициализации графики', GraphErrorMsg(ErrCode));
 End.
1
26.02.2011, 11:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2011, 11:56
Привет! Вот еще темы с решениями:

Расширить открытое окно Паскаля на весь экран
Как можно расширить открытое окно Паскаля на весь экран?

Как развернуть окно редактора во весь экран в Windows 7
Как развернуть окно редактора во весь экран в windows 7 ?

Сделать флаг России на весь экран в Turbo Pascal
Сделать флаг Россий на весь экран в Turbo Pascal

Как сделать чтобы Паскал открывался во весь экран.
Как сделать чтобы Паскал открывался во вес экран...Помогите плиз завтра...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru