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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение щелчка 
:(
    Опции темы
GLeBaTi
Дата 18.4.2009, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

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



Вопрос: у меня есть линия(e.DrawLine(...)) при щелчке мыши, как узнать, я на линию щелкнул или нет ?
PM MAIL   Вверх
Partizan
Дата 18.4.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

Репутация: 18
Всего: 67



сверить принадлежат ли координаты щелчка линии...элементарная алгебра, 10-й класс...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
GLeBaTi
Дата 18.4.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

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



У меня там сложный график из мн-ва линий)
Ну тогда как проверить каким цветом пиксель, на который я нажал ?
PM MAIL   Вверх
Partizan
Дата 18.4.2009, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

Репутация: 18
Всего: 67



Получаете объект типа Graphics для нужной области, а затем на его основе создаёте объект Bitmap, у которого есть метод GetPixel


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Idsa
Дата 18.4.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



* Проходил мимо * WPF всему голова: там геометрические фигуры выполнены в виде контролов, поэтому для них уже реализованы события Click, MouseDown, MouseUp и т. д. Хотя впринципе можно реализовать подобные контролы и в WinForms...

Способ, предложенный Partizan, позволяет работать с "легкой" графикой (все же контролы будут больше тормозить), но требует затраты ресурсов на просчет принадлежности пиксела к тому или иному объекту. Способ с контролами более тяжеловесный (и поэтому может не подходить в случае real-time графиков), но зато не требует затрат на определение, по какому объекту был осуществлен клик (он будет храниться в переменной sender обработчика клика).


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
GLeBaTi
Дата 18.4.2009, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

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



мне надо на Win Forms
PM MAIL   Вверх
GLeBaTi
Дата 18.4.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

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



Код

private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
               bmp = (Bitmap)pictureBox1.Image;
        }

if(bmp.GetPixel(e.X,e.Y).B==0) //ошибка NullReferenceException
{
...
}

в чём у меня проблема ?)
PM MAIL   Вверх
Partizan
Дата 18.4.2009, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

Репутация: 18
Всего: 67



GLeBaTi, в том, что какого-то из объектов в той строке не существует...
скорее всего GetPixel вернул null...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
GLeBaTi
Дата 18.4.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

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



у меня pictureBox1.Image == null - почему ? Так не должно быть(((
PM MAIL   Вверх
Rififi
Дата 18.4.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



GLeBaTi, 

у меня pictureBox1.Image == null - почему ? Так не должно быть(((
а у меня полное отсутствие джин-тоника в холодильнике. так не должно быть, однако он пуст.
"Life sucks, and then you die" © Dead Like me.

почему?
неправильно инициализировал PictureBox или вообще забил на инициализацию.
PM MAIL   Вверх
GLeBaTi
Дата 18.4.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

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



неужели никто не сталкивался с этим ? smile 
PM MAIL   Вверх
Exai1e
Дата 18.4.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 30



GLeBaTi, ну дык проверьте что вам возвращает:
Код

bmp = (Bitmap)pictureBox1.Image;

ведь вам в "лоб" говорят что то с чем вы пытаетесь работать ( а скорей всего это битмап ) его не существует.

Это сообщение отредактировал(а) Exai1e - 18.4.2009, 17:00


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
DragonFire
Дата 18.4.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



Если ян е путаю - Image это изображение которое ты загружаешь в него... если же ты изображение не загружаешь а просто рисуешь на нем надо юзать Graphics...


--------------------
PM MAIL ICQ   Вверх
-Mikle-
Дата 18.4.2009, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 17
Всего: 59



GLeBaTi, видимо ты рисуешь вызывая метод Graphics.DrawLine(...), используй вместо этого GraphicsPath.AddLine(...).
Вот пример (добавь панель):
Код

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            pathPen = new Pen(Color.Red);
            pathPen.Width = 5;

            path = new GraphicsPath();
            path.AddLine(0, 0, 200, 100);
            path.AddEllipse(0, 0, 200, 100);
        }

        GraphicsPath path;
        Pen pathPen;

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawPath(pathPen, path);
        }

        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            string result = string.Empty;
            if (path.IsOutlineVisible(e.Location, pathPen))
                result += "(в контуре)";
            if (path.IsVisible(e.Location))
                result += "(внутри)";
            this.Text = result;
        }
    }


Добавлено через 3 минуты и 23 секунды
Если ты делаешь нечто вроде графического редактора, то полезно будет разделить графические объекты по классам.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
GLeBaTi
Дата 18.4.2009, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

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



мне надо просто узнать цвет пикселя на PictureBox.Вот только как ?)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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