Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
1

как сделать,чтобы дочерний класс отображался в picbox в любом месте по кликку мышки?

27.06.2009, 16:23. Показов 2640. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Может кто нибудь поможет...?
Нам на экзамен дана задача:
Создать проект по теме с использованием класса. Используя наследование, создать дочерний класс, имеющий отличительный признак. При создании экземпляра класса выводится изображение в объект PictureBox в точке (X,Y), размер экземпляра – A. Дочерний класс выводится по щелчку мышкой в любую точку PictureBox. Дополнительный метод «Расти» реализован с помощью полиморфизма, экземпляр основного и дочернего классов должны «расти» по-разному. Метод «Расти» активизируется с помощью полосы прокрутки (полосы прокрутки для основного и дочернего классов разные).

Основной класс мы создалиБон работает полностью,дочерний тоже создали, только вот не можем сделать чтобы дочерний класс выводился на picbox в любом месте при клике мышкой, и при этом основной рисунок не должен стираться. Помогите пожелуйста. Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2009, 16:23
Ответы с готовыми решениями:

Как отредактировать стили css, чтобы сайт отображался одинаково при любом разрешении экрана?
Прошу помощи у знающих людей! У меня сайт на ucoz, в силу недостаточного знания css не могу...

Как вывести данный класс в любом месте?
<? /* @Autor: Lonadels (vk.com/lonadelsi) @Date: 24.09.2017 @Version: 1.2 */ class...

Открытие рекламы после щелчка мышки в любом месте экрана
Добрый день! Недавно столкнулся с проблемой: Хром начал показывать рекламу везде, где только...

Как сделать, чтобы чтобы компьютер администратора отображался на вcех компьютерах сети?
на Сетевых компьютерах - чтобы компьютер администратора было во вcех компьютерах.

