![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Взяла статью http://msdn.microsoft.com/vcsharp/programm...uctures20_3.asp
(обязательно нужна универсальность <T>, использую Visual Studio 2005) Повторила, что в статье напИсано: класс узла => списка узлов => узлов дерева => дерево создать Node NodeList BinaryTreeNode BinaryTree Все отдельные классы. Начинается с Form1, хотя в VS 2005 там сразу ТРИ класса создаются partial Form1, partial Form1.Designer и еще Program с Main-классом. А вот дальше по тексту статьи, я просто не знаю (неопытная я
Я сделала еще один класс TestingBinaryTree и туда этот кусочек включила. Все без ошибок пробегает, но я ведь как-то хочу реагировать на данные, что стоят в узлах. Попыталась простыми линиями изобразить построение дерева, НО (!!!) графика вообще не работает в этом классе. Graphics даже в подсказке в TestingBinaryTree отсутствует. Рисовать могу только в Form1. Но что-то я никак не могу передать информацию от дерева из TestingBinaryTree в Form1. Например бы мне, дорисовывать по одной линии после каждого узла. Принципиально как мне поступить, что data в каждом Node была мне доступна постоянно там, где я могу, например, добавлять графику. |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 1 Всего: 37 |
Интересно ребята из microsoft деревья без рекурсии строят
|
|||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Передала переменную. В Form1 после строки с инициализацией
InitializeComponent(); Graphics g = CreateGraphics(); TestBinaryTree tbt = new TestBinaryTree(g); Он НЕ рисует. Вощщее. Я прохожу с отладчиком внутри TestBinaryTree по строкам с LineDraw, но эффекта - нуль. Рисовать он хочет явно из Paint. Я понимаю, что это идеологически правильно. Но как мне "tbt", которое я делаю new в Form1 дотащить до Form1_Paint, чтобы я пробежалась по всему дереву, которое только что создала???? |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
-------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
lioness, дай код класса TestBinaryTree
-------------------- ![]() |
|||
|
||||
| Naum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Млин, спутал с VB.
По-моему это имеет значение, только если нужно быстро перерисовывать довольно большие области. В твоем же случае, откуда рисовать не имеет значения. -------------------- У нас всего два праздника Новый год и ТЯПница. |
||||
|
|||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Так этот код стоит и стоит в моем первом вопросе
Это я точки для линий попыталась передать для Form1_Paint, но не знаю, надо ли мне так отслеживать каждое построение узла дерева с мгновенной прорисовкой. Сейчас попробую через наоборот передать свежепостроенное дерево btree из TestBinaryTree обратно в Form1. Там по дереву бегать взад-вперед. Form1_Paint, наверное, надо заставить просто перерисовывать дерево от начала до конца???? Могу ли public переменную объявить в Form1, принести ее свежепостроенную "деревянную" из TestBinaryTree и чтобы Paint-у ее дать пережевать? Graphics переменную я уже попробовала передать. Да, начинает выскакивать подсказка на графику, но он НЕ рисует. Я уже убрала ее из конструктора. Это сообщение отредактировал(а) lioness - 11.8.2006, 12:00 |
|||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
to Naum
Неее, Graphics g = Graphics.FromHwnd дает подсказку
После "this" требует совершенно чего-то другого (Equals, ToString ....), а после Graphics g = Graphics.FromHwnd( предлагает что-то вроде HandledEventArgs или HandledEventHandler и еще много чего. И через компилятор ничего не проходит Очевидная у меня была затея - быстренько реагировать графикой на содержание узлов. Но что-то ... как-то ... |
|||
|
||||
| Naum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
lioness, странно у меня работает. Вообще, я в С# новичек. У мнея например у самого
не работает, а работает
И я не знаю, что с этим делать. -------------------- У нас всего два праздника Новый год и ТЯПница. |
||||
|
|||||
| lioness |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Нет, ну ладно уж если не хочет рисовать из TestBinaryTree. Действительно, идеологически некорректно. Но почему я не могу адрес дерева передать???? Вот Form1
Вот TestBinaryTree
Почему точки, которые я передаю, передаются и рисуются в Paint, а вот эта передача адреса дерева
не может даже пройти компиляцию. Т.е. мне бы получить доступ по адресу что-то типа: _adr.GiveAdr.Root.Left и т.д. |
||||||
|
|||||||
| Naum |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Объявление переменной и конструктор Form1:
Paint метод класса Form1
Класс TestBinaryTree
-------------------- У нас всего два праздника Новый год и ТЯПница. |
||||||
|
|||||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Так вот только один отрезок и имеем
А когда идут отрезки одни за другим... Как Paint для каждого отрезка после каждого узла "встряхнуть", ШОБ рисовал? После каждого узла (я в будущем хотела цветовые знаки на считывании информации сразу ставить: или мне нравится, что мне подсунули, или -> "сюда не ходи! Снег на башка упадет! Совсем мертвый будешь (с)" Но не получается это мимоходом при создании дерева. Да и все равно мне потом все это дерево -дцать раз анализировать. Все одно - убЕгаться. Просто теперь буду знать, как графику "перетащить" из основного Click-Paint-а . Мерси ! |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Ошибочка тута, _adr.Paint(pevent.Graphics); Так быстрее будет. Это сообщение отредактировал(а) Naum - 11.8.2006, 17:27 -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| lioness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
А вот для ТОГО, ЧТОБЫ у меня "вытаскивался" адрес дерева в процедуре "GiveAdr" мне нужно было ЗАЧЕРКНУТЬ public в заголовке класса TestBinaryTree
А в Form1 - из моих предыдуших примеров - действительно я начинаю видеть информацию в узлах вот так _adr.GiveAdr.Root.Right.Value.ToString() Только дерево надо создавать рекурсией, конечно |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Вот пример поиска узла по дереву (если на найден, то ставится новый). Дерево бинарное. Значение в левом узле любого поддерева всегда меньше, чем значение корневого узла в этом поддереве, в правом - наоборот больше.
Добавлено @ 18:10 Только эта функция не будет работать. Надо вместо btn.Value.ToString() как-то получить int значение. Но думаю смысл рекурсии понятен. Это сообщение отредактировал(а) Naum - 11.8.2006, 17:57 -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |