Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
TBAPb
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 33
#1

Получить цвет пикселя на форме

25.04.2013, 11:55. Просмотров 1882. Ответов 8
Метки нет (Все метки)

Добрый день. Столкнулся не которыми проблемами. Суть такова: есть некий объект на форме который должен двигаться на форме по строго заданному коридору, стенки этого коридора нарисованы красными линиями. Я хочу что бы объект по пути своего движения "прощупывал" путь вперед на несколько пикселей и как только натыкался на красный пиксель корректировал траекторию своего движения. Проблема в том что я ни как не могу найти метода что бы узнать цвет пикселя на форме. Подскажите. пожалуйста, где копать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2013, 11:55
Ответы с готовыми решениями:

Получить цвет пикселя пикчербокса
Как вы уже догадались, мне нужно получить цвет пикселя под курсором, да не...

Получить цвет пикселя на pictureBox
Рисую на pictureBox стандартные линии, фигуры... Как определить цвет...

Получить цвет пикселя точки определенного процесса (окна)
Подскажите как можно по координатам определить цвет пикселя зная имя процесса и...

Цвет пикселя в текстовый документ
Здравствуйте, возникла такая задача: есть шум перлина в bmp изображении. Если...

Определить цвет пикселя на экране по координатам
Есть задача: Каждые полсекунды нужно определять цвет с экрана по координатам....

8
Kruds
694 / 694 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
Завершенные тесты: 1
25.04.2013, 12:16 #2
Если вы рисуете к примеру в панели, то карта как ни крути у вас статическая, закиньте ее в бэкграунд панели и можете смотреть цвета как описано здесь.
1
TBAPb
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 33
25.04.2013, 12:29  [ТС] #3
То есть я создаю pictureBox закидываю в него карту а потом из bitmap с помощью getpixel получай цвет?
0
Kruds
694 / 694 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
Завершенные тесты: 1
25.04.2013, 12:38 #4
Ну да, рисуете в битмап карту, ставите ее фоном picturebox'а, а отрисовку мобов ведете непосредственно в picturebox, где на каждом тике моб сканит пиксели с фона.
1
TBAPb
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 33
25.04.2013, 13:53  [ТС] #5
Понял. Огромное спасибо.

Добавлено через 42 минуты
Сделал так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   this.Controls.Clear();
        Button addTowerButton = new Button();
        addTowerButton.Text = "Add tower";
        addTowerButton.Top = 300;
        addTowerButton.Left = 50;
        addTowerButton.Width = 100;
        addTowerButton.Height = 25;
        this.Controls.Add(addTowerButton);
        myPictureBox.Size=new Size(400,200);
        myPictureBox.BackgroundImage = new Bitmap("C:/pass.bmp");
        this.Controls.Add(myPictureBox);
        g = myPictureBox.CreateGraphics();
        Pen pen = new Pen(new SolidBrush(Color.Green));
        g.DrawEllipse(pen, 100, 100, 10, 10);
но почему то все равно не рисует. Что я делаю не так?
0
Kruds
694 / 694 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
Завершенные тесты: 1
25.04.2013, 14:06 #6
Вытащите все функции рисования из конструктора формы и вставьте их в метод paint.
1
TBAPb
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 33
25.04.2013, 14:55  [ТС] #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
    public void startButton_Click(object sender, EventArgs e)
    {
        this.Controls.Clear();
        Button addTowerButton = new Button();
        addTowerButton.Text = "Add tower";
        addTowerButton.Top = 300;
        addTowerButton.Left = 50;
        addTowerButton.Width = 100;
        addTowerButton.Height = 25;
        this.Controls.Add(addTowerButton);
      
        myPictureBox.Size=new Size(400,200);
        myPictureBox.BackgroundImage = new Bitmap("C:/pass.bmp");
        myPictureBox.Paint += new System.Windows.Forms.PaintEventHandler(this.myPictureBox_Paint);
        this.Controls.Add(myPictureBox);
    }
    public void myPictureBox_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
        // Create a local version of the graphics object for the PictureBox.
        Graphics g = e.Graphics;
        Pen pen = new Pen(new SolidBrush(Color.Black));
        g.DrawEllipse(pen, ogr.X, ogr.Y, 10, 10);    
    }
}
Добавлено через 19 минут
Только теперь он рисует один круг, а как теперь прикрутить что бы при движении объекта на его месте рисовался круг? Пробовал так

C#
1
2
3
4
5
6
7
8
9
10
11
12
  private  void myTimer_Tick(object sender, EventArgs e)
    {
        if (ogr.X < 350)
        {
            ogr.Move();
            this.myPictureBox_Paint();
        }
        else
        {
            myTimer.Stop();
        } 
    }

но ругается: Ни одна из перегрузок метода "myPictureBox_Paint" не принимает "0" аргументов
0
Kruds
694 / 694 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
Завершенные тесты: 1
25.04.2013, 15:39 #8
Вместо this.myPictureBox_Paint(); - pictureBox1.Refresh();
1
TBAPb
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 33
25.04.2013, 16:01  [ТС] #9
Заработало. Огромнейшее спасибо за то что возитесь со мной.
0
25.04.2013, 16:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 16:01

Как узнать цвет пикселя на мониторе
Привет всем. Задумал реализовать некую программу для автоматизации, а вся...

Как определить цвет пикселя в координате?
Как определить цвет пикселя в координате на рабочем столе?

Как извлечь зелёный цвет пикселя битмапа
Доброго времени суток! Есть такая делема: Переписать из заданного битмапа(не...


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

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

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