ChengKing

ChengKing

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  1 随笔 :: 49 文章 :: 0 评论 :: 0 Trackbacks

(一).功能

     有时候由于显示效果,需要将某个控件变一下形状.
     本文举例将PictureBox[]数组变成圆形.

(二).代码

    (这里说明一下,我个人将它变形是因为我用PictureBox表示象棋棋子,

     由于PictureBox默认是方 的,  所以得把它变成圆的)

     大家可以将这个功能作为其它用途使用.

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;


namespace 智能象棋游戏
{
 ///


 /// 功能:将所有picturebox控件变为圆形
 /// 特点:使旗子变圆形

 ///

 public class Class7
 {
  [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);
   }   
  }
 }
}


posted on 2005-11-06 12:30 ZhengJian 阅读(295) 评论(0)  编辑 收藏 引用 所属分类: C#专栏C#之Control Study.Net使用DLL中的方法
只有注册用户登录后才能发表评论。