18
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
27.06.2009, 20:35 2
Координаты мыши есть при срабатывании события MouseDown, можно указать как верхний левый угол
1
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
27.06.2009, 21:19  [ТС] 3
Цитата Сообщение от IT-Skyline Посмотреть сообщение
Координаты мыши есть при срабатывании события MouseDown, можно указать как верхний левый угол
krab_mal = new Krabik(e.X, e.Y, Convert.ToInt32(txtA.Text),g);
вот мы указали,но не срабатывает,водимо нужно еще что то дописать
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
28.06.2009, 00:10 4
Выложите весь код.
1
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
28.06.2009, 12:57  [ТС] 5
Цитата Сообщение от Feuer Посмотреть сообщение
Выложите весь код.
Основной класс(ну тут все просто):

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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace PrKacatka
{
   public class MamaKacatka
    {
        protected int x, y, a; // доступ к переменным
        protected Graphics picGraf;// доступ к объекту Graphics 
       
 
       public MamaKacatka(int X, int Y, int A, Graphics picGraF )// присваеваем значения
            {x = X;
            y =Y;
            a = A;
            picGraf = picGraF;
            }
 
       public void KacatkaDraw()
       {
         Pen  bPen = new Pen(Color.Black);
         SolidBrush  blbrush = new SolidBrush(Color.Black);
         SolidBrush  Whitebrush = new SolidBrush(Color.White);
         SolidBrush  bluebrush = new SolidBrush(Color.Blue);
          SolidBrush pinkbrush = new SolidBrush(Color.Pink);
          SolidBrush greybrush = new SolidBrush(Color.Gray);
          picGraf.FillEllipse(blbrush, x, y+a/3, 4*a ,3*a/2);
          picGraf.FillEllipse(blbrush, x-3*a/2-a/70 ,y+a+a/70, 3 * a / 7, 3 * a / 15);
          picGraf.FillEllipse(blbrush, x-3*a/4, y+a/2, 3 * a / 5, 3 * a / 10);
 
          Pen pen_black = new Pen(Color.Black);
 
          Point[] point1 = new Point[5]// голова
            {
                new Point(x+a/2, y+a+a/5),
                new Point(x-a*3/2  , y+a+a/5),
                new Point(x-a*4/3  , y+a),
                new Point(x-a/2, y+a/2),
                new Point(x+a*2, y+a/3)
           };
          picGraf.FillPolygon(blbrush, point1);
          Point[] point2 = new Point[4]// плавник
            {   new Point(x+a*2+a/3+a/4, y+a/3+a/3),
                new Point(x+a*2+a/3, y+a/3+a/5-a/4),
                new Point(x+a*2  , y-a),
                new Point(x+a*2+a/3-a, y+a/3+a/5)
                 };
          picGraf.FillPolygon(blbrush, point2);
 
          picGraf.FillEllipse(Whitebrush, x, y+a/2 , 3 * a / 2, 3 * a / 7); // над глазом
          picGraf.FillEllipse(bluebrush, x, y+a/2+a/3, 3 * a / 8, 3 * a / 12);// глаз
          picGraf.FillEllipse(blbrush, x, y + a / 2 + a / 5 + a / 5, 3 * a / 10, 3 * a / 20);// глаз
          
          Point[] point3 = new Point[6]// рот
            {
                new Point(x, y+a+a/5),
                new Point(x -a/2, y+2*a-a/3-a/10),
                new Point(x -3*a/4, y+103*a/60-a/10),
               new Point(x -3*a/4-a/2, y+103*a/60-a/10),
                new Point(x -3*a/4-a/2-a/10, y+103*a/60-a/10-a/5),
                new Point(x -3*a/4-a/2-a/10+a/5, y+a+a/5)
           };
          picGraf.FillPolygon(pinkbrush, point3);
          
           Point[] point4 = new Point[6]// pot
            {
                new Point(x, y+a+a/5),
                new Point(x -a/2, y+2*a-a/3-a/10),
                new Point(x -3*a/4, y+103*a/60-a/10),
                new Point(x -3*a/4-a/2, y+103*a/60-a/10),
                new Point(x -3*a/4-a/2-a/10, y+103*a/60-a/10-a/5),
                new Point(x -3*a/4-a/2-a/10+a/5, y+a+a/5)
           };
          picGraf.DrawLines(bPen, point4);
 
          Point[] point5 = new Point[16] // белая грудка
            {
                new Point(x, y+a+a/5),
                new Point(x -a/2, y+2*a-a/3-a/10),
                new Point(x -3*a/4, y+103*a/60-a/10),
                new Point(x -3*a/4-a/2, y+103*a/60-a/10),
                new Point(x -3*a/4-a/2-a/10, y+103*a/60-a/10-a/5),
                new Point(x -3*a/4-a/2-a/10-a/10, y+103*a/60-a/5),
                new Point(x -3*a/4-a/2-a/10-a/10, y+106*a/60),
                new Point(x -3*a/4-a/2,y+106*a/60+a/15),
                new Point(x -3*a/4, y+106*a/60+a/6),
                new Point(x -3*a/4+a/2, y+106*a/60+a/6-a/5),
                new Point(x -3*a/4+a/2+a/4, y+106*a/60+a/6-a/5+a/6),
                new Point(x -3*a/4+a/2+a/4+a/4, y+106*a/60+a/6-a/5+a/6+a/10),
                new Point(x -3*a/4+a/2+a/4+a/4+a/2, y+106*a/60+a/6-a/5+a/6+a/10),
                new Point(x -3*a/4+a/2+a/4+a/4+a/2+a, y+106*a/60-a/5+a/6+a/10),
                new Point(x -3*a/4+a/2+a/4+a/4+a/2+a, y+106*a/60-a/5+a/10),
                new Point(x -3*a/4+a/2+a/4+a/4+a/2, y+90*a/60)};
                picGraf.FillPolygon(Whitebrush, point5);
 
 
 
                Point[] point6= new Point[19] // хвост
            {
           new Point(x+a*2+a/3+a/4, y+a/3+a/8-a/10),
           new Point(x+a*2+a/3+a/4+2*a, y+a/3+a/8-a/10+a/4),
           new Point(x+a*2+a/3+a/4+2*a+a/2, y+a/3+a/8-a/10+a/4-a/50) ,               
           new Point(x+a*2+a/3+a/4+2*a+a/2+a/2, y+a/3+a/8-a/10+a/4-a/50-a/2),
           new Point(x+a*2+a/3+2*a+a/2+a/2, y+a/3+a/8-a/10+a/4-a/50-a/2+a/4),
           new Point(x+a*2+a/3+2*a, y+a/3+a/8-a/10+a/2-a/50-a),
           new Point(x+a*2+a/3+2*a-a/4, y+a/3+a/8-a/10+a/2-a/50-a-a/2) ,               
           new Point(x+a*2+a/3+2*a-a/6, y+a/3+a/8-a/10+a/2-a/50-a-a/2-a/6),
           new Point(x+a*2+a/3+2*a-a/6+a/4, y+a/3+a/8-a/10+a/2-a/50-a-a/2-a/6+a/6),
           new Point(x+a*2+a/3+2*a-a/6+a/4+a/2, y+a/3+a/8-a/10+a/2-a/50-a-a/2-a/6+a/6+a/6),
           new Point(x+a*2+a/3+2*a-a/6+a/4+a/2+a/25, y+a/3+a/8-a/10+a/2-a/50-a-a/2+a/6+a/3) ,               
           new Point(x+a*2+a/3+2*a-a/6+a/4+a/2+a/25+a/3, y+a/3+a/8-a/10+a/2-a/50-a-a/2+a/6+a/3),
           new Point(x+a*2+a/3+2*a-a/6+a/4+a/2+a/25+a/3+a/2, y+a/3+a/8-a/10+a/2-a/50-a-a/2+a/6+a/3+a/2),
           new Point(x+a*2+a/3+2*a-a/6+a/4+a/2+a/25+a/3+a/2+a/3, y+a/3+a/8-a/10+a/2-a/50-a-a/2+a/6+a/3+a/2+a/8),
           new Point(x+a*2+a/3+2*a-a/6+a/4+a/2+a/25+a/3+a/2+a/3-a/2, y+a/3+a/8-a/10+a/2-a/50-a-a/2+a/6+a/3+a/2+a/8) ,               
           new Point(x+a*2+a/3+2*a-a/6+a/4+a/2+a/25+a/3+a/2+a/3-a/2-a/4, y+a/3+a/8-a/10+a/2-a/50-a-a/2+a/6+a/3+a/2+a/8-a/6),
           new Point(x+a*2+a/3+2*a-a/6+a/4+a/2+a/25+a/3+a/2+a/3-a/2-a/4-a/2, y+a/3+a/8-a/10+a/2-a/50-a-a/2+a/6+a/3+a/2+a/8-a/6+a/4),
           new Point(x+a*2+a/3+2*a-a/6+a/4+a/2+a/25+a/3+a/2+a/3-a/2-a/4-a/2-a, y+a/3+a/8-a/10+a/2-a/50-a-a/2+a/6+a/3+a/2+a/8-a/6+a/4+a/6),
           new Point(x+a*2+a/3+2*a-a/6+a/4+a/2+a/25+a/3+a/2+a/3-a/2-a/4-a/2-a, y+a/3+a/8-a/10+a/2-a/50-a-a/2+a/6+a/3+a/2+a/8-a/6+a/4+a/6)                
          };
                picGraf.FillPolygon(blbrush, point6);
                   
           Point[] point7 = new Point[3] // хвост
            {
                new Point(x+5*a-a/2,y-a/6),
                new Point(x+5*a-a/4+a-a/4,y-a/6+a-a/2+a/20),
                 new Point(x+5*a-a/4+a-a/4-a-a/3,y-a/6+a-a/2+a/20+a/10+a/10)
                
                
               };
                picGraf.FillPolygon(blbrush, point7);
                Point[] point8 = new Point[3] // хвост
            {
                new Point(x+5*a-a/4+a-a/4-a/4,y-a/6+a-a/2+a/20+a/20),
                new Point(x+5*a-a/4+a-a/4-a/4-a-a/2+a/4-a/6,y-a/6+a-a/2+a/20+a/20+a/2+a/6+a/6+a/8),
                 new Point(x+a*2+a/3+a/4, y+a/3+a/8-a/10)
                
                
               };
                picGraf.FillPolygon(blbrush, point8);
 
                Point[] point9 = new Point[3] // хвост
            {
                new Point(x+5*a-a/6,y+a-a/4),
                new Point(x+5*a-a/6-a/2,y+a-a/4-a/2),
                new Point(x+5*a-a/6-a/2-a/4-a/20,y+a-a/4-a/2+a/10)
                
                
               };
                picGraf.FillPolygon(blbrush, point9);
                
           Point[] point10 = new Point[4] // плавник
            {
                new Point(x+3*a,y+2*a-a/2),
                new Point(x+3*a-a+a/4,y+2*a-a/2-a/10),
                new Point(x+3*a-a+a/4+a/4,y+2*a-a/2-a/10+a/2),
                new Point(x+3*a-a+a/4+a,y+2*a-a/2-a/10+a+a/4)
                
               };
                picGraf.FillPolygon(greybrush, point10);
 
 
       }
    }
}
Дочерний класс:


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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace PrKacatka
{
   public class detkacatka: MamaKacatka
    {
           public detkacatka(int X, int Y, int A, Graphics picGraF)
           : base(X, Y, A, picGraF)
       {
           x = X;
           y = Y;
           a = A/2;
          picGraf = picGraF;
       }
           public void detkacatkaDraw()
           {
               detkacatkaDraw();
               SolidBrush Whitebrush = new SolidBrush(Color.White);
               picGraf.FillEllipse(Whitebrush, x + 2 * a, y + a, 3 * a / 4, 3 * a / 7);
           }
    }
}


