2014-11-12 4 views
1

Существует круг, сделанный с помощью метода холста MainForm -> Canvas -> Ellipse(350,100,550,300). Вопрос состоит в том, чтобы изменить размер холста, нажав кнопки «+» или «-». Есть ли какие-нибудь методы?Изменение размера холста щелчком

+0

Borland C++ !? Havent видел это годами :) –

+0

@ViktorSehr это «современное» образование в нашей стране :) – DNilla

+0

В какой стране это? –

ответ

0

для изменения размера эллипса:

  1. создать какие-то глобальные или члены Форма переменные:

    • int x0=350,y0=100,x1=550,y1=300;
    • это имеет параметры эллипса
  2. создать некоторую функцию отрисовки (элемент для формирования или нет)

    • , например:

      void draw(TCanvas *scr) 
      { 
      scr->Pen->Color=clWhite; 
      scr->Brush->Color=clBlack; 
      scr->FillRect(TRect(0,0,MainForm->ClientWidth,MainForm->ClientHeight)); 
      scr->Brush->Color=clBlue; 
      scr->Ellipse(x0,y0,x1,y1); 
      } 
      
    • создавать события на изменение размеров и на краске для основной формы и добавить дро (Canvas); звоните в будке

    • , который будет перекрашивать свою форму при необходимости
  3. создать на (мыши) выберите событие

    • внутри вы вызывая переменные X,Y,Shift удерживающие состояние мыши
    • так просто добавить это к нему
    • x1=X; y1=Y; draw(Canvas);

Это все ... надеюсь, что я не сделал какой-то опечатка (писал по памяти непосредственно здесь)

Если вам необходимо изменить размер формы, то:

  • вместо x1=X, y1=Y; сделать
  • ClientWidth=X+32; ClientHeight=Y+32;
  • или использовать SetBounds(Left,Top,X+32,Y+32);
  • +32 - это область изменения размера, чтобы вы могли также увеличить ...

[edit1] скучал кнопки +/- (я предполагал мыши изменить размер), так вот кнопки

  1. создать на + события нажатия кнопки:

    • оставить существующий код как есть и добавить к этому коду события

      int cx=(x0+x1)>>1,ax=(x1-cx); ax+=16; x0=cx-ax; x1=cx+ax; 
      int cy=(y0+y1)>>1,ay=(y1+cy); ay+=16; y0=cy-ay; y1=cy+ay; draw(Canvas); 
      
    • , что увеличит стенд полуприцепы осях по 16 на каждый клик

  2. создать на кнопку - кликните событие:

    • код похож на +

      int cx=(x0+x1)>>1,ax=(x1-cx); ax-=16; if (ax<1) ax=1; x0=cx-ax; x1=cx+ax; 
      int cy=(y0+y1)>>1,ay=(y1+cy); ay-=16; if (ay<1) ay=1; y0=cy-ay; y1=cy+ay; draw(Canvas); 
      
    • который будет сжимать полуоси кабины на 16 при каждом щелчке и останавливаться по размеру 1

если вам нужна форма, чтобы изменить размер затем адаптировать код выше ... как в примере на события мыши