如何将方行的按纽改变为其他的形状

本文介绍了一种使用 C# 和 Win32 API 实现将 PictureBox 控件转换为圆形按钮的技术。通过调用 BeginPath、SetBkMode、Ellipse 等方法绘制圆形区域,并设置窗口区域为该圆形,从而达到圆形按钮的效果。

下面的代码为如何生成一个圆形的按纽的方法 ,主要功能的实现为调用了一系列的API来实现的.

[System.Runtime.InteropServices.DllImport("gdi32")]
  private static extern IntPtr BeginPath(IntPtr hdc);
  [System.Runtime.InteropServices.DllImport("gdi32")]
  private static extern int SetBkMode(IntPtr hdc,int nBkMode);  
  const int TRANSPARENT=1;
  [System.Runtime.InteropServices.DllImport("gdi32")]     
  private static extern IntPtr EndPath(IntPtr hdc);
  [System.Runtime.InteropServices.DllImport("gdi32")]
  private static extern IntPtr PathToRegion(IntPtr hdc);
  [System.Runtime.InteropServices.DllImport("gdi32")]
  private static extern int Ellipse(IntPtr hdc,int x1,int y1,int x2,int y2);
  [System.Runtime.InteropServices.DllImport("user32")]
  private static extern IntPtr SetWindowRgn(IntPtr hwnd,IntPtr hRgn,bool bRedraw);
  [System.Runtime.InteropServices.DllImport("user32")]
  private static extern IntPtr GetDC(IntPtr hwnd);
  public Class7()
  {   
  }
  public void MakeToPictureBoxsToCircle(PictureBox[] pb)
  {
   IntPtr dc;
   IntPtr region;
   for(int i=0;i
   {
    dc=GetDC(pb[i].Handle);
    BeginPath(dc);
    SetBkMode(dc,TRANSPARENT);
    Ellipse(dc,0,0,pb[i].Width-3,pb[i].Height-2);
    EndPath(dc);
    region=PathToRegion(dc);
    SetWindowRgn(pb[i].Handle,region,false);
   }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值