Santhosh1217 Ответов: 1

Отображение значений при наведении курсора мыши на панель.


Я нарисовал путь (используя координаты выделенной области) на панели.В этом случае я хочу отобразить значения при наведении курсора на панель.Как я это сделаю? Пожалуйста, Помогите Мне !

Что я уже пробовал:

points1.Add(new Point(Convert.ToInt16(x), Convert.ToInt16(y)));
Pen p = new Pen(Color.Blue, 2);
Graphics gr = Graphics.FromImage(panelname.BackgroundImage);
gr.SmoothingMode = SmoothingMode.AntiAlias;                  
AdjustableArrowCap bigArrow = new AdjustableArrowCap(5, 5);                  
p.CustomEndCap = bigArrow;                           
g.DrawLine(p, points1[i1], points1[i1 + 1]);


Это только для отображения пути в панели.Я не знаю, как отобразить значение над путем, пока мышь наводит курсор на путь.!

Ralf Meier

Я не совсем понимаю, чего вы добиваетесь ...

Как правило, вы должны создать свой собственный настраиваемый элемент управления (возможно, он происходит от Panel, но он также может быть производным от Control) и переопределить в нем метод OnPaint.
Поэтому все действия происходят только внутри элемента управления.

Santhosh1217

Большое вам спасибо за Ваш ответ, сэр !!
Я не знаю, как объяснить это правильно, но я попытаюсь...

Панель содержит изображение.Я периодически щелкаю по панели и также отмечаю координаты.Позже я использовал эти координаты, чтобы нарисовать путь.Путь будет соединяться от одного клика к другому.Я хочу показать сообщение(координаты и некоторые другие данные) с помощью подсказки, пока мышь движется по этому пути.

Ralf Meier

ОК ... затем создайте настраиваемую панель, которая распознает каждый щелчок мыши (переопределяя метод OnMouseClick) и сохраняет его координаты в списке "точка". Чтобы получить этот список вне панели, вы можете (например) использовать свойство с тем же типом ...

Santhosh1217

Извините, что побеспокоил вас !! Не могли бы вы объяснить на этом примере ?

Ralf Meier

взгляните на мое решение ...

1 Ответов

Рейтинг:
2

Ralf Meier

Примером этого может быть :

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
public class myPanel : Panel
{

	public List<Point> ClickPoints {
		get { return myClickPoints; }
		set { myClickPoints = value; }
	}

	private List<Point> myClickPoints = new List<Point>();
	public void ClearList()
	{
		myClickPoints.Clear();
	}

	protected override void OnMouseClick(MouseEventArgs e)
	{
		myClickPoints.Add(new Point(e.Location.X, e.Location.Y));
		base.OnMouseClick(e);
		this.Invalidate();
	}

	protected override void OnPaint(PaintEventArgs e)
	{
		e.Graphics.DrawString(myClickPoints.Count.ToString, Font, Brushes.Black, new Point(0, 10));

		base.OnPaint(e);
	}

}