2010-11-28 7 views
1

안녕하세요, 이것이 가능하면 잘 모르겠지만 Graphics 메서드 DrawImage를 사용하여 이미지에 툴팁을 동적으로 추가하려고합니다. 나는 이미지가 moused 될 때 어떤 물건이나 이벤트를 보지 못한다. 그래서 나는 어디서부터 시작해야할지 모른다. WinForms (C# - .NET 3.5)를 사용하고 있습니다. 어떤 아이디어 나 제안도 환영할만한 것입니다. 감사..DrawImage()를 사용하여 이미지에 툴팁 위에 마우스를 추가하는 방법

답변

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"; 
    } 
} 
+0

감사합니다. 내일 다시 시도하고 다시 신고하겠습니다. – Travyguy9

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 
     } 
    }