Samstag, Juni 6, 2020

Wie füge ich ein mouse-over-tooltip, um ein Bild mit .DrawImage()

Hey alle, ich bin nicht sicher, ob das möglich ist, aber ich versuche Sie dynamisch hinzufügen eine QuickInfo zu einem image mit der Graphics-Methode DrawImage. Ich dont sehen irgendwelche Eigenschaften oder Ereignisse, wenn das Bild moused über, oder etwas so, ich weiß nicht, wo man anfangen soll. Ich bin mit WinForms (in C# – .NET 3.5). Irgendwelche Ideen oder Anregungen wäre willkommen. Danke.

InformationsquelleAutor Travyguy9 | 2010-11-28

2 Kommentare

  1. 1

    Ich würde vermuten, dass Sie irgendeine Art von UserControl und rufen Sie DrawImage() im OnPaint Methode.

    Gegeben, dass Ihre QuickInfo wird gesteuert ausdrücklich. Im Grunde erstellen Sie eine Tooltip auf dem Formular, geben Sie Ihre Kontrolle über eine Eigenschaft, zeigt die QuickInfo, wenn Ihr die Kontrolle erhielt eine MouseHover Ereignis, und blenden Sie die QuickInfo angezeigt, wenn Sie erhalten eine MouseLeave Veranstaltung.

    Etwas wie dieses:

    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";
        }
    }
    • Vielen Dank, ich werde versuchen es morgen und Bericht zurück.
  2. 1

    Denken Sie daran, Sie haben zu store Grenzen dem Bild, das Sie zeichnen
    und in der mouseMove event prüfen, ob die Lage des current Mouse cursor bei, dass die region, dann zeigt der ToolTip anderes verbergen.

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

Kostenlose Online-Tests