Форум программистов, компьютерный форум CyberForum.ru

Графическая реализация на С++ - C++

Восстановить пароль Регистрация
 
Siriniti
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 3
18.05.2014, 18:39     Графическая реализация на С++ #1
Добрый вечер, подскажите пожалуйста решение проблемы...есть код,который реализует графический вывод примитивных фигур. вот необходимо чтобы при перемещении мышью нарисованного квадрата он перемещался не свободно по полю, а непосредственно по координатной сетке.
C++
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
class SETKA: public FIGURE
{
   public:
   SETKA()
   {
      BTNW=60; BTNH=60; x=30; a=30; b= 30;zahvat = false;        
   }
   ~SETKA()
   {
   }
   virtual void draw(PAINTER* painter, RECT* rc)
   {
        PEN pen_black;
        BRUSH brush_fon(0x000000);
        painter->rectangle(0, 0, rc->right, rc->bottom, pen_black, brush_fon);
        PEN pen_red;
        pen_red.set_color(0xFF,00,00);
        PEN pen_blue;          
        BRUSH brush(0xFF0000);          
        pen_blue.set_color(0x00,00,0xFF);          
        painter->rectangle(a, b, a+BTNW, b+BTNH, pen_blue, brush);
          
    int i=0;int j=0; 
      for (; i<2000; i+= x)
          {
          painter->line(0, i, 2000, i, pen_red);
          };
      for (; j<2000; j+= x)
         {
         painter->line(j, 0, j, 2000, pen_red);
         };
     }
virtual bool inside(int mousea, int mouseb)        
    {           
        int left = a;           
        int right = a+BTNW;          
        int top = b;           
        int bottom = b+BTNW;           
 
        return (mousea >= left && mousea <= right) &&   (mouseb >= top && mouseb <= bottom);            
    }  
virtual void on_lbtn_down(int newa, int newb)       
    {           
        zahvat = true;        
    }
virtual void on_mousemove(int newa, int newb, bool ctrl_down)       
    {             // если CTRL нажата и мы в режиме захвата, то сохраняем новые координаты               
        if (zahvat && ctrl_down)         
        {              
            a = newa; 
            b = newb;           
        }  
    }          
 
virtual void on_lbtn_up(int newa, int newb)        
{           zahvat = false;        }      
 
 
   virtual void on_char(char ch)
{
    if (ch =='+')
   {
       if(x<100){x=x+10;a=a+10;b=b+10;BTNW=BTNW+20, BTNH=BTNH+20;};
   }
    else 
       if(ch=='-')
      {
          if(x>10) {x=x-10;a=a-10;b=b-10;BTNW=BTNW-20, BTNH=BTNH-20; };
      }
   
   }
   private:
    int BTNW; 
    int BTNH;
    int x;        
    int a;
    int b;
    bool zahvat;
};
FIGURE* create_figure()
{
   return new SETKA;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2014, 18:39     Графическая реализация на С++
Посмотрите здесь:

Графическая заставка на С C++
C++ Графическая заставка С++
Графическая библиотека C++ C++
Графическая оболочка C++
графическая оболочка C++
Графическая оболочка C++
C++ Графическая библиотека С++
Графическая задача C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 06:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru