我可以画两个东西在一个弹出式,图像和文本

本文关键字:弹出式 一个 图像 文本 两个 我可以 | 更新日期: 2023-09-27 18:11:11

在c#中,我有一个表单(使用winforms),其中有一个Gridview的数据。当我将鼠标悬停在GridView中的一个单元格上时,我使用MouseEnter和MouseLeave事件弹出第二个表单,其中包含一个图像。我使用DrawImage来放置以下代码:

    private void frm_MouseOverPicture_Paint(object sender, PaintEventArgs e)
    {
        Point MyPoint = new Point(250, 10);
        Point MySecondPoint = new Point(10,10);
        Font myFont = sender as Font;
        Brush myBrush = sender as Brush;
        Rectangle myRect = new Rectangle(250, 10, 500, 500);
        Graphics g = e.Graphics;
        Graphics g2 = e.Graphics;
        Bitmap MyBitmap = new Bitmap(@"C:'Javie'IMAP0001.jpeg");

        //g.DrawImage(MyBitmap, MyPoint.X, MyPoint.Y);
        g.DrawImageUnscaledAndClipped(MyBitmap, myRect);
        //g.DrawString("Hi", myFont, myBrush, MySecondPoint);
        e.Graphics.DrawString("hi", myFont, myBrush, mySecondPoint);          
    }

我的问题是,当我尝试,然后使用单独的DrawString方法添加字符串,弹出式表单得到一个大的红色X在它,如果我不能画两个东西在同一形式(这只是一个控件,对吧?)。

我可以画两个东西在一个弹出式,图像和文本

myFont和myBrush对象看起来不正确。试一试:

        Font myFont = (sender as Form).Font;
        Brush myBrush = new SolidBrush((sender as Form).ForeColor);
        ...
        e.Graphics.DrawString("hi", myFont, myBrush, MySecondPoint);

假设sender是一个Form,或者直接创建它们:

        using (Font myFont = new Font("Arial", 16))
        {
            using (Brush myBrush = new SolidBrush(Color.Blue))
            {
                using ( Bitmap MyBitmap = new Bitmap(@"C:'Javie'IMAP0001.jpeg")) 
                {
                    ...
                    g.DrawString("hi", myFont, myBrush, MySecondPoint);
                }
            }
        }