Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Вопрос по графике в VB.NET Добавлено: 10.05.09 02:37  

Автор вопроса:  _Serega
Вопрос к профессионалам VB.NET: Можно ли при выводе графических объектов - текста, прямоугольников, линий, элипсов создавать что то навроде их объектной копии и позже при нажатии мышкой на область на которой они отрисованы, получать ссылку на объект? То есть отрисован к примеру на форме круг, который отрисован с элипса и можно ткнув мышкой в этот круг знать что нажато на этот круг, при этом приадлежность к кругу мы должны определять по занимаемой закрашенной области формы, то есть считать не прямоугольник внутри которого элипс в форме круга и отрисован, потаму что внутри такого прямоугольника тоже будет незакрашенная область, но она нам не нужна, а именно круг?

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #1 Добавлено: 10.05.09 02:48
Вопрос не осилил, а телепаты уже наверно спят.

Ответить

Номер ответа: 2
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #2
Добавлено: 10.05.09 03:11
телепаты не нужны. человеку нада нечто вроде векторного редактора. типа по отражению получать объект, который выбран мышкой.

Ответить

Номер ответа: 3
Автор ответа:
 _Serega



Вопросов: 1
Ответов: 43
 Профиль | | #3 Добавлено: 10.05.09 03:12
Попробую пояснить.
В Graphics есть методы считывания прямоугольников, в которых отрисованы объекты, например я внутри кода считываю размеры текстовых сообщений и корректирую построение самого изображения, к примеру:

Dim szLabelX As SizeF

szLabelX.Width = e.MeasureString(strLabelX, _ Me.Font).Width
szLabelX.Height = e.MeasureString(strLabelX, _ Me.Font).Height

Сохранив размеры и координаты, как объект и позже по нажатии мышкой на экран считать координаты нажатия мышки и соответсвенно определить принадлежность к объекту - но объектов в данном случае является прямоугольник. Можно ли определить не по области прямоугольника, а по закрашенной области принадлежность к объекту? Подобную реализацию я как то видел на C# на .Net и там это было сделано через DC вывод, но не могу найти этот код у себя.

Ответить

Номер ответа: 4
Автор ответа:
 _Serega



Вопросов: 1
Ответов: 43
 Профиль | | #4 Добавлено: 10.05.09 03:18
Нет, это не векторный редактор. Я написал свой компонент вывода графиков и он уже работает и автошкалирует вводимые значения матрицирует - тут все в порядке, сейчас вот хотелось бы добавить некоторых возможностей, например, пользовательского рисования на имеющемся графике.

Ответить

Номер ответа: 5
Автор ответа:
 Стас



Вопросов: 5
Ответов: 13
 Профиль | | #5 Добавлено: 10.05.09 09:17
Можно поробовать получать координаты выделенного пикселя и его цвет и сранивать с цветом закрашеной области

Ответить

Номер ответа: 6
Автор ответа:
 _Serega



Вопросов: 1
Ответов: 43
 Профиль | | #6 Добавлено: 10.05.09 11:01
Спасибо, наверное в крайнем случае так и придется сделать, честно говоря я тоже думал об этом. Но в таком решении есть несколько недостатков, например, мы используем градиентную заливку или альфу - прозрачность для кисти и тогда получаемый с пикселя цвет не фиксированный, тогда возникает проблема связывать цвет объекта с цветом пикселя или другой частный случай, когда выбран один и тот же цвет для формирования несколько объектов визуально разделенных просто границами.

Ответить

Номер ответа: 7
Автор ответа:
 Стас



Вопросов: 5
Ответов: 13
 Профиль | | #7 Добавлено: 10.05.09 11:13
в таком случае можно (если это круг) делать проверку : если координаты мышки меньше радиуса круга значит мы внутри границы, второй способ, если заливка с альфа прозрачностью, то проверять прозрачность пикселя, если же это многоугольник, то придумай функцию которая будет перебирать все точки многоугольника и проверять на ближайшее расстояние к центру, если мыша (координаты) дальше какой либо из точек расстояние от точки до центра > расстояния мыши до центра, то мы за пределами многоугольника

Ответить

Номер ответа: 8
Автор ответа:
 _Serega



Вопросов: 1
Ответов: 43
 Профиль | | #8 Добавлено: 10.05.09 11:39
Насчет подобного перебора - тут проблемка, мы просто задаем в Framework тип графического объекта, его параметры и его координаты с размерами для рисования при выводе, а алгоритм формирования объекта попиксельно нам неизвестен, в общем то при работе с API было тож самое - просто используешь готовые вызовы, мы же не на ассемблере работаем, на ассемблере можно было бы такой проект пожизненно писать, но такого приговора нам не было.))) Тут остается для использования только возвращаемая область прямоугольника, занимаемая объектом или всеж где то найти, как используются ссылки на создаваемые графические объекты - решение должно быть где то там.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам