Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2009, 18:30   #11
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот два квадрата. Левый - ac=true, правый - false
Что в них не так?
Изображения
Тип файла: jpg scr4.jpg (3.9 Кб, 57 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 31.05.2009, 18:50   #12
aka_faith
Пользователь
 
Аватар для aka_faith
 
Регистрация: 15.05.2009
Сообщений: 74
По умолчанию

как ромбик сделать с похожей выпуклостью? квадратик же с правой стороны не зеленый, как ромбик, а темненький... и нет толстого контура
aka_faith вне форума Ответить с цитированием
Старый 31.05.2009, 19:07   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от aka_faith
как ромбик сделать с похожей выпуклостью?
А вариант в 6-м посте не подходит?
Цитата:
квадратик же с правой стороны не зеленый, как ромбик, а темненький.
Эмм... Так просто в блоке else измените:
Код:
setfillstyle(1,10);
Цитата:
и нет толстого контура
Это потому что вы его рисуете с помощью линий, а не как с ромбом - четырехугольником.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 31.05.2009, 19:31   #14
aka_faith
Пользователь
 
Аватар для aka_faith
 
Регистрация: 15.05.2009
Сообщений: 74
По умолчанию

а как можно написать процедурку, которая при нажатии на кнопочку увеличивала бы объемность панельки:
Код:
 procedure panel.initp;
   begin
     x1:=x00;y1:=y00;x2:=x44;y2:=y44;cz:=cz0;cl:=cl0;
    end;
  procedure panel.drawp;
    begin
      setfillstyle(1,cz);
      setlinestyle(0,2,3);setcolor(2);rectangle(x1,y1,x2,y2);
      floodfill(x1+5,y1+5,2);
     end;
...
Код:
var
  a:array[1..3] of knopka;v:array[1..3,1..3] of real;
  p,c:panel;
  chk:char;i,j,k,z:byte;
  m:byte;gd,gm:integer;tt:string;f:text;
begin
  gd:=detect;
  initgraph(gd,gm,'d:\bp\bgi');
  cleardevice;
  setbkcolor(1);
  p.initp(120,10,560,80,4,blue);
  p.drawp;
  a[1].init(140,30,190,70,15,green,false);
  a[2].init2(315,30,365,70,15,green,false);
  a[3].init(490,30,540,70,15,green,false);
  a[1].ac:=true;
  m:=1;z:=2;
     repeat
     setbkcolor(0);
     cleardevice;
     p.drawp;
     for i:=1 to 3 do
     begin
       if m=i then a[i].ac:=true
          else a[i].ac:=false;
       if (i=1) or (i=3) then a[i].draw1
           else a[i].draw2;
      end;
  chk:=readkey;
  case chk of
#77:if (m=4) then m:=1 else m:=m+1;
#75:if (m=1) then m:=4 else m:=m-1;
#13:begin if (m=1) or (m=3) then a[m].draw_dawn
         else a[m].draw_up;
case m of
1:begin {должна увеличивать объем}
   cleardevice;
   setbkcolor(1);
   p.initp(120,10,560,80,4,blue);
   p.drawp;
   a[1].init(140,30,190,70,15,green,false);
   a[2].init2(315,30,365,70,15,green,false);
   a[3].init(490,30,540,70,15,green,false);
   a[1].ac:=true;m:=1;
   end;
??
aka_faith вне форума Ответить с цитированием
Старый 31.05.2009, 19:56   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

aka_faith, по этим кускам кода сложно восстановить общую картину.
Нужно полное описание объекта.
Иначе непонятно, что там за переменные.
Цитата:
Сообщение от aka_faith
а как можно написать процедурку, которая при нажатии на кнопочку увеличивала бы объемность панельки:
Панелька и кнопочка - разные вещи?
Если у вас объемность создается с помощью наложения 3-х фигур со смещением, то достаточно, наверное, уменьшить центральную (при этом панель станет как бы выше).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.06.2009, 02:00   #16
aka_faith
Пользователь
 
Аватар для aka_faith
 
Регистрация: 15.05.2009
Сообщений: 74
По умолчанию

у меня опять трабл!! горе- программист я, забрать компиляторы у меня надо, но вот то, что я намучала выглядит не очень эстетично, особенно увеличенный объем панели. Подскажите, что необходимо еще поменять для нормального восприятия глазами этой графики??
aka_faith вне форума Ответить с цитированием
Старый 05.06.2009, 02:01   #17
aka_faith
Пользователь
 
Аватар для aka_faith
 
Регистрация: 15.05.2009
Сообщений: 74
По умолчанию

вот ЭТО творение:
Код:
uses crt,graph;
type

knopka=object {кнопки в виде объекта}
  cz,cl,w,h,x1,y1,r1,r2,x2,y2,www,rrr:integer;ac:boolean;
  procedure init(x0,y0,x4,y4,cli,cza:integer;act:boolean);
  procedure init2(x0,y0,x4,y4,cli,cza:integer;act:boolean);
  procedure draw1;
  procedure draw2;
  end;
panel=object(knopka) {панель в виде наследника кнопки}
  procedure initp(ww,rr,x00,y00,x44,y44,cl0,cz0:integer);
  procedure drawp;
  end;

  procedure knopka.init;
    begin
      x1:=x0;y1:=y0;x2:=x4;y2:=y4;cl:=cli;cz:=cza;ac:=act;
    end;
  procedure knopka.init2;
    begin
      x1:=x0;y1:=y0;x2:=x4;y2:=y4;cz:=cza;cl:=cli;act:=ac;
    end;
  procedure knopka.draw1; {моя кнопо4ка-квадрат}
    begin
      setcolor(2);
      if ac=true then begin
        setfillstyle(1,8);
        setcolor(7);line(x1-4,y1-3,x2+5,y1-3);line(x1-4,y1-3,x1-4,y2+3);
        setcolor(0);line(x1-4,y2+3,x2+4,y2+3);line(x2+4,y1-3,x2+4,y2+3);

        bar(x1-2,y1-1,x2+2,y2+1);
      end
      else  begin
        setfillstyle(1,2);
        setcolor(7);line(x1-4,y1-3,x2+5,y1-3);line(x1-4,y1-3,x1-4,y2+3);
        setcolor(0);line(x1-4,y2+3,x2+4,y2+3);line(x2+4,y1-3,x2+4,y2+3);
        bar(x1-2,y1-1,x2+2,y2+1);
      end;
  delay(5000);
    end;

  procedure knopka.draw2;{а вот тут кнопка-ромб}
  var
  t:array[1..4] of pointtype;
    begin
      if ac=true then begin

        setcolor(7);
        t[1].x:=x1-3; t[1].y:=y1+round((y2-y1)/2);
        t[2].x:=x1+round((x2-x1)/2); t[2].y:=y1-3;
        t[3].x:=x2-3; t[3].y:=y1+round((y2-y1)/2);
        t[4].x:=x1+round((x2-x1)/2); t[4].y:=y2+3;
        fillpoly(4,t);
        setfillstyle(1,0);

        setcolor(0);
        t[1].x:=x1+3; t[1].y:=y1+round((y2-y1)/2);
        t[2].x:=x1+round((x2-x1)/2)+3; t[2].y:=y1-3;
        t[3].x:=x2+3; t[3].y:=y1+round((y2-y1)/2);
        t[4].x:=x1+round((x2-x1)/2)+3; t[4].y:=y2+3;
        fillpoly(4,t);
        setfillstyle(1,8);

        setcolor(8);
        t[1].x:=x1; t[1].y:=y1+round((y2-y1)/2);
        t[2].x:=x1+round((x2-x1)/2); t[2].y:=y1;
        t[3].x:=x2; t[3].y:=y1+round((y2-y1)/2);
        t[4].x:=x1+round((x2-x1)/2); t[4].y:=y2;
        fillpoly(4,t);
        setfillstyle(1,8);

      end

      else begin

        setcolor(7);
        t[1].x:=x1-3; t[1].y:=y1+round((y2-y1)/2);
        t[2].x:=x1+round((x2-x1)/2); t[2].y:=y1-3;
        t[3].x:=x2-3; t[3].y:=y1+round((y2-y1)/2);
        t[4].x:=x1+round((x2-x1)/2); t[4].y:=y2+3;
        fillpoly(4,t);
        setfillstyle(1,0);

        setcolor(0);
        t[1].x:=x1+3; t[1].y:=y1+round((y2-y1)/2);
        t[2].x:=x1+round((x2-x1)/2)+3; t[2].y:=y1-3;
        t[3].x:=x2+3; t[3].y:=y1+round((y2-y1)/2);
        t[4].x:=x1+round((x2-x1)/2)+3; t[4].y:=y2+3;
        fillpoly(4,t);
        setfillstyle(1,2);

        setcolor(2);
        t[1].x:=x1; t[1].y:=y1+round((y2-y1)/2);
        t[2].x:=x1+round((x2-x1)/2); t[2].y:=y1;
        t[3].x:=x2; t[3].y:=y1+round((y2-y1)/2);
        t[4].x:=x1+round((x2-x1)/2); t[4].y:=y2;
        fillpoly(4,t);
        setfillstyle(1,2);

      end ;
  delay(5000);
    end;



  procedure panel.initp;
    begin
      x1:=x00;y1:=y00;x2:=x44;y2:=y44;cz:=cz0;cl:=cl0;www:=ww;rrr:=rr;
    end;

  procedure panel.drawp; {т.к. панель должна увеличивать объем, то свет и тень я нарисовала прямоугольниками, выходящими за главную синюю панель}
    begin
      setfillstyle(1,8);  bar(x1-rrr,y1-www,x2+rrr,y2+www);
      setfillstyle(1,7);  bar(x1-rrr,y1-www,x2,y2);
      setfillstyle(1,cz); bar(x1,y1,x2,y2);
    end;
aka_faith вне форума Ответить с цитированием
Старый 05.06.2009, 02:01   #18
aka_faith
Пользователь
 
Аватар для aka_faith
 
Регистрация: 15.05.2009
Сообщений: 74
По умолчанию

Код:
var
  a:array[1..3] of knopka;v:array[1..3,1..3] of real;
  p,c:panel;
  chk:char;i,j,k,z:byte;
  m:byte;gd,gm:integer;tt:string;f:text;
begin
  gd:=detect;
  initgraph(gd,gm,'d:\bp\bgi');
  cleardevice;
  setbkcolor(1);
  p.initp(3,4,120,10,560,80,4,blue);
  p.drawp;
  a[1].init(140,30,190,70,15,green,false);
  a[2].init2(315,30,365,70,15,green,false);
  a[3].init(490,30,540,70,15,green,false);
  a[1].ac:=true;
  m:=1;z:=2;
     repeat
     setbkcolor(0);
     cleardevice;
     p.drawp;
     for i:=1 to 3 do
     begin
       if m=i then a[i].ac:=true
          else a[i].ac:=false;
       if (i=1) or (i=3) then a[i].draw1
           else a[i].draw2;
      end;
  chk:=readkey;
  case chk of
#77:if m=3 then m:=1 else m:=m+1;
#75:if m=1 then m:=3 else m:=m-1;
#13:case m of

1:begin {увеличивает объем}
   if (z mod 2)=0 then
   begin
   p.initp(10,11,120,10,560,80,4,blue);
   p.drawp;
   z:=z+1;
   end
  else
  begin
  p.initp(3,4,120,10,560,80,4,blue);
  p.drawp;
  z:=z+1;
  end;end;

2:begin{открывает файл с заданием}
   c.initp(3,4,120,120,560,250,4,blue);
   c.drawp;
   assign(f,'d:\1.txt');
   reset(f);j:=0;
   while not eof(f) do
     begin
     readln(f,tt);outtextxy(150,150+j,tt);
     j:=j+10;
     end;
   close(f);
   readkey;
   end;

3:begin {разварачивает}
   if (z mod 2)=0 then
   begin
   p.initp(3,4,1,1,639,479,4,blue);
   p.drawp;
   z:=z+1;
   end
  else
  begin
  p.initp(3,4,120,10,560,80,4,blue);
  p.drawp;
  z:=z+1;
  end;end;
end;
end;
until chk=#27;end.
aka_faith вне форума Ответить с цитированием
Старый 05.06.2009, 13:45   #19
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Подскажите, что необходимо еще поменять для нормального восприятия глазами этой графики??
Мне лично ромб не очень нравится.. Какой-то он кривоватый из-за черной тени справа. Сделать бы ее по-ровнее, что-ли..
Светлую полосу (справа от панели) можно попробовать удлиннить на 3-4 пикселя, чтобы она перекрывала более темную..

Я так понял, что этой штукой можно как-то управлять, но у меня ничего не вышло (
Просто каждые 5 секунд появляются фигуры. А когда появляются все три, то 2 исчезают. Вот.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.06.2009, 02:57   #20
aka_faith
Пользователь
 
Аватар для aka_faith
 
Регистрация: 15.05.2009
Сообщений: 74
По умолчанию

хм, компиляторы у нас точно разные... но я сдала это творение на затемненном экране ноута в жуткую жару и на 5 паре, так что всем понравилось))) ^_- ^_-

спасибо за помощь
aka_faith вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выаод из DBGrid в EXcel (странный способ) Girl БД в Delphi 1 02.04.2009 08:47
Странный тип Yuran Общие вопросы Delphi 4 10.06.2008 10:11
Странный скрипт на страницах моих сайтов! Lx62GjVWZQJFjPD JavaScript, Ajax 5 29.03.2008 17:22
Странный, не стандартный файл valerij Microsoft Office Excel 4 26.03.2008 12:24