偶尔写篇博文......一般我都在外文站点,基本不太用中国的站点,不规择窗体的建立,像带箭头的提示框,或用户窗体中用户头像凸出窗体一定高度或有点艺术像绘画描述物体的窗体,其实呢就是用窗体REGION了,画不规择图形就是graphics的DRAWPATH,fillpath了,实现起来就是在FORMLOAD事件中this.region=new region(graphicspath..) ;this.invalidate();或中FORM中的OVERRIDE ONPAINT()写入,在构造函数中SetStyle一下 UserPaint 及 AllPaintingInWmPaint或打开双缓冲;关键就是GraphicsPath建立一些顶点及连接的POINT(理解为窗体X,Y的坐标),下边的窗体就是类似一个用户头像凸出窗体一定高度,下面灰色的窗体(我只随便绘制一下,把FORMBOARDSTYLE设为NONE)我没时间用渐变,透明,色彩,阴影去美化了...
下边的代码我随便编的,复制一下运行
using System.Drawing .Drawing2D ;
using Gdi_Net = System.Drawing; /// mult namespace
public GraphicsPath Get_GPath()
{List<PointF> list = new List<PointF>();
// int width = this.Width-80; 如果是在窗体中画的话,计算下MARGIN及TransparencyKey透明下窗体不建议,建议用双窗体在带上边框角度阴影
// int height = this.Height-80;
/左上
list.Add(new PointF(0, 50)); // start point x(left0) y(top 50)
list.Add(new PointF(50,50));// start point x(left50 y(top 50)
list.Add(new PointF(50, 0)); // start point x(left 50 y(top 0)
list.Add(new PointF(100, 0)); // start point x(left 100 y(top 0)
list.Add(new PointF(100, 50)); // satrt point x(left 100, y(top 50)
list.Add(new PointF(width, 50));
list.Add(new PointF(width, height));
list.Add(new PointF(0, height));
PointF[] points = list.ToArray();
GraphicsPath tempvar= new GraphicsPath();
tempvar.AddPolygon(points);
return tempvar; }
然后呢在(我是在窗体中重绘的图形)也可以建立个按钮,事件写入 this.Region = Get_GPath(); this.Invalidate();
protected override void OnPaint(PaintEventArgs e)
{// this.BackColor = Color.AliceBlue;
// this.TransparencyKey = Color.AliceBlue;
base.OnPaint(e);
e.Graphics .FillPath ( Brushes .Gray , Get_GPath());
}
这样就实现了...复杂的一些游戏应用这个实现不了的...