无标题栏和边框的窗体
winform实现窗体最大化并遮盖任务栏的方法
winform实现窗体最大化并遮盖任务栏的方法篇11.引言:简述Winform窗体最大化并遮盖任务栏的需求。
2.方法一:设置窗体属性。
1.FormBorderStyle属性设置为None。
2.WindowState属性设置为Maximized。
3.方法二:通过代码控制窗体大小和位置。
1.获取屏幕分辨率和任务栏高度。
2.设置窗体高度为屏幕分辨率减去任务栏高度。
3.设置窗体位置以使窗体遮盖任务栏。
4.注意事项:提及可能遇到的问题及解决方案。
正文在Winform应用程序中,有时我们需要实现窗体最大化并遮盖任务栏的效果。
这种需求可以通过两种方法来实现。
方法一:通过设置窗体属性我们可以通过设置窗体的FormBorderStyle属性和WindowState属性来实现窗体最大化并遮盖任务栏的效果。
具体步骤如下:1.将窗体的FormBorderStyle属性设置为None,这样窗体就没有边框了。
2.将窗体的WindowState属性设置为Maximized,这样窗体就会最大化显示。
方法二:通过代码控制窗体大小和位置我们也可以通过编写代码来控制窗体的大小和位置,以实现窗体最大化并遮盖任务栏的效果。
具体步骤如下:1.获取屏幕的分辨率和任务栏的高度。
2.根据屏幕分辨率和任务栏高度,计算窗体的高度,使其能够遮盖任务栏。
3.设置窗体的位置,使其能够显示在屏幕的合适位置。
无论采用哪种方法,都需要注意一些事项。
例如,需要确保窗体的最大化状态能够正确显示,以及避免出现窗体闪烁等问题。
如果遇到问题,可以通过查找相关资料或向社区寻求帮助来解决。
篇21.引言:简述需求,即在Winform中实现窗体最大化并遮盖任务栏。
2.方法一:设置窗体属性,实现窗体最大化。
3.方法二:通过代码调整窗体大小和位置,遮盖任务栏。
4.示例代码:展示具体的实现过程。
5.总结:总结两种方法的优缺点,根据实际情况选择合适的方法。
正文在Winform应用程序中,有时我们需要实现窗体最大化并遮盖任务栏的效果。
在VB中实现移动没有标题栏的窗口
End Sub
Private Sub Command1_Click()
End ’退出程式
End Sub
这种方法实现起来比第一种方法更容易,只有几行代码,并且没有那么多的变量,窗体被拖动时和普通窗体相同,只有一个虚框随鼠标的移动而移动,当释放鼠标时窗体才移动到相应的位置。用到了两个API函数。
private sub form_load()
form1.show
form1.refresh
load form2 ‘装入慢速窗体
form2.show ‘显示慢速窗体
end sub
如果省略form1.show方法,则需装入慢速窗体后才能显示信息窗体。refresh方法让visual basic更新显示后再执行后面的命令,缺省情况下,visual basic只在不执行其他代码时,才有机会刷新显示。慢速窗体form2装入后,用下列代码将快速窗体fomr1卸出:
方法二 (可用
这种方法通过消息的发送实现移动无标题窗体。当鼠标按下、移动或释放时,将鼠标在窗体上按下的消息(消息值为HTCAPTION)发出,就能拖动窗体了。代码如下:
Private Declare Function ReleaseCapture Lib "user32" () As Long
public const wm_syscommand = &h112
最新48取消窗体标题栏与边框汇总
importjavax.swing.JButton;
importjava.awt.event.ActionListener;
importjava.awt.event.ActionEvent;
importjava.awt.Color;
publicclassCancelFrameTitleBorderextendsJFrame {
finalJLabel label =newJLabel();//用标签显示logo
label.setIcon(newImageIcon(getClass().getResource("logo.png")));
label.setBounds(10, 27, 112, 98);
getContentcvoidrun() {
try{
CancelFrameTitleBorder frame =newCancelFrameTitleBorder();
frame.setVisible(true);
}catch(Exception e) {
e.printStackTrace();
}
}
});
}
/**
button.addActionListener(newActionListener() {//添加按钮的事件监听器
publicvoidactionPerformed(ActionEvent e) {
do_button_actionPerformed(e);//调用按钮事件处理方法
}
});
button.setBounds(230, 172, 90, 30);
textArea=newJTextArea();//用文本域显示系统信息
QT无边框窗体最大化遮挡windows任务栏的问题
QT无边框窗体最大化遮挡windows任务栏的问题最近写的一个基于QT的程序的UI,要求整个窗体的风格浑然一体。
包括窗体的边框什么的。
这个其实定义了QSS啥的就没什么复杂的了,纯粹体力活了。
但是如果想整体制定一个窗体的话就需要让窗体的属性是无边框(frameless)的。
只有这样才能彻底的脱离windows的窗体管理器。
才能使用自己的标题栏(好像大家现在都流行自定义标题栏哈)。
但是问题来了。
frameless的窗体在最大化后会将windows的任务栏给遮挡住,这个是我们不想要的。
毕竟咱这个不是游戏,还是得留着任务栏的。
后来琢磨了半天也没想到啥好方法,后来看到Nokia 的Ovi套件的窗体,顿时发现就是我想要的style啊。
没有边框,但是自定义的标题栏。
最大化还不遮挡taskbar。
本着别人能做出来俺也能做出来的想法。
继续琢磨。
先用spy++看了下他的窗体flags,看看是不是有啥猫腻。
发现木有,人家就是一个frameless的wiget。
成了,这下踏实了自己琢磨吧。
之后想到了下面的这个方法最直接的想法肯定是用win32 api去查找taskbar的位置,然后设置自己窗体的正确位置。
这个就带来一个最郁闷的问题,这玩意没法跨平台了。
几经翻阅qt的手册。
发现QT确实还是挺伟大的。
有这么个函数const QRect QDesktopWidget::availableGeometry( int screen = -1 ) constReturns the available geometry of the screen with index screen. What is available will be subrect of screenGeometry() based on what the platform decides is available (for example excludes the dock and menu bar on Mac OS X, or the task bar on Windows). The default screen is used if screen is -1.QApplication::desktop()->availableGeometry();大概意思就是能得到目前screen上能够使用的最大尺寸(当然已经抛去了taskbar了)。
MFC无标题栏对话框美化
1.无标题栏和边框的对话框Border 属性改为NoneTitle bar属性改为False2.对话框添加OnInitDialog函数OnInitDialog 在vs2010中实现为虚函数,所以在“项目”-> “类向导”-> “虚函数”->找到对应虚函数添加即可,就这么简单。
3.移动无标题栏的对话框拖动无标题窗口时,欺骗WINDOW在鼠标点下是像WINDOW发送一个鼠标选中WINDOW标题栏的消息!添加鼠标左键消息。
void CMyPlayerDlg::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call default//使窗口可以拖动PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM (point.x, point.y));CDialog::OnLButtonDown(nFlags, point);}在OnLButtonDown的鼠标响应消息添加红色部分代码!WM_NCLBUTTONDOWN 鼠标选中非客户区域(标题栏)HTCAPTION 鼠标选中了标题栏MAKELPARAM (point.x, point.y)) 返回一个LPARAM的值PostMessage函数功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。
消息队列里的消息通过调用GetMessage和PeekMessage取得。
原型与参数如下:函数原型:BOOL PostMessage(UINT Msg,WPARAM wParam,LPARAM lParam);参数说明:Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
vbforn各个属性
==================form的属性=================▲ActiveControl 活动控件(只读)无论窗体是否是活动的?如果在窗体上的所有控件都是不可见的或不可使用的,那么将产生一个运行时错误。
▲Appearance 绘图风格(只读)0 平面,1(缺省值)3D▲AutoRedraw 自动重绘tf-------------------------------------------------▲BackColor 背景颜色当BackStyle 属性的设置值为0(透明)时有效▲ForeColor 前景颜色▲BorderStyle 边框样式,对Form 对象和Textbox 控件在运行时是只读的。
0vbBSNone 无(没有边框或与边框相关的元素)。
1vbFixedSingle 固定单边框。
可以包含控制菜单框,标题栏,"最大化"按钮,和"最小化"按钮。
?只有使用最大化和最小化按钮才能改变大小。
2vbSizable 可调整的边框。
可以使用设置值1列出的任何可选边框元素重新改变尺寸。
(缺省)3vbFixedDouble 固定。
可以包含控制菜单框和标题栏,不能包含最大化和最小化按钮,不能改变尺寸4vbFixedToolWindow 固定。
显示关闭按钮并用缩小的字体显示标题栏。
任务条中不显示。
5vbSizableToolWindow 可变大小。
显示关闭按钮并用缩小的字体显示标题栏。
任务条中不显示。
?将BorderStyle 设置为0就会删除边框。
如果希望窗体有边框而没有标题栏、控制菜单框、最大化按钮和最小化按钮,则应从窗体Caption 属性中删除任何文本,同时将窗体的ControlBox、MaxButton 和MinButton 属性设置为False。
▲MaxButton 是否有"最大化"按钮(BorderStyle 属性非0值有效)▲MinButton 是否有"最小化"按钮。
原创]C++builder组件属性详解
原创]C++builder组件属性详解尽管C++Builder的组件种类繁多,每种组件又都有许多不同的属性,但是在这些众多的属性中有相当一部分是大多数组件所共有的。
因此我们应当主要掌握这些共有组件。
在设计时设置属性一般是通过属性窗口来进行的。
在属性窗口设置组件属性的操作步骤如下:1)打开相应对象的属性窗口。
2)从属性列表中选定属性名称。
3)在属性窗口的右列输入或选择新的属性值。
注意:有些属性在设置值右侧有…按钮,单击该按钮会出现相应的设置对话框,设置值需要在对话框中选定。
在代码中设置组件属性的方法是:对象名称->属性名称=设置值;下面我们来介绍一些主要组件的主要属性。
窗体form的属性:1.Caption:标题。
是窗体和各种可视化控件的共有属性,用来指定窗体标题栏中的说明文字,默认与控件名相同,但程序员可以在对象监视器和代码中修改。
在代码中修改的格式为:Form->Caption = "da";// da表示程序员输入的标题。
通常,对于Windows系统中的多文档界面( MDI )应用程序,当主框架窗口中的子窗口以最大化显示的时候,应用程序的标题栏中显示的内容为“ <应用程序名> - <打开的文档名>”;当子窗口以非最大化窗口显示的时候,主框架窗口中只显示应用程序的名称,子窗口有自己的标题栏,其中显示该窗口打开的文件名。
所以,当窗体的显示方式发生了改变后,应该立即改变标题栏中的内容。
2.Name:变量名。
是窗体和所有控件的共有属性,系统给予其默认名字,但程序员可以在对象监视器修改,不要在代码中修改。
通常,应该在系统开发的设计阶段就将整个工程中所有窗体的名称确定,然后在编程阶段,根据设计文档修改窗体的Name属性。
一般情况下,不要在程序运行期间通过代码修改Name属性。
3.Enabled:可操作性。
决定了对象在运行时是否允许用户进行操作。
它是逻辑型:true表示允许用户操作并可对其操作作出响应;false表示禁止用户操作,此时对象呈灰色。
vfp使用的小技巧
如何在Visual FoxPro 中制作软件封面一个好的软件还需要有一个漂亮的封面,用Visual FoxPro 编制应用程序时往往会忽视这一问题。
在Visual FoxPro 5.0中我们一样可以制作出如同微软的WORD、POWERPOINT等软件的漂亮的封面。
一、创建表单集。
Visual FoxPro的应用程序一般都至少有一个表单,进入主表单中,选择…表单‟菜单中的…创建表单集‟,创建一个表单集(FORMSET1)。
需要注意的是,如果你的表单中的自定义的属性、方法等,当创建表单集之后,这些属性和方法会升级为表单集的属性和方法,原程序中的调用则需要进行修改。
设置表单集的Windowtype属性为1-模式。
二、制作封面表单。
选择…表单‟菜单中的…添加新表单‟,建立一个新的表单。
设置它的Name属性为“FormStart”,AlwaysOnTop属性为.T.,AutoCenter属性为.T.,BorderStyle属性为2-固定对话框,Caption属性为"",ControlBox属性为.F.,MaxButton属性为.F.,MinButton属性为.F.,Movable属性为.F.,ShowWindow属性为2-作为顶层表单,WindowType属性为1-模式。
既是封面,自然要有一个漂亮的底图,此图片可自行用绘图软件制作,大小可自定,只是别忘了在底图上写清软件的名称。
底图做好之后,设置封面表单的Picture属性为此图片名即可。
三、显示用户名和用户单位。
见过WORD封面的人可能都会注意到其封面上有一提示“本软件使用权属于”,其下面是安装Windows 95时输入的用户名和用户单位,通过对Windows 95的注册表的访问,在Visual FoxPro中也可以实现这一设计。
在…表单控件‟工具条上选择…标签‟并在表单体上点击一下即可生成一个标签,设置它的Name属性为LabelTitle,Caption属性为…本软件使用权属于:‟,Autosize属性为 .T.,BackStyle属性为0-透明。
VB笔试模拟试卷288(题后含答案及解析)
VB笔试模拟试卷288(题后含答案及解析) 题型有:1. 选择题 2. 填空题选择题(每小题2分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。
1.如果准备读文件,打开顺序文件”text.dat”的正确语句是A.Open“text.dat”For Write As #1B.Open“text.dat”For Binary As #1C.Open“text.dat”For Input As #1D.Open“text.dat”For Random As #1正确答案:C2.数据结构主要研究的是数据的逻辑结构、数据的运算和( )。
A.数据的方法B.数据的存储结构C.数据的对象D.数据的逻辑存储正确答案:B解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。
3.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是( )。
A.逻辑设计B.需求分析C.详细设计D.物理设计正确答案:B解析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。
其中需求分析阶段常用的工具是数据流图和数据字典。
4.程序的基本控制结构是( )。
A.Do-Loop结构、Do-Loop While结构和For-Next结构B.子程序结构,自定义函数结构C.顺序结构,选择结构和循环结构D.单行结构,多行结构和多分支结构正确答案:C5.在窗体上绘制一个名称为Label1的标签,然后编写如下事件过程:Private Sub Form_Click( ) Dim arr(10,10)As Integer Dim i As Integer,j As Integer For i =2 To 4 For j =2 To 4 arr(i,j)=i*j Next j Next i Label1.Caption=Str(arr(2,2)+arr(3,3)) End Sub 程序运行后,单击窗体,在标签中显示的内容是( )。
mfc关闭标题栏的样式
mfc关闭标题栏的样式在MFC(Microsoft Foundation Classes)中关闭窗口标题栏的样式可以通过以下几种方式实现:1. 使用无边框窗口样式:可以在创建窗口时,将窗口样式设置为无边框样式,例如:DWORD dwStyle = WS_POPUP | WS_SYSMENU;CreateEx(0, AfxRegisterWndClass(0), _T("My Window"), dwStyle, rect, pParentWnd, 0);这样窗口将没有标题栏和边框。
2. 自定义绘制标题栏:可以通过自定义绘制窗口的标题栏来隐藏或修改标题栏的样式。
在窗口的`OnNcPaint`函数中,可以使用GDI函数绘制自定义的标题栏,例如:void CMyWnd::OnNcPaint()。
{。
// 自定义绘制标题栏的代码。
}。
在自定义的绘制代码中,可以使用GDI函数绘制标题栏的背景、图标、按钮等元素。
3. 使用窗口样式修改函数:可以使用`ModifyStyle`函数或`ModifyStyleEx`函数来动态修改窗口的样式。
例如,可以在窗口的`OnInitDialog`函数中调用`ModifyStyle`函数来移除标题栏的样式:BOOL CMyDlg::OnInitDialog()。
{。
CDialogEx::OnInitDialog();// 移除标题栏样式。
ModifyStyle(WS_CAPTION, 0);return TRUE;}。
这样窗口将在初始化时移除标题栏。
需要注意的是,关闭标题栏可能会影响窗口的交互和系统默认的行为,因此在进行此类修改时需要谨慎考虑。
同时,以上方法适用于MFC框架,具体实现可能因应用程序的需求而有所不同。
C++Builder图片放大缩小
C++Builder程序设计学号:************学生所在学院:信息工程学院****:**********教师所在学院:信息工程学院2010年1月5日2010级07班实现图像的放大、缩小、任意角度旋转功能邱剑信息工程学院摘要:当前,图形是多媒体技术中一种重要的信息媒体,数据量极大并且多种多样的存储格式,阻碍了多媒体技术的发展,为了有效地使用各类图形文件,为使多媒体技术蓬勃发展,图像的变化工作就显得极其重要。
C++Builder具有强大的更新和移植能力,应用也非常之广泛,学习C++Builder对程序设计思维能力有很好的锻炼本文主要介绍了如何利用C++程序设计实现了图像的任意倍数的放大、缩小、任意角度旋转功能。
在数字图像处理应用领域的简单运用及其重要意义,首先阐述了C++Builder软件的基本窗体结构,以及其属性,并简单的介绍图像处理软件的方法和步骤。
本设计表明,通过简单的程序设计,可以实现强大的功能。
实现功能的方式多种多样灵活多变,在日常的学习中要多注意各种函数的使用,这样才能更快的提高编写能力,实现更加强大的功能关键词:C++ 放大缩小旋转Abstract:At present, the image is one of the most important multimedia information media, data great quantity and variety of storage formats, obstruct the multimediatechnology development, in order to effectively use of various graphics files,to enable multimedia technology vigorous development, image changes jobs arevery important. C + + Builder has strong update and transplantation ability,applications are very extensive, study c + + Builder for program design thinkingability have very good exerciseThis paper mainly introduced how to use c + + programming realize image arbitrarymultiples magnification, reducing, arbitrary AngleRotating function. Indigital image processing applications, the simple use and its significance,first expounded c + + BuilderThe basic form structure, software and itsattributes, and briefly introduces image processing software methods and stepsof.This design shows that through simple programming, may realize the powerfulfunctions. Functions by many waysFlexible, in daily learning to pay moreattention to the use of various functions, such ability improved writingability,Realize more powerful functionsKeywords: C++ enlarge reduce rotationC++的简单介绍C++,这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,它是一种使用非常广泛的计算机编程语言。
C#WPF建立无边框(标题栏)的登录窗口
C#WPF 建⽴⽆边框(标题栏)的登录窗⼝前⾔:笔者最近⽤c#写WPF 做了⼀个项⽬,此前未曾做过完整的WPF 项⽬,算是⼀边学⼀边⽤,⽹上搜了不少资料了不少资料,效率,效率当然当然是不敢恭维的,是不敢恭维的,有时会在⼀些很简单的问题上纠结很长时间,⾎与泪有时会在⼀些很简单的问题上纠结很长时间,⾎与泪的教训可不少的教训可不少。
不过,正如电视剧某榜⾥的⼀句话:既然我活了下来,就不会⽩⽩活着!笔者怎么也算挣扎过了,有些经验与教训可以分享,趁着记忆深刻总结写下来。
希望后来者少⾛弯路,提⾼⼯作效率。
如果有写得不好的地⽅,希望读者能够指正,⼀起进步!---------------------------------今天先从登录窗⼝说起:1. 效果图先来看看效果图,简洁,风格统⼀,完全不会被Window 操作系统主题的影响。
2. 实现⽅法WPF 做这样的窗⼝⾮常简单,只有需在窗⼝设计中设置两个属性,⼀个是AllowsTransparency, 设置为 Ture; ⼀个是 WindowStyle, 设置为None 。
注:是Window的属性,不要选中其他的控件。
另外,如果AllowsTransparency="True",那么 WindowStyle只能为 None, VS2015 已经做到连动设置,只要勾选AllowsTransparency,后⼀个也跟着变了。
但 VS2008 还是需要⽤户分别设置,不然会报错。
还有⼀个问题不得不提,AllowsTransparency="True" 之后就⽆法使⽤ WindowsFormsHost控件了,因为就算⽤了,WFH⾥的任何控件也是透明⽆法显⽰出来的,⽐如ReportViewer!3.窗⼝任意空⽩地⽅实现⿏标拖拽标题栏上有最⼤化最⼩化和关闭的按钮,其中在登录窗⼝我们⼀般是不会使⽤最⼤化按钮的。
可是不得不说,标题栏还有⼀个很实⽤的作⽤,就是可以拖拽整个窗⼝,⽤户只要单击标题栏不放,就可以拖到桌⾯的任何地⽅。
Form类
typeValidationCompleted:当使用validatingtype属性完成当前值的分析 时发生
Page 13
案例2
Page 14
NumericUpDown控件
常用属性如下:
常用方法
Downbutton:显示对象集合中的下一顷
Setscrollstate:设置指定的滚劢状态标志
Upbutton:显示集合中的上一页 updateEdittext:更新数字显示框中的文本以显示选定顷
常用事件如下:
Scroll:在用户或通过代码滚劢工作区时发生 valueChanged:在以某种方式 更改value属性后发生
beepOnError:获取或设置一个值,当用户键入其拒绝的字符时发出系 统警告声
FormatProvider:获取或设置在执行类型验证时使用的格式提供程序 hidePromptOnLeave:指示当掩码文本框失去焦点时输入掩码中的提示 字符是否隐藏 insertKeyMode:获取或设置掩码文本框控件的文本插入模式 Mask:获取或设置运行时使用的输入掩码
Hide:对用户隐藏控件 Show :显示窗体 showDialog:将窗体显示为模式对话框
Page 4
Form类常用事件如下
Activated:当使用代码或用户激活窗体时发生
Click:单击窗体时发生
Deactivate:当窗体失去焦点并丌再是活劢窗体时发生 FormClosed:关闭窗体后发生
Page 8
NotifyIcon组件
balloonTipClicked: 在单击气球提示时发生
无标题栏窗口移动方法种种
无标题栏窗口移动方法种种首先,看看在正常情况下系统是怎样来移动程序窗口的。
当使用者在程序窗口标题栏区域(非工作区)内,按下鼠标左键时将会发生下列事情:◆系统向该窗口过程函数发送WM_NCLBUTTONDOWN消息。
◆WM_NCLBUTTONDOWN消息最终将传送到窗口过程函数中的DefWindowProc()函数中去。
◆DefWindowProc()函数将根据鼠标左键按下并移动,以及HTCAPTION标识所表示鼠标按下时的位置诸多信息,来执行该消息的缺省动作即窗口随同鼠标光标一起移动的操作。
下面作为练习来测试一下,首先在窗口回调函数(即窗口过程函数)中设置下列语句:case WM_NCLBUTTONDOWNreturn 0;然后,同样是在窗口标题栏内按住鼠标左键并移动鼠标,但此时窗口却并不随同鼠标一起移动了,这是怎么回事?这是因为上述语句中设有“return 0”语句的缘故。
该语句使得WM_NCLBUTTONDOWN消息未能传递到DefWindowProc()函数,就在窗口过程函数中提前返回了,当然移动窗口的操作就无从进行了。
这也从反面印证了一个事实,那就是,最后完成移动窗口的操作将是由DefWindowProc()函数来完成的。
通过上面的分析可以勾划出这样一个操作过程:即用户在窗口标题栏内按下鼠标左键→系统发送WM_NCLBUTTONDOWN消息→DefWindowProc()函数接收消息→用户移动鼠标→DefWindowProc()函数执行窗口随同鼠标一起移动的操作。
由此得出一个结论,那就是要想实现移动窗口的操作,必须具备两个条件:一是要按下鼠标左键并移动(DefWindowProc()函数将检测这个条件);二是在按下鼠标左键时能发送WM_NCLBUTTONDOWN消息并返回HTCAPTION标识。
下面就根据以上的分析,在没有窗口标题栏的情况下,采取骗取DefWindowProc()函数的方式,来实现对无标题栏窗口实体的移动操作。
创建磨砂窗体的方法
创建磨砂窗体的方法
创建磨砂窗体的方法有很多种,以下提供两种:
方法一:
1. 打开一个窗口类,设置窗口的样式为无边框,并隐藏标题栏。
2. 创建一个窗口类,设置窗口的样式为无边框,并隐藏标题栏。
3. 在窗口类中添加一个图像控件,用于显示磨砂效果。
4. 在图像控件中加载一张图片,并设置其透明度为50%。
5. 在窗口类中添加一个定时器,每隔一段时间就对图像控件进行一次重绘,以实现磨砂效果。
6. 在定时器的重绘事件中,使用位运算将图像控件的像素值进行模糊处理,并使用透明度混合算法将模糊后的像素值与原始像素值进行混合。
7. 重复执行步骤6,直到达到所需的磨砂效果。
方法二:
1. 打开一个窗口类,设置窗口的样式为无边框,并隐藏标题栏。
2. 在窗口类中添加一个控件数组,用于显示磨砂效果。
3. 在控件数组中添加一些按钮控件或标签控件,用于模拟磨砂效果。
4. 在窗口类中添加一个定时器,每隔一段时间就对控件数组中的控件进行一次重绘,以实现磨砂效果。
5. 在定时器的重绘事件中,使用随机数生成器随机改变每个控件的透明度、大小和位置,以模拟磨砂效果。
6. 重复执行步骤5,直到达到所需的磨砂效果。
以上是两种创建磨砂窗体的方法,可以根据实际需求选择适合自己的方法。
无边框窗口移动
第一步://先定义一个坐标点对象 mypointprivate Point mypoint;第二步:在窗体的点击事件中写private void Form1_MouseDown(object sender, MouseEventArgs e) {//鼠标在窗体内按下时,自动记录鼠标的 x y 值,并将它们改为负数mypoint = new Point(-e.X,-e.Y);}第三步:在窗体的鼠标移动事件中写private void Form1_MouseMove(object sender, MouseEventArgs e){/*鼠标在窗体内移动时,首先判断e.Button按下的是哪个鼠标按钮再判断* 是否等于左键按下,MouseButtons.Left这句的意思是鼠标左键按下状态*/if (e.Button == MouseButtons.Left){/*新建一个坐标点对象,它的坐标等于(Control.MousePosition;)* 桌面上坐标的位置*/Point myposition = Control.MousePosition;/*myposition.offset中的Offset是坐标平移的意思,现在将在窗体* 内点击左键时产生的负数加进来,也就等于现在鼠标在桌面上的坐标* 减去鼠标在窗体内的坐标位置,就等于现在窗体的位置*/myposition.Offset(mypoint.X, mypoint.Y);/*this.DesktopLocation这句的意思是获取或设置窗体在桌面上的位置* 它的位置来自myposition*/this.DesktopLocation = myposition;}其实这是个让人说过无数次的内容,但是最近在写一个测试小程序的时候发现了一个问题,今天没什么事做,就做个小的总结。
通过拖动窗体的客户区来移动一个窗体并不是很新鲜的内容,很多的程序都用到了这一点,尤其是一些可以换肤的程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
技巧1 无标题栏和边框的窗体
如果希望制作无标题栏和边框的窗体,那么可以使用API函数。
在VBE窗口中单击菜单“插入”→“用户窗体”,双击窗体,在其代码窗口中输入下面的代码:
#001 Private Declare Function DrawMenuBar Lib "user32" (ByVal Hwnd As Long) As Long
#002 Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long) As Long #003 Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
#004 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long #005 Private Const GWL_STYLE As Long = (-16)
#006 Private Const GWL_EXSTYLE = (-20)
#007 Private Const WS_CAPTION As Long = &HC00000
#008 Private Const WS_EX_DLGMODALFRAME = &H1&
#009 Private Sub UserForm_Initialize()
#010 Dim IStyle As Long
#011 Dim Hwnd As Long
#012 If Val(Application.Version) < 9 Then
#013 Hwnd = FindWindow("ThunderXFrame", Me.Caption)
#014 Else
#015 Hwnd = FindWindow("ThunderDFrame", Me.Caption)
#016 End If
#017 IStyle = GetWindowLong(Hwnd, GWL_STYLE)
#018 IStyle = IStyle And Not WS_CAPTION
#019 SetWindowLong Hwnd, GWL_STYLE, IStyle
#020 DrawMenuBar Hwnd
#021 IStyle = GetWindowLong(Hwnd, GWL_EXSTYLE) And Not WS_EX_DLGMODALFRAME
#022 SetWindowLong Hwnd, GWL_EXSTYLE, IStyle
#023 End Sub
#024 Private Sub UserForm_Click()
#025 Unload Me
#026 End Sub
代码解析:
窗体初始化时使用API函数去除其标题栏和边框。
第1行到第8行代码,API函数的声明。
第12行到第16行代码,获取窗口句柄。
第17行到第20行代码,去除窗体标题栏。
第21、22行代码,去除窗体边框。
第24行到第26行代码,窗体的单击事件,单击窗体后关闭该窗体。
窗体运行后如图1-1所示,单击后关闭该窗体。
图1-1 无标题栏和边框的窗体。