[C#] 마우스를 올려놨을 때 이미지를 미리 볼 수 있는 기능 예시 [Tooltip/Image]

2021. 1. 18. 09:56C#

사용한 Visual Studio 환경

더보기

Visual Studio Community 2019 

vs_community__468244237.1605342870

 

Label에 마우스를 올려놓으면, 예시 이미지가 뜨는 기능

 

Label에 마우스 올리기 전

 

Label에 마우스 올리고 난 후

 

이미지는 귀여운 죠르디

이미지 출처(카카오톡채널) : pf.kakao.com/_xmQfrT

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label1_MouseHover(object sender, EventArgs e)
        {
            ToolTip tt = new ToolTip();

            tt.OwnerDraw = true;
            tt.Popup += new System.Windows.Forms.PopupEventHandler(this.tt_Popup); 
            tt.Draw += new System.Windows.Forms.DrawToolTipEventHandler(this.tt_Draw); 
            tt.SetToolTip(label1, "Connection");
        }
        private void tt_Popup(object sender, PopupEventArgs e)
        {
            //Image resolution 따져서 tooltip size Set             
            Image explanationImage = WindowsFormsApp1.Resource1.niniz ;
            int image_wid = WindowsFormsApp1.Resource1.niniz.Width;
            int image_hgt = WindowsFormsApp1.Resource1.niniz.Height;
            e.ToolTipSize = new Size(image_wid, image_hgt);

        }
        private void tt_Draw(object sender, DrawToolTipEventArgs e)
        {
            e.DrawBackground();
            e.DrawBorder();
            Image explanationImage = WindowsFormsApp1.Resource1.niniz;
            Brush myBackColorBrush = Brushes.Black;
            Rectangle myImageRectangle = new Rectangle(Cursor.Position.X, Cursor.Position.Y, explanationImage.Width, explanationImage.Height);
            if (explanationImage != null)
            {
                e.Graphics.FillRectangle(myBackColorBrush, e.Bounds);
                e.Graphics.DrawImage(explanationImage, 0, 0);
            }
        }
    }



 }

 

그림이 나오는 위치의 기본값은, Cursor가 현재 위치하는 곳으로 설정

 

이미지 width, space 만큼 Popup크기를 설정한 상태.

 

Label에 마우스 올려놓을 시 이미지가 미리 보여지는 기능

[Tooltip 사용]