Код программы:

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace PrKacatka
{
    public partial class frmKacatka : Form
    {
        Graphics picGraf;// Задает объект Graphics ъ
        MamaKacatka Kacatka;
       detkacatka detkacatka;
        
        public frmKacatka()
        {
            InitializeComponent();
        }
        public void vvod()
        {
            
            picGraf.Clear(Color.White);
            if (Kacatka != null)Kacatka.KacatkaDraw(picGraf);
            if (detkacatka != null) detkacatka.detkacatkaDraw(picGraf);
        }
        private void picKacatka_MouseDown(Object sender, MouseEventArgs e)
      
       {
          detkacatka = new detkacatka(e.X, e.Y, Convert.ToInt32(txtA.Text), picGraf);
          scb2.Enabled = true;
          scb2.Value = 0;
          vvod();
        }
        private void btnClean_Click(object sender, EventArgs e)
        {
            SolidBrush sb = new SolidBrush(Color.Aqua);// объявляем новую кисть
            picGraf.FillRectangle(sb, 0, 0, picKacatka.Width, picKacatka.Height);// закрашиваем прямоугольник размером в picKacatka
            picGraf.Clear(Color.White);
            Kacatka = null;
            detkacatka = null;
            scb1.Enabled = false;
            scb2.Enabled = false;
        }
 
 
 
        private void btnExit_Click_1(object sender, EventArgs e)
        {
            Close();// закрытие программы
        }
 
        private void frmKacatka_Load_1(object sender, EventArgs e)
        {
            picGraf = picKacatka.CreateGraphics();// выводит на форму
        }
 
        private void btnExit_Click(object sender, EventArgs e)
        {
            Close();
        }
 
        private void btnRun_Click(object sender, EventArgs e)
        {
         Kacatka = new MamaKacatka(Convert.ToInt32(txtX.Text), Convert.ToInt32(txtY.Text), Convert.ToInt32(txtA.Text), picGraf);
         Kacatka.KacatkaDraw();
         scb1.Enabled = true;
         scb1.Value = 0;
         vvod();
        }
 
        private void picKacatka_Click(object sender, EventArgs e)
        {
 
        } 
    }
}
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
28.06.2009, 18:24 6
У Вас ошибка в методе отрисовки потомка:
C#
1
2
3
4
5
6
public void detkacatkaDraw()
{
detkacatkaDraw();
SolidBrush Whitebrush = new SolidBrush(Color.White);
picGraf.FillEllipse(Whitebrush, x + 2 * a, y + a, 3 * a / 4, 3 * a / 7);
}
Во-первых у вас здесь метод вызывает сам себя - бесконечная рекурсия и как следствие переполнение стека. Ну и кисть для рисования сделайте не белой(вы же заливаете заранее фон белым и белая фигура будет не видна).
C#
1
2
3
4
public void detkacatkaDraw() {
SolidBrush Whitebrush = new SolidBrush(Color.Black);
picGraf.FillEllipse(Whitebrush, x + 2 * a, y + a, 3 * a / 4, 3 * a / 7);
}
П.С. Отрисовка родителя вселяет ужас. Неужели вас заставили выполнять отрисовку вручную(по точкам)??
1
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
28.06.2009, 23:00  [ТС] 7
Цитата Сообщение от Feuer Посмотреть сообщение
У Вас ошибка в методе отрисовки потомка:
C#
1
2
3
4
5
6
public void detkacatkaDraw()
{
detkacatkaDraw();
SolidBrush Whitebrush = new SolidBrush(Color.White);
picGraf.FillEllipse(Whitebrush, x + 2 * a, y + a, 3 * a / 4, 3 * a / 7);
}
Во-первых у вас здесь метод вызывает сам себя - бесконечная рекурсия и как следствие переполнение стека. Ну и кисть для рисования сделайте не белой(вы же заливаете заранее фон белым и белая фигура будет не видна).
C#
1
2
3
4
public void detkacatkaDraw() {
SolidBrush Whitebrush = new SolidBrush(Color.Black);
picGraf.FillEllipse(Whitebrush, x + 2 * a, y + a, 3 * a / 4, 3 * a / 7);
}
П.С. Отрисовка родителя вселяет ужас. Неужели вас заставили выполнять отрисовку вручную(по точкам)??
Спасибо за подсказку))
Знаете нас вообще ничего не заставляли,выдали,сказали написать программу,курсовую по ней и защититься, а я,очень плохо разбираюсь в си шарпе,поэтому понятия не имею,как по другому все это делается, я бы могла конечно списать откуда нить,но мне потом тогда не защититься будет....
не подскажешь тогда, какой другой способ?
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
29.06.2009, 00:12 8
Вы можете отрисовывать на PictureBox'e готовое изображение.
К примеру у Вас есть файл с изображением по адресу "D:\image.bmp" и вы хотите его нарисовать:
C#
1
2
Image img = new Bitmap(@"D:\image.bmp");
g.DrawImage(img, 10, 10, 150, 150);
Где g - объект Graphics. DrawImage() существует в различных версиях, в данной указывается изображение, координаты, ширина и высота. подробнее в MSDN - http://msdn.microsoft.com/ru-r... image.aspx

