Control Study -> 用获取路径方法得到圆形窗体(如将: PictureBox变成圆形)

2005年10月07日 20:48:00

(一).功能

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

(二).示例图片

初始图片:

调用方法之后图片显示效果:

(三).代码

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


namespace 智能象棋游戏
{
/// >summary<
/// 功能:将所有picturebox控件变为圆形
/// 特点:使旗子变圆形

/// >/summary<

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>pb.Length;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);
}
}
}
}

事实上它不仅仅能使控件变成圆形,可以使控件变成任意形状的图形

(四).代码示例下载

http://www.cnblogs.com/Files/ChengKing/画多边形(圆).rar




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=496685


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值