안녕하세요, 이것이 가능하면 잘 모르겠지만 Graphics 메서드 DrawImage를 사용하여 이미지에 툴팁을 동적으로 추가하려고합니다. 나는 이미지가 moused 될 때 어떤 물건이나 이벤트를 보지 못한다. 그래서 나는 어디서부터 시작해야할지 모른다. WinForms (C# - .NET 3.5)를 사용하고 있습니다. 어떤 아이디어 나 제안도 환영할만한 것입니다. 감사..DrawImage()를 사용하여 이미지에 툴팁 위에 마우스를 추가하는 방법
1
A
답변
1
나는 UserControl
일종의 것이라고 생각하고 DrawImage()
OnPaint
메서드를 호출합니다.
귀하의 툴팁을 명시 적으로 제어해야합니다. 기본적으로 폼에 Tooltip
을 만들고, 속성을 통해 컨트롤에주고, 컨트롤에 MouseHover
이벤트가 수신되면 툴팁을 표시하고 MouseLeave
이벤트를 받으면 툴팁을 숨 깁니다. 이 같은
뭔가 :
public partial class UserControl1 : UserControl
{
public UserControl1() {
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
// draw image here
}
public ToolTip ToolTip { get; set; }
protected override void OnMouseLeave(EventArgs e) {
base.OnMouseLeave(e);
if (this.ToolTip != null)
this.ToolTip.Hide(this);
}
protected override void OnMouseHover(EventArgs e) {
base.OnMouseHover(e);
if (this.ToolTip == null)
return;
Point pt = this.PointToClient(Cursor.Position);
String msg = this.CalculateMsgAt(pt);
if (String.IsNullOrEmpty(msg))
return;
pt.Y += 20;
this.ToolTip.Show(msg, this, pt);
}
private string CalculateMsgAt(Point pt) {
// Calculate the message that should be shown
// when the mouse is at thegiven point
return "This is a tooltip";
}
}
1
당신이 저장 경계는 그리기하고 mouseMove event
검사에 그 지역에서 current Mouse cursor
의 위치는 다음 다른 도구 설명을 표시 할 경우 이미지의에있는 기억 숨 깁니다.
ToolTip t;
private void Form1_Load(object sender, EventArgs e)
{
t = new ToolTip(); //tooltip to control on which you are drawing your Image
}
Rectangle rect; //to store the bounds of your Image
private void Panel1_Paint(object sender, PaintEventArgs e)
{
rect =new Rectangle(50,50,200,200); // setting bounds to rect to draw image
e.Graphics.DrawImage(yourImage,rect); //draw your Image
}
private void Panel1_MouseMove(object sender, MouseEventArgs e)
{
if (rect.Contains(e.Location)) //checking cursor Location if inside the rect
{
t.SetToolTip(Panel1, "Hello");//setting tooltip to Panel1
}
else
{
t.Hide(Panel1); //hiding tooltip if the cursor outside the rect
}
}
감사합니다. 내일 다시 시도하고 다시 신고하겠습니다. – Travyguy9