Ещё могу порекомендовать вместо создания переменных под кисти: SolidBrush blbrush = new SolidBrush(Color.Black) и т.д. воспользоваться классом Brushes, он предоставляет набор кистей основных цветов. К примеру:
C#
1
g.FillRectangle(Brushes.Red, new Rectangle(50, 50, 200, 100));
1
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
29.06.2009, 10:24  [ТС] 9
Спасибо большое за подсказки.
Не мог бы ты объяснить что это такое есть: «Расти» реализован с помощью полиморфизма. Особенно полиморфизм, как сюда применить

Добавлено через 43 минуты 58 секунд
F? еще хотела спросить, вот если я сделаю рисунок с помощью этого метода,который ты мне показал,(он будет находиться у меня в основном классе).а когда я сделаю от него дочерний класс,я смогу к нему пририсовать отличительный признак,например пятно белое?
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
29.06.2009, 20:48 10
Цитата Сообщение от Aniritake Посмотреть сообщение
Спасибо большое за подсказки.
Не мог бы ты объяснить что это такое есть: «Расти» реализован с помощью полиморфизма. Особенно полиморфизм, как сюда применить
Ну, думаю, просто нужно создать в родительском классе виртуальный метод который увеличивал бы габаритные размеры на определенный коэффициент, ну а в дочернем переопределить его и увеличивать на, скажем, больший коэффициент.

