Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цвет пикселя. 
:(
    Опции темы
Хоббит
Дата 15.11.2005, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Имеется картинка (Image) ... нужно получить цвет пикселя с кординатами X Y .... что то не нашел такого метода ни в этом обьекте нив обьекте panel // ни где еще ..... Кто знает как?
PM MAIL   Вверх
stab
Дата 16.11.2005, 04:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



У Image нет таких возможностей, есть у Bitmap, Bitmap.GetPixel(). Я так понимаю ты используешь PictureBox.Image , тогда попробуй так:

Код

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    BackColor = ((Bitmap) pictureBox1.Image).GetPixel(e.X, e.Y);
}



--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
mr.DUDA
Дата 16.11.2005, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Добавлю, что если требуется считывать более чем один пиксел, и часто, тогда GetPixel - не самый лучший вариант; выгоднее прочитать всю картинку в массив и работать с массивом, чем с GDI+. Пример:
Код
using System;
using System.Drawing;
using System.Drawing.Imaging;

namespace ConsoleApplication1
{
    class Class1
    {
        static void Main(string[] args)
        {
            string filePath = args[0];
            Bitmap bmp = (Bitmap)Bitmap.FromFile(filePath);
            int W = bmp.Width, H = bmp.Height;

            Color[,] array = new Color[H, W];

            BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, W, H), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
            IntPtr ptr = bmpData.Scan0;
            byte[] rgbValues = new byte[W*H*4];
            System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, rgbValues.Length);
            bmp.UnlockBits(bmpData);
                
            int counter = 0;
            for (int i=0; i<H; i++)
                for (int j=0; j<W; j++, counter+=4)
                    array[i, j] = Color.FromArgb(rgbValues[counter], rgbValues[counter+1], rgbValues[counter+2]);
        }
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
Хоббит
Дата 16.11.2005, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



проблему решил сам .... Спасибо а то что полсказали как пееписать это в массив ...
а все же можно ли вывести одну точку не в Image а сразу на экран?
Добавлено @ 10:28
проблему решил сам .... Спасибо а то что полсказали как пееписать это в массив ...
а все же можно ли вывести одну точку не в Image а сразу на экран?
PM MAIL   Вверх
mr.DUDA
Дата 16.11.2005, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата
а все же можно ли вывести одну точку не в Image а сразу на экран?

По идее, как-то можно, поигравшись с HDC, Graphics и GetDC(null), но как именно - не скажу т.к. не проверял.


--------------------
user posted image
PM MAIL WWW   Вверх
-ser-
Дата 17.11.2005, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



Цитата
Цитата (Хоббит @ 16.11.2005, 10:28)
а все же можно ли вывести одну точку не в Image а сразу на экран? 
что-то я торможу. это уже следующий вопрос?

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


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1009 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.