2017-11-28 1 views
0

Ich arbeite an der Neugestaltung einer älteren Anwendung, um es benutzerfreundlicher zu machen. Eine Ergänzung, die ich machen möchte, ist, wenn man über eine bestimmte Schaltfläche schwebt, ein ~ (200, 200) demonstratives GIF rechts unten auf dem Cursor erscheint (ähnlich der Funktionalität eines ToolTips).Ersetzen von ToolTip-Text durch ein GIF

Ich schaute in die Änderung der ToolTip-Klasse, die übermäßig scheint. Das oben erwähnte wäre ideal, obwohl ich eine statische imageBox in Betracht ziehe, die nach einem Schweben von ungefähr 2 Sekunden erscheint.

Könnte jemand mich in die richtige Richtung führen?

+1

Mögliches Duplikat [Anzeigebild mit der Maus darüber in Windows Form ?] (https://stackoverflow.com/questions/8264340/display-image-on-mouseover-in-windows-form) –

+0

versteckte ImageBox oder Panel scheint wie die einfachste und am wenigsten Code benötigt – Slai

Antwort

1

zu diesem Artikel Werfen Sie einen Blick, Details es die Schritte des Bildes heraus in einem Tooltip https://www.codeproject.com/Articles/42050/ToolTip-With-Image-C

Und diese Methode insbesondere:

void CustomizedToolTip_Draw(object sender, DrawToolTipEventArgs e) 
{ 
     e.Graphics.CompositingQuality = CompositingQuality.HighQuality; 
     myToolTipRectangle.Size = e.Bounds.Size; 
     e.Graphics.FillRectangle(myBorderBrush, myToolTipRectangle); 
     myImageRectangle = Rectangle.Inflate(myToolTipRectangle, 
       -BORDER_THICKNESS, -BORDER_THICKNESS); 
     e.Graphics.FillRectangle(myBackColorBrush, myImageRectangle); 
     Control parent = e.AssociatedControl; 
     Image toolTipImage = parent.Tag as Image; 
     if (toolTipImage != null) 
     { 
      myImageRectangle.Width = myInternalImageWidth; 
      myTextRectangle = new Rectangle(myImageRectangle.Right, myImageRectangle.Top, 
      (myToolTipRectangle.Width - myImageRectangle.Right - BORDER_THICKNESS), 
         myImageRectangle.Height); 
      myTextRectangle.Location = 
     new Point(myImageRectangle.Right, myImageRectangle.Top); 
      e.Graphics.FillRectangle(myBackColorBrush, myTextRectangle); 
      e.Graphics.DrawImage(toolTipImage, myImageRectangle); 
      e.Graphics.DrawString(e.ToolTipText, myFont, 
      myTextBrush, myTextRectangle, myTextFormat); 
     } 
     else 
     { 
      e.Graphics.DrawString(e.ToolTipText, myFont, 
      myTextBrush, myImageRectangle, myTextFormat); 
     } 
}