Цитата Сообщение от Aniritake Посмотреть сообщение
Добавлено через 43 минуты 58 секунд
F? еще хотела спросить, вот если я сделаю рисунок с помощью этого метода,который ты мне показал,(он будет находиться у меня в основном классе).а когда я сделаю от него дочерний класс,я смогу к нему пририсовать отличительный признак,например пятно белое?
Сможешь. Есть метод Graphics.FromImage(Image img) - передай туда унаследованное изображение и на полученном объекте нарисуй что-нибудь (g.Draw...), ну и объект соответственно изменится.
1
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
30.06.2009, 18:12  [ТС] 11
Можешь еще посмотреть:

код программы:

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
namespace PrKacatka
{
    public partial class frmKacatka : Form
    {
        Graphics picGraf;// Задает объект Graphics ъ
        Kas Kacatka; //родитель
        det det; // дочерний
        public frmKacatka()
        {
            InitializeComponent();
            picGraf = picKacatka.CreateGraphics();// выводит на форму
        }
        public void vvod()
        {
            picGraf.Clear(Color.White);
            if (Kacatka != null) Kacatka.Draw(picGraf); // что такое  null без понятия
            if (det != null) det.Draw(picGraf);
 
 
        }
        private void btnExit_Click(object sender, EventArgs e)
        {
            Close();
        }
 
