Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
TBAPb
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 33
#1

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

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

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

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

Получить цвет пикселя точки определенного процесса (окна) - C#
Подскажите как можно по координатам определить цвет пикселя зная имя процесса и окна приложения, такое вообще возможно на C#?

Цвет пикселя в текстовый документ - C#
Здравствуйте, возникла такая задача: есть шум перлина в bmp изображении. Если цвет пикселя темнее чем (63,63,63) вернуть 1 в текстовый...

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

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

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

8
Kruds
694 / 694 / 106
Регистрация: 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 / 106
Регистрация: 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 / 106
Регистрация: 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 / 106
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 16:01
Привет! Вот еще темы с ответами:

Получить цвет пикселя монитора - C#
Привет всем, как получить цвет любого пикселя изображенного в ДАННЫЙ момент на мониторе. Bitmap myBitmap = new Bitmap(file.jpg) этот...

Получить цвет пикселя экрана - C#
Собственно по теме... Возникла потребность считать пиксель екрана(точнее его цвет), на java уже писал такое, там был класс, который...

как получить цвет каждого пикселя - C#
У меня есть картинка в PictureBox'e как можно заполучить цвет каждого пикселя что бы потом можно было снова собрать картинку?

Как быстро получить цвет пикселя с любой точки экрана - C#
Пробовал так: #region DLLImport public static extern IntPtr GetDC(IntPtr hwnd); public static...


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

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

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