介绍
这篇文章主要介绍了c# winform制作不规则窗体的案例,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
私人空间Form1_Load(对象发送方,EventArgs e) {//重新绘制窗口样式 字符串文件名=@" C: \用户桌面\ \ admin \ Yuan1.png"; 位图mybitmap=新的位图(文件名); CreateControlRegion(这个,mybitmap); 这一点。背景色=Color.White;//此处为添加部分 这一点。TransparencyKey=Color.White;//此处为添加部分 }
///& lt;参数name=癰itmap"祝辞& lt;/param> 公共静态孔隙CreateControlRegion(控制控制,位图的位图) {//返回如果控制和位图是null//判断是否存在控件和位图 如果(控制==null | |位图==null) 返回;//设置控件大小为位图大小 控制。宽度=bitmap.Width; 控制。身高=bitmap.Height;//检查是否我们正在处理形式//当控件是形成时 如果System.Windows.Forms.Form(控制) {//表单对象//强制转换为形式 表格形式=(形式)控制;//当形式的边界FormBorderStyle不为没有时,应将形式的大小设置成比位图大小稍大一点 的形式。宽度=control.Width; 的形式。身高=control.Height;//没有边界 的形式。FormBorderStyle=FormBorderStyle.None;//将位图设置成窗体背景图片 的形式。BackgroundImage=位图;//计算位图中不透明部分的边界 GraphicsPath GraphicsPath=CalculateControlGraphicsPath(位图);//应用新的区域 的形式。区域=new区域(graphicsPath);//以下为自己添加的语句,不添加此两句会出现问题 的形式。宽度=bitmap.Width; 的形式。身高=bitmap.Height; }//当控件是按钮时 System.Windows.Forms.Button else if(控制) {//强制转换为按钮 按钮按钮=(按钮)控制;//不显示按钮文本 按钮。文本=?“;//改变光标的风格 按钮。光标=Cursors.Hand;//设置按钮的背景图片 按钮。BackgroundImage=位图;//计算位图中不透明部分的边界 GraphicsPath GraphicsPath=CalculateControlGraphicsPath(位图);//应用新地区//应用新的区域 按钮。区域=new区域(graphicsPath); 按钮。宽度=bitmap.Width; 按钮。身高=bitmap.Height; 按钮。FlatStyle=FlatStyle.Popup;//此处为添加部分 } } 私有静态GraphicsPath CalculateControlGraphicsPath(位图的位图) {//创建GraphicsPath GraphicsPath GraphicsPath=new GraphicsPath ();//使用左上角的一点的颜色作为我们透明色 颜色colorTransparent=位图。获取像素(0,0);//第一个找到点的X int colOpaquePixel=0;//偏历所有行(Y方向) for (int行=0;行& lt;位图。高度- 1;行+ +) {//重置价值//重设 colOpaquePixel=0;//偏历所有列(X方向) for (int坳=0;坳& lt;位图。宽度- 1;坳+ +) {//如果是不需要透明处理的点则标记,然后继续偏历 如果(位图。获取像素(坳、行)!=colorTransparent) { colOpaquePixel=上校;//建立新变量来记录当前点 int colNext=上校;///从找到的不透明点开始,继续寻找不透明点,一直到找到或则达到图片宽度 (colNext=colOpaquePixel;colNext & lt;bitmap.Width;colNext + +) { gpi=位图颜色。获取像素(colNext、行); 如果(位图。获取像素(colNext行)==colorTransparent) { 打破; } }//将不透明点加到图形的路径 { graphicsPath。AddRectangle(新矩形(colOpaquePixel、行colNext colOpaquePixel, 1)); } 坳=colNext; } } } 返回graphicsPath; }
感谢你能够认真阅读完这篇文章,希望小编分享c# winform制作不规则窗体的案例内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!