Учебное пособие C#. Алгоритмы и структуры данных н. А. Тюкачев, В. Г. Хлебостроев издание третье, стереотипное 1 / 23


Download 1.85 Mb.
Pdf ko'rish
bet51/111
Sana19.11.2023
Hajmi1.85 Mb.
#1786905
TuriУчебное пособие
1   ...   47   48   49   50   51   52   53   54   ...   111
Bog'liq
C# Алгоритмы и структуры данных 2018 Тюкачев, Хлебостроев

Листинг 4.6. Рисование дерева 
void DrawNode(Node p) // 
изображение дерева 

int R = 12; 
if (p.left != null) 
g.DrawLine(MyPen,p.x, p.y,p.left.x,p.left.y); 
if (p.right != null) 
g.DrawLine(MyPen, p.x, p.y, p.right.x,
p.right.y); 
if (p.visit) 
MyBrush = (SolidBrush)Brushes.Yellow; 
else 
MyBrush = (SolidBrush)Brushes.LightYellow; 
g.FillEllipse(MyBrush, p.x - R, p.y - R,
2*R, 2*R); 
g.DrawEllipse(MyPen, p.x - R, p.y - R, 2*R, 2*R); 
string s = Convert.ToString(p.data); 
SizeF size = g.MeasureString(s, MyFont); 
g.DrawString(s, MyFont, Brushes.Black, 
p.x - size.Width / 2, p.y - size.Height / 2); 
if (p.left != null) 
DrawNode(p.left); 
if (p.right != null) 
DrawNode(p.right); 

В процессе рисования один узел может наложиться на другой. Поэтому 
в программе предусмотрено перемещение узла с помощью мыши. Соответст-
вующие обработчики событий приведены в листинге 4.7. 
14 / 23


84 
Листинг 4.7. Перемещение мышью узла дерева 
private void FormMain_MouseDown(object sender,
MouseEventArgs e) 

myTree.DeSelect(myTree.top); 
myTree.SelectNode =
myTree.FindNode(myTree.top, e.X,e.Y); 
drawing = myTree.SelectNode != null; 
if (drawing) 
myTree.SelectNode.visit = true; 

private void FormMain_MouseMove(object sender,
MouseEventArgs e) 

if (drawing) 
myTree.Delta(myTree.SelectNode,
myTree.SelectNode.x –
e.X, myTree.SelectNode.y - e.Y); 
else 

myTree.DeSelect(myTree.top); 
myTree.SelectNode=myTree.FindNode(myTree.top, 
e.X,e.Y); 
if (myTree.SelectNode != null) 
myTree.SelectNode.visit = true; 

MyDraw(); 
15 / 23


85 

private void FormMain_MouseUp(object sender,
MouseEventArgs e) 

drawing = false; 

Обработчик события FormMain_MouseDown, выполняющийся при 
нажатии на левую кнопку мыши, вызывает метод FindNode(), в котором 
производится поиск узла, который будет перемещаться. Этому методу в ка-
честве параметров передаются координаты указателя мыши (листинг 4.8). 

Download 1.85 Mb.

Do'stlaringiz bilan baham:
1   ...   47   48   49   50   51   52   53   54   ...   111




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling