加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

C# 在winform画面上点击某个区域造成按钮按下效果的技巧

发布时间:2021-11-24 17:12:34 所属栏目:PHP教程 来源:互联网
导读:在Winform的窗体中,存在背景图的情况下,不想在画面上加入按钮,只希望利用窗体自身的几个事件来实现按钮按下的效果,怎么样实现呢? 其实这也不难,只需要按照下列步骤即可实现,首先确定要按下的几个区域的坐标点和大小,准备好按下和弹出的图片,将这些

在Winform的窗体中,存在背景图的情况下,不想在画面上加入按钮,只希望利用窗体自身的几个事件来实现按钮按下的效果,怎么样实现呢?
 
其实这也不难,只需要按照下列步骤即可实现,首先确定要按下的几个区域的坐标点和大小,准备好按下和弹出的图片,将这些坐标点和大小
 
组成一个个区域(使用GraphicsPath来完成)。然后使用几个Flage标志,标识是否区域的按下。具体实现的代码如下:
 
 /// <summary>
    /// 实时监控,酒位展示,酒柜介绍,网络订购4个按钮的位置参数
    /// </summary>
    int[,] BtnLocation = new int[4, 2]{{637,161},{683,269},{714,374},{637,478}};
    /// <summary>
    /// 4个按钮的Size参数
    /// </summary>
    Size BtnSize = new Size(285,92);   
    /// <summary>
    /// 实时监控按钮是否按下的标志
    /// </summary>
    bool FlageMouseDownRealTime = false;
    /// <summary>
    ///  酒位展示按钮是否按下的标志
    /// </summary>
    bool FlageMouseDownWinePos = false;
    /// <summary>
    /// 酒柜介绍按钮是否按下的标志
    /// </summary>
    bool FlageMouseDownCupIntrol = false;
    /// <summary>
    /// 网络订购按钮是否按下的标志
    /// </summary>
    bool FlageMouseDownNetPurchase = false;
    /// <summary>
    /// 实时监控按钮的位置范围
    /// </summary>
    GraphicsPath gpRealTime = new GraphicsPath();
    /// <summary>
    /// 酒位展示按钮的位置范围
    /// </summary>
    GraphicsPath gpWinePos = new GraphicsPath();
    /// <summary>
    /// 酒柜介绍按钮的位置范围
    /// </summary>
    GraphicsPath gpCupIntrol = new GraphicsPath();
    /// <summary>
    /// 网络订购按钮的位置范围
    /// </summary>
    GraphicsPath gpNetPurchase = new GraphicsPath();
 
    Graphics dc = null;
 
 
 
 
/// <summary>
    /// 获取4个按钮的区域范围
    /// </summary>
    private void GetButtonGraphicPath()
    {
        FlageMouseDownRealTime = false;
        FlageMouseDownWinePos = false;
        FlageMouseDownCupIntrol = false;
        FlageMouseDownNetPurchase = false;
 
        Point[] pt = new Point[]{
                new Point(BtnLocation[0,0],BtnLocation[0,1]),
                new Point(BtnLocation[0,0]+BtnSize.Width,BtnLocation[0,1]),
                new Point(BtnLocation[0,0]+BtnSize.Width,BtnLocation[0,1]+BtnSize.Height),
                new Point(BtnLocation[0,0],BtnLocation[0,1]+BtnSize.Height)
            };
        gpRealTime.AddLines(pt);
        pt = new Point[]{
                new Point(BtnLocation[1,0],BtnLocation[1,1]),
                new Point(BtnLocation[1,0]+BtnSize.Width,BtnLocation[1,1]),
                new Point(BtnLocation[1,0]+BtnSize.Width,BtnLocation[1,1]+BtnSize.Height),
                new Point(BtnLocation[1,0],BtnLocation[1,1]+BtnSize.Height)
            };
        gpWinePos.AddLines(pt);
        pt = new Point[]{
                new Point(BtnLocation[2,0],BtnLocation[2,1]),
                new Point(BtnLocation[2,0]+BtnSize.Width,BtnLocation[2,1]),
                new Point(BtnLocation[2,0]+BtnSize.Width,BtnLocation[2,1]+BtnSize.Height),
                new Point(BtnLocation[2,0],BtnLocation[2,1]+BtnSize.Height)
            };
        gpCupIntrol.AddLines(pt);
        pt = new Point[]{
                new Point(BtnLocation[3,0],BtnLocation[3,1]),
                new Point(BtnLocation[3,0]+BtnSize.Width,BtnLocation[3,1]),
                new Point(BtnLocation[3,0]+BtnSize.Width,BtnLocation[3,1]+BtnSize.Height),
                new Point(BtnLocation[3,0],BtnLocation[3,1]+BtnSize.Height)
            };
        gpNetPurchase.AddLines(pt);
 
    }
 
 
 
 
 private void InitialButtonsStyle()
    {
        GetButtonGraphicPath();
 
        pxControl.Location = new Point(0,0);
        pxControl.Size = new Size(1024,768);
        SetBackGroudImg();
        this.Controls.Add(pxControl);
        dc = pxControl.CreateGraphics();
        pxControl.MouseDoubleClick +=new MouseEventHandler(this.Main_MouseDoubleClick);
        pxControl.MouseDown+=new MouseEventHandler(this.pxControl_MouseDown);
        pxControl.MouseUp += new MouseEventHandler(this.pxControl_MouseUp);
        pxControl.MouseMove += new MouseEventHandler(this.pxControl_MouseMove);
        pxControl.MouseClick += new MouseEventHandler(this.pxControl_MouseClick);
 
  }
 
 /// <summary>
    ///按下4个按钮时的状态变化
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void pxControl_MouseDown(object sender,MouseEventArgs e)
    {
        if (gpRealTime.IsVisible(e.Location))
        {
           using(Image imgTemp = Image.FromFile(strWineRealStatusDownPath))
           {
                dc.DrawImage(imgTemp, BtnLocation[0, 0], BtnLocation[0, 1], BtnSize.Width,BtnSize.Height);
                FlageMouseDownRealTime = true;
           }
        }
        if (gpWinePos.IsVisible(e.Location))
        {
            using (Image imgTemp = Image.FromFile(strWinePosQueryDownPath))
            {
                dc.DrawImage(imgTemp, BtnLocation[1, 0], BtnLocation[1, 1], BtnSize.Width, BtnSize.Height);
                FlageMouseDownWinePos = true;
            }
        }
        if (gpCupIntrol.IsVisible(e.Location))
        {
            using (Image imgTemp = Image.FromFile(strWineCupIntroDownPath))
            {
                dc.DrawImage(imgTemp, BtnLocation[2, 0], BtnLocation[2, 1], BtnSize.Width, BtnSize.Height);
                FlageMouseDownCupIntrol = true;
            }
        }
        if (gpNetPurchase.IsVisible(e.Location))
        {
            using (Image imgTemp = Image.FromFile(strWinePurchaseDownPath))
            {
                dc.DrawImage(imgTemp, BtnLocation[3, 0], BtnLocation[3, 1], BtnSize.Width, BtnSize.Height);
                FlageMouseDownNetPurchase = true;
            }
        }
    }
 
 
/// <summary>
    ///离开4个按钮时的状态变化
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void pxControl_MouseMove(object sender, MouseEventArgs e)
    {
        if (gpRealTime.IsVisible(e.Location))
        {
            if (FlageMouseDownRealTime)
            {
                using (Image imgTemp = Image.FromFile(strWineRealStatusDownPath))
                {
                    dc.DrawImage(imgTemp, BtnLocation[0, 0], BtnLocation[0, 1], BtnSize.Width, BtnSize.Height);
                }
            }
        }
        else
        {
            if (FlageMouseDownRealTime)
            {
                using (Image imgTemp = Image.FromFile(strWineRealStatusUpPath))
                {
                    dc.DrawImage(imgTemp, BtnLocation[0, 0], BtnLocation[0, 1], BtnSize.Width, BtnSize.Height);
                }
                FlageMouseDownRealTime = false;
            }
        }
        if (gpWinePos.IsVisible(e.Location))
        {
            if (FlageMouseDownWinePos)
            {
                using (Image imgTemp = Image.FromFile(strWinePosQueryDownPath))
                {
                    dc.DrawImage(imgTemp, BtnLocation[1, 0], BtnLocation[1, 1], BtnSize.Width, BtnSize.Height);
                }
            }
        }
        else
        {
            if (FlageMouseDownWinePos)
            {
                using (Image imgTemp = Image.FromFile(strWinePosQueryUpPath))
                {
                    dc.DrawImage(imgTemp, BtnLocation[1, 0], BtnLocation[1, 1], BtnSize.Width, BtnSize.Height);
                }
                FlageMouseDownWinePos = false;
            }
        }
        if (gpCupIntrol.IsVisible(e.Location))
        {
            if (FlageMouseDownCupIntrol)
            {
                using (Image imgTemp = Image.FromFile(strWineCupIntroDownPath))
                {
                    dc.DrawImage(imgTemp, BtnLocation[2, 0], BtnLocation[2, 1], BtnSize.Width, BtnSize.Height);
                }
            }
        }
        else
        {
            if (FlageMouseDownCupIntrol)
            {
                using (Image imgTemp = Image.FromFile(strWineCupIntroUpPath))
                {
                    dc.DrawImage(imgTemp, BtnLocation[2, 0], BtnLocation[2, 1], BtnSize.Width, BtnSize.Height);
                }
                FlageMouseDownCupIntrol = false;
            }
        }
        if (gpNetPurchase.IsVisible(e.Location))
        {
            if (FlageMouseDownNetPurchase)
            {
                using (Image imgTemp = Image.FromFile(strWinePurchaseDownPath))
                {
                    dc.DrawImage(imgTemp, BtnLocation[3, 0], BtnLocation[3, 1], BtnSize.Width, BtnSize.Height);
                }
            }
        }
        else
        {
            if (FlageMouseDownNetPurchase)
            {
                using (Image imgTemp = Image.FromFile(strWinePurchaseUpPath))
                {
                    dc.DrawImage(imgTemp, BtnLocation[3, 0], BtnLocation[3, 1], BtnSize.Width, BtnSize.Height);
                }
                FlageMouseDownNetPurchase = false;
            }
        }
    }
 
 /// <summary>
    ///松开4个按钮时的状态变化
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void pxControl_MouseUp(object sender, MouseEventArgs e)
    {
        if (gpRealTime.IsVisible(e.Location))
        {
            using (Image imgTemp = Image.FromFile(strWineRealStatusUpPath))
            {
                dc.DrawImage(imgTemp, BtnLocation[0, 0], BtnLocation[0, 1], BtnSize.Width, BtnSize.Height);
                FlageMouseDownRealTime = false;
            }
        }
        if (gpWinePos.IsVisible(e.Location))
        {
            using (Image imgTemp = Image.FromFile(strWinePosQueryUpPath))
            {
                dc.DrawImage(imgTemp, BtnLocation[1, 0], BtnLocation[1, 1], BtnSize.Width, BtnSize.Height);
                FlageMouseDownWinePos = false;
            }
        }
        if (gpCupIntrol.IsVisible(e.Location))
        {
            using (Image imgTemp = Image.FromFile(strWineCupIntroUpPath))
            {
                dc.DrawImage(imgTemp, BtnLocation[2, 0], BtnLocation[2, 1], BtnSize.Width, BtnSize.Height);
                FlageMouseDownCupIntrol = false;
            }
        }
        if (gpNetPurchase.IsVisible(e.Location))
        {
            using (Image imgTemp = Image.FromFile(strWinePurchaseUpPath))
            {
                dc.DrawImage(imgTemp, BtnLocation[3, 0], BtnLocation[3, 1], BtnSize.Width, BtnSize.Height);
                FlageMouseDownNetPurchase = false;
            }
        }
    }
 
 
 
 
  /// <summary>
    /// 按下4个按钮时的事件的变化
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void pxControl_MouseClick(object sender, MouseEventArgs e)
    {
        if (gpRealTime.IsVisible(e.Location))
        {
            btnRealStatus_Click(null, null);
        }
        else if (gpWinePos.IsVisible(e.Location))
        {
            btnWinePosQuery_Click(null, null);
        }
        else if (gpCupIntrol.IsVisible(e.Location))
        {
            btnWineCupIntro_Click(null, null);
        }
        else if (gpNetPurchase.IsVisible(e.Location))
        {
            btnPurchase_Click(null, null);
        }
    }

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读