        private void btnClean_Click(object sender, EventArgs e)
        {
            picGraf.Clear(Color.White);
            Kacatka = null;
            det = null;
            scb1.Enabled = false;
            scb2.Enabled = false;
        }
 
        private void btnRun_Click(object sender, EventArgs e)
        {
            Kacatka = new Kas(Convert.ToInt32(txtX.Text), Convert.ToInt32(txtY.Text), Convert.ToInt32(txtA.Text), picGraf);
            scb1.Enabled = true;
            scb1.Value = 0;
            vvod();
        }
 
 
        private void picKacatka_MouseDown(object sender, MouseEventArgs e)
        {
            det = new det(e.X, e.Y, Convert.ToInt32(txtA.Text), picGraf);
           
            scb2.Enabled = true;
            scb2.Value = 0;
            vvod();
        }
 
        private void scb1_Scroll(object sender, ScrollEventArgs e)
        {
 
            Kacatka.Rasti(scb1.Value);
            vvod();
        }
 
        private void scb2_Scroll(object sender, ScrollEventArgs e)
        {
            det.Rasti(scb1.Value);
            vvod();
        }
 
      
 
      
 
 
     
    }
}
У меня такой код, в свойствах picbox(Events) я прописала picKacatka_MouseDown
но у меня не срабатывает, ни рисунок по клику не появляется,ни увеличиваюстя,хотя для скроллбаров я в свойствах(Events) тоже прописала scb1_Scroll.

A в дочернем классе прописала,как ты и сказал:

C#
1
2
3
4
5
6
7
 public void detDraw()
        {
             
            SolidBrush Whitebrush = new SolidBrush(Color.White); // это задает цвет кисти для пятна,а не очишщение фона
            picGraf.FillEllipse(Whitebrush, x + 2 * a, y + a, 3 * a / 4, 3 * a / 7);// ну и само пятно
 
        }
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
30.06.2009, 19:16 12
Прикрепи к сообщению архив с проектом.
1
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
30.06.2009, 20:20  [ТС] 13
Цитата Сообщение от Feuer Посмотреть сообщение
Прикрепи к сообщению архив с проектом.
вот http://www.rapidshare.ru/1086128
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
30.06.2009, 22:21 14
Во-первых у тебя pictureBox.Enabled равно false - обработчик не вызывается. В функции
C#
1
2
3
4
5
6
 public void vvod()
        {
            picGraf.Clear(Color.White);
            if (Kacatka != null) Kacatka.Draw(picGraf);
            if (det != null) det.Draw();
        }
