excel2007窗体控件件矩形英文咋说

无框圆角矩形窗体 - lllljz的专栏
- 博客频道 - CSDN.NET
1741人阅读
我是一个C#的初学者 只要涉及到windows窗体编程 都希望窗体的外观比较好看 不是系统默认的那样
对于C# 更改窗体外观感觉并不那么轻松 更改窗体外观涉及到使用GDI+ 我所知道的有两种方法:
有系统边框的窗体 处理窗体的Paint方法,在paint方法中 参数e.Graphics属性将返回一个对象 用来作画 但是这个画布的区域是窗体的客户区 所以无法修改到窗体的标题栏 边框等位置的。要更改标题栏只有获取整个窗口的句柄 这样创建的画布是整个窗体区域 但是对于我这样的初学者来说 对于句柄 windowsAPI还很不熟悉 我相信大多数的初学者或者学生都和我有相同的困惑 所以我使用了第二种办法 无边框窗体无边框的窗体 把FormBorderStyle的属性设置为none 就去掉了边框 剩下的窗体客户区和和整个窗体大小是相同的 再使用e.Graphics作画就是在整个窗体上作画 我主要也是描述这样的一种方法 相信对很多和我一样的人有很多帮助
对于一个窗体 它除了外观以外还有2个主要特征:1.可以拖动 可以拖拽大小 2.具有控制按钮 关闭 最大化 最小化。我主要描述第二种方法
题外话:在网上随便一搜C#自定义窗体之类的 总是出现一大片的文章 以无边框的为例 什么都说得很详细了 但是关键的拖动拖拽大小确没有 总是少掉了关键部分。不止是窗体的代码是这样 其它各类源代码也是如此 很难在网上下载到关键的代码和高质量的代码 个人觉得好多人喜欢学习别人的东西 确不愿意把自己会的 关键的东西拿出来和别人分享。导致现在网上的充斥着大量重复的无用的代码
回到主题 介绍处理无边框窗体的经验,下面是最终效果:
这就是一个无边框窗体 可以注意到它的外观 四个角是圆的 有控制按钮 并且还可以拖拽,当鼠标移动到窗体的四个角和边缘的时候可以拖拽大小
这个窗体没有标题栏和边框的限制 控件可以放在窗体上任何地方
下面就是直奔主题了:
先说一说制作这个窗体的思路(窗体集成自System.Windows.Forms.Form):
1.设置FormBorderStyle属性为none 让它成为一个无边框窗体
2.设置窗体的Region属性 该属性设置窗体的有效区域 而我们把窗体的有效区域设置为圆角矩形 窗体就变成圆角的了
3.自定义控件 3个按钮 控制窗体的最大化 最小化 还原 关闭
4.使窗体可以拖动 在边缘按下鼠标可以拖拽大小
主要涉及GDI+中两个重要的类 Graphics和GraphicsPath类 分别位于System.Drawing和System.Drawing.Drawing2D
首先我们创建一个C# windows窗体应用程序项目 将默认的Form1改名成MainForm 设置FormBorderStyle属性为none 让它成为一个无边框窗体
接着我们需要这样一个函数 private void SetWindowRegion() 此函数设置窗体有效区域为圆角矩形,以及一个辅助函数 private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)此函数用来创建圆角矩形路径,将在SetWindowRegion()中调用它
public void SetWindowRegion()
System.Drawing.Drawing2D.GraphicsPath FormP
FormPath = new System.Drawing.Drawing2D.GraphicsPath();
Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);
FormPath = GetRoundedRectPath(rect, 10);
this.Region = new Region(FormPath);
private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)
int diameter =
Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));
GraphicsPath path = new GraphicsPath();
path.AddArc(arcRect, 180, 90);
arcRect.X = rect.Right -
path.AddArc(arcRect, 270, 90);
arcRect.Y = rect.Bottom -
path.AddArc(arcRect, 0, 90);
arcRect.X = rect.L
path.AddArc(arcRect, 90, 90);
path.CloseFigure();//闭合曲线
在窗体尺寸改变的时候我们需要调用SetWindowRegion()将窗体变成圆角的
void MainForm_Resize(object sender, EventArgs e)
SetWindowRegion();
到此 窗体的形状部分就完成了 通过创建不同的GraphicsPath对象 可以将窗体设置为任意形状 三角形 六边形 椭圆 以及任何不规则图形来制作不规则窗体
然后可以通过给窗体设置背景图片或者在窗体上作画来更改外观 无论图片是什么形状只要超过了窗体有效区域的部分都会被裁掉 这样给换皮肤带来了极大的方便 只需要换一张背景图而已 不需要去做圆角图片 就像迅雷7那样 换皮肤就换一张背景图片
然后是自定义控件 3个按钮 通过GDI+可以绘制比较漂亮的按钮 这部分相对简单很多 就不叙述了,这方面的资料也很好找
将这3个按钮控件拖到窗体右上角设置它们的Anchor属性为top right 让它们的位置始终相对于窗体右上角改变 并编写它们的单击事件处理代码 模拟窗体的最大化最小化和关闭
这里需要注意一点的就是 最大化的时候直接使用this.WindowState = FormWindowState.Maximized会遮盖任务栏 在执行这行代码前先限制窗体的最大尺寸为屏幕的工作区
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:272584次
积分:4002
积分:4002
排名:第3206名
原创:97篇
转载:194篇
评论:41条
(14)(3)(5)(9)(3)(1)(5)(5)(4)(1)(1)(7)(10)(7)(16)(25)(8)(5)(13)(3)(11)(5)(10)(20)(26)(33)(38)(5)真心求CreateWindow 后如何设置窗体大小 ,比如设置 长200 宽100的矩形
[问题点数:20分,结帖人jyzdtn]
真心求CreateWindow 后如何设置窗体大小 ,比如设置 长200 宽100的矩形
[问题点数:20分,结帖人jyzdtn]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。请教:用鼠标左键在窗体上点击后拖动画出一个矩形,用vb怎么写?_百度知道
请教:用鼠标左键在窗体上点击后拖动画出一个矩形,用vb怎么写?
提问者采纳
SY)-(X, X As Single, Y As Single)
draw = TrueEnd SubPrivate Sub Form_MouseMove(Button As Integer.ClsLine (SX, Shift As Integer, X As Single, Shift As Integer, X As Single改了一下楼上的Dim SX As IntegerDim SY As IntegerDim draw As BooleanPrivate Sub Form_MouseDown(Button As Integer, Y As Single)draw = False
Line (SX, , BElseEnd IfEnd SubPrivate Sub Form_MouseUp(Button As Integer, , Y As Single)If draw = True ThenMe, Y), SY)-(X, Y), Shift As Integer
您好,要让画过的矩形保存在窗体上,该如何写?
Dim SX As IntegerDim SY As IntegerDim draw As BooleanDim sp As LongPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
draw = TrueEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)If draw = True ThenMe.ClsLine (SX, SY)-(X, Y), , BElseEnd IfEnd SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)draw = False
Line (SX, SY)-(X, Y), , B
b = &sp& & spSet a = Controls.Add(&VB.Shape&, b)a.Visible = TrueIf X - SX &= 0 Thena.Left = Xa.Width = Abs(X - SX)Elsea.Left = SXa.Width = X - SXEnd IfIf Y - SY &= 0 Thena.Top = Ya.Height = Abs(Y - SY)Elsea.Top = SYa.Height = Y - SYEnd IfMe.Clssp = sp + 1End Sub嗯,这样就可以了!-----美化版!空格键清屏~Dim SX As IntegerDim SY As IntegerDim draw As BooleanDim sp As LongPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 32 Thenp = Me.Leftc = Me.TopUnload MeMe.HideMe.Left = pMe.Top = cMe.ShowEnd IfEnd SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
draw = TrueEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)If draw = True ThenMe.ClsLine (SX, SY)-(X, Y), , BElseEnd IfEnd SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)draw = False
Line (SX, SY)-(X, Y), , B
b = &sp& & spSet a = Controls.Add(&VB.Shape&, b)a.Visible = TrueIf X - SX &= 0 Thena.Left = Xa.Width = Abs(X - SX)Elsea.Left = SXa.Width = X - SXEnd IfIf Y - SY &= 0 Thena.Top = Ya.Height = Abs(Y - SY)Elsea.Top = SYa.Height = Y - SYEnd IfMe.Clsa.Shape = 4a.BackStyle = 1a.ZOrderRandomizea.BackColor = RGB(255 * Rnd(), 255 * Rnd(), 255 * Rnd())sp = sp + 1End Sub
提问者评价
其他类似问题
鼠标左键的相关知识
其他2条回答
spape 控件 vb 默认选项卡里 第一列 第九个
Dim SX As IntegerDim SY As IntegerPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
SY = YEnd SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Line (SX, SY)-(X, Y), , BEnd Sub
您好,在拖动时能看见矩形,要怎么写?
那要麻烦一些,今天没时间了。抽空给你写
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎样把控件排成规则的矩形方阵?
[问题点数:20分,结帖人screen12]
怎样把控件排成规则的矩形方阵?
[问题点数:20分,结帖人screen12]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2014年11月 VC/MFC大版内专家分月排行榜第二2014年1月 VC/MFC大版内专家分月排行榜第二2013年10月 VC/MFC大版内专家分月排行榜第二2013年9月 VC/MFC大版内专家分月排行榜第二2013年6月 VC/MFC大版内专家分月排行榜第二2013年4月 VC/MFC大版内专家分月排行榜第二2012年6月 VC/MFC大版内专家分月排行榜第二
2012年10月 VC/MFC大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 windows窗体控件库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信