ты у потомка вызываешь метод который он наследует - отрисовывается родитель. Вызывай detDraw(), а лучше сделай Draw() виртуальным и переопредели его.
По поводу увеличения и скроллбаров.. мм.. ты вызываешь метод(Rasti()), который у тебя не определен ни у родителя ни у потомка.. не знаю что и сказать.
1
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
30.06.2009, 23:30  [ТС] 15
[QUOTE=Feuer;206393]Во-первых у тебя pictureBox.Enabled равно false - обработчик не вызывается.

УРААААААААААААА...получилося,спасибо тебе огромное :*
Осталось только над увеличением голову поломать...ййуууххууу

Добавлено через 15 минут 29 секунд
Цитата Сообщение от Feuer Посмотреть сообщение
а лучше сделай Draw() виртуальным
А можно как то обойтись без виртуальных методов?
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
30.06.2009, 23:48 16
Пожалуйста. Да можно конечно, оставь как есть: вызывай для потомка detDraw(), для родителя - Draw(). Просто с полиморфизмом было бы правильней с позиции соблюдения правил ООП, но поскольку тебе результат важен можно забить, хотя если честно там делов на копейку.
1
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
01.07.2009, 20:45  [ТС] 17
Цитата Сообщение от Feuer Посмотреть сообщение
хотя если честно там делов на копейку.
Ладно попоробуем)

Добавлено через 1 час 39 минут 3 секунды
Вот в принципе и получилось, разобралась в виртуальном методе, все кликает и рисует

*пыхчу над увеличением*

Добавлено через 5 минут 4 секунды
Цитата Сообщение от Feuer Посмотреть сообщение
ты вызываешь метод(Rasti()), который у тебя не определен ни у родителя ни у потомка.. не знаю что и сказать.
Может тогда скажешь как это вообще можно определить, или как это задается,свойство какое то или как то формулой(это на счет увеличения scrollbarом)
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
01.07.2009, 21:41 18
В твоем случае все просто:
"Расти":
C#
1
2
3
public virtual void Rasti(int val) {
    a = val;
}
Обработчик Scroll у скроллбара:
C#
1
2
3
4
private void scb1_Scroll(object sender, ScrollEventArgs e) {
    Kacatka.Rasti(scb1.Value);
    vvod();
}
Т.е. у тебя в общем-то все правильно было, просто самого метода роста не было.. Ну и у потомка переопредели его каким-то уникальным образом, скажем, a = val*2 там.. или что по-оригинальней.
1
1 / 1 / 0
Регистрация: 27.06.2009
Сообщений: 65
02.07.2009, 11:07  [ТС] 19
Feuer, и откуда ты такой умный взялся

и чтобыя без тебя делала *SCRATCH*.....
P.S. thanks
0
02.07.2009, 11:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2009, 11:07
Помогаю со студенческими работами здесь

Гугл хром делает редирект по клику мышки в любом месте браузера, чаще всего казино
Доброго времени суток! Прошу помощи. В компьютере очень мало понимаю. Недавно стали открываться...

Как сделать, чтобы в TextBox не отображался курсор?
Добрый день. Как сделать так, чтобы в TextBox не отображался курсор?

Как сделать чтобы отображался массив из объектов?
Вот сам код. public class ArrayTest { public static void main(String args) { Clinic1 clinic...

Как сделать чтобы лист Excel отображался на форме
как сделать чтобы таблица Excel отображалась на форме и в ней можно было изменять значения, которые...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru