不规则窗体设计
- 格式:doc
- 大小:133.00 KB
- 文档页数:6
Delphi如何用PNG做支持Alpha通道的不规则窗口Windows 2000后,为了支持类似MAC界面的Alpha通道混合效果,提供了GDI+,提供了很多的界面功能函数,可以实现很好的界面效果。
例如可以使用UpdateLayeredWindow来实现窗体的颜色透明。
但是一旦Form 被定义为利用LayeredWindow ,窗口的绘图不再响应沿用多年的WM_Paint 消息。
UpdateLayeredWindow(hwnd:HWND; // 窗口句柄hdcDst:HDC; // 目标DCptDst:pPoint; // 目标的TopLeftSize:pSize; // 显示SizehdcSrc:HDC; // 源DCptSrc:pPoint; // 源DC 的T opLeftcrKey:COLORREF; // 透明颜色值Blend:pBlendFunction; // Alpha 混合函数dwFlags:DWord // 一组标志位常量);这个函数不但可以设置Alpha Blend ,还可以完成类似本例中的异形窗口显示。
标志常量有以下几个:ULW_COLORKEY = $00000001; // 透明颜色设置是需要的ULW_ALPHA = $00000002; // Alpha 混合是需要的ULW_OPAQUE = $00000004; // 保持不透明不管设置哪些常量,首先与SetLayeredWindowAttributes 函数一样,需要对窗口设置一个新的扩展风格标志:WS_EX_LAYERED 。
设置窗口的扩展标志,只对Windows2000 以上操作系统有效,设置方法与设置普通窗口风格的方法一样:SetWindowLong(Handle, GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE)or WS_EX_LAYERED // 增加这个标志);注意:如果设置了Alpha 混合标志,必须提供BlendFunction 的值。
VBA中的GUI设计与窗体操作技巧VBA(Visual Basic for Applications)作为一种常用的编程语言,广泛应用于Microsoft Office套件中,能够为用户提供更好的用户界面(GUI)和窗体操作体验。
在本文中,将介绍VBA中的GUI设计与窗体操作技巧,帮助读者更好地了解和应用这些功能。
GUI设计是指在编程过程中,通过设计精美的用户界面来提高程序的整体体验和交互性。
在VBA中,我们可以使用用户窗体(UserForm)来实现GUI设计,并通过各种控件(例如文本框、按钮、下拉列表等)来实现用户与程序的交互。
下面将介绍一些常用的GUI设计技巧。
首先,为了保证用户界面的一致性和美观性,可以使用VBA内置的控件样式。
在用户窗体的“属性”窗格中,可以选择标题栏样式、背景颜色和文本颜色等,以使窗体的外观与整个应用程序保持一致。
其次,在设计用户界面时,需要考虑布局的合理性和易读性。
可以使用容器控件(如分组框、标签页)来将相关控件组织在一起,并使用布局控件(如表格布局、流式布局)来实现各种排列方式。
此外,还可以使用标签(Label)控件来提供文字说明,帮助用户理解和使用程序。
另外,为了增加程序的交互性,可以根据用户的操作来动态改变控件的属性。
例如,可以根据复选框的选中状态来启用或禁用其他控件,或者根据下拉列表的选项来改变文本框的内容。
这些动态改变控件属性的技巧可以使程序更加智能和灵活。
除了GUI设计,窗体操作也是VBA中重要的一部分。
窗体操作指的是如何管理和控制用户窗体的显示和隐藏。
下面将介绍一些窗体操作的技巧。
首先,可以使用窗体的Show方法来显示用户窗体,并在需要的地方调用Hide方法来隐藏窗体。
通过管理窗体的显示和隐藏,可以使用户在需要时看到所需的窗体,提高程序的可用性。
其次,可以使用窗体的Modal属性来设置窗体的模式。
当模式属性为True时,用户需要先处理完窗体上的事件,才能继续使用应用程序中的其他功能。
qt实现不规则窗口的方法一、前言Qt是一个强大的跨平台开发框架,它提供了丰富的API和工具,使得开发者能够轻松地创建各种类型的应用程序。
在Qt中,窗口是应用程序的重要组成部分,而不规则窗口的实现则可以让应用程序更加具有个性化和视觉吸引力。
本文将介绍如何使用Qt实现不规则窗口的方法。
二、不规则窗口的实现方法1. 使用自定义窗口类在Qt中,可以通过继承QMainWindow或QDialog类,并重写其中的一些方法来实现不规则窗口。
首先,需要定义一个自定义窗口类,并在其中重写windowRect()和sizeHint()方法,以获取窗口的尺寸和形状。
然后,可以使用setWindowFlags()方法来设置窗口的样式,以实现不规则窗口的效果。
2. 使用布局管理器Qt提供了多种布局管理器,如QHBoxLayout、QVBoxLayout、QGridLayout等,这些布局管理器可以根据需要自动调整窗口的大小和位置。
通过使用布局管理器,可以将不规则形状的窗口部件放置在窗口中,并自动调整窗口的大小和位置,以达到不规则窗口的效果。
3. 使用形状控件Qt提供了一些形状控件,如QFrame、QPushButton等,这些控件可以设置不同的形状,如矩形、圆形、椭圆形等。
通过将这些形状控件放置在窗口中,并使用布局管理器自动调整它们的位置和大小,可以实现不规则窗口的效果。
三、示例代码下面是一个简单的示例代码,展示了如何使用自定义窗口类和布局管理器实现不规则窗口:```cpp#include <QApplication>#include <QMainWindow>#include <QVBoxLayout>#include <QWidget>class IrregularWindow : public QWidget {public:IrregularWindow(QWidget *parent = nullptr) : QWidget(parent) {}void setShape(QRect rect) {m_shape = rect;update();}protected:void paintEvent(QPaintEvent *event) override {QPainter painter(this);painter.drawRect(m_shape);}private:QRect m_shape;};int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget *centralWidget = new QWidget;QVBoxLayout *layout = new QVBoxLayout(centralWidget);QWidget *widget1 = new IrregularWindow;widget1->setWindowFlags(widget1->windowFlags() | Qt::FramelessWindowHint);widget1->setShape(QRect(50, 50, 200, 100));layout->addWidget(widget1);QWidget *widget2 = new QPushButton("Button");layout->addWidget(widget2);QWidget *widget3 = new QFrame(centralWidget);widget3->setFrameShape(QFrame::Rectangle);layout->addWidget(widget3);centralWidget->show();return app.exec();}```在上面的代码中,我们创建了一个自定义窗口类IrregularWindow,它继承自QWidget,并重写了paintEvent()方法来绘制自定义的形状。
网上也看过很多做.NET窗体的例子,我只是把网上的这些东西综合了一下,主要有下面这些特点:1、边框是半透明的,透明度可根据需要自己更改;2、可以改变窗体的大小,改变后样式不变;3、窗体的边框是不规则的;4、重点解决了窗体会出现闪烁的问题,在窗体移动的时候也不会闪烁;5、使用方便,只要将AlphaFormPanel拖动到一般的窗体上就可以实现换肤;设计思路说明:一、.NET下处理一个窗体部分透明我所知道的有两种方法:1、用一张支持Alhpa通道的图片来处理半透明,这种方式处理出来的效果会很好,甚至可以用一张动态的图片来做背景。
相信有人看过那个游动的鱼的程序,鱼的边缘是半透明的,就是用这种方式做的。
这种方式整个窗体都是通过UpdateLayeredWindow画出来的,如果要在上面加控件的话,所有的控件都要自己来绘制,显然在具体的项目中用这种方式的话会大大增加开发的难度。
有兴趣的人可以看看这个程序:/Files/liutao409/游动的鱼.rar关键的代码就是根据这种支持Alhpa通道的图片来绘制窗体[DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]public static extern int UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst, ref Point pptDst, ref Size psize,IntPtr hdcSrc, ref Point pptSrc, Int32 crKey, ref BLENDFUNCTION pblend, Int32 dwFlags);public void SetBits(Bitmap bitmap){if (!haveHandle) return;if(!Bitmap.IsCanonicalPixelFormat(bitmap.PixelFormat)| !Bitmap.IsAlphaPixelFormat(bitmap.PixelFor mat))throw new ApplicationException("图片必须是32位带Alhpa通道的图片。
Windows提供了下面的一些API函数可以定义矩形和非矩形的区域句柄.CreateEllipticRgn 生成定义椭圆形区域句柄.CreatePolygonRgn 生成定义多边形区域句柄.CreateRectRgn 生成定义矩形区域句柄.CreateRoundRectRgn 生成定义圆角矩形区域句柄根据上面函数定义的区域句柄,就可以利用函数SetWindowRgn设置窗口的边界。
通常可以在窗口的OnCreate事件的处理过程中添加如下代码:void __fastcall TFrom1::FromCreate(TObject *Sender ){HRGN hr;MouseButtonDown = false;hr = CreateEllipticRgn(0,0,Image1->Width,Image1->Height);SetWindowRgn(Handle , ht , True );}在窗体大小改变时,可以在窗体的OnResize事件的处理过程中添加上述代码。
通常,这些非矩形的窗体是为了实现界面的特殊显示效果,往往没有标题兰。
想把一个没有标题烂的窗口移动比较困难。
下面介绍采用两种不同原理的方法把一个没有标题栏的窗体进行移动。
一:在窗体的OnMouseDown、OnMouseUp、OnMouseMove等事件的处理过程中添加一定的代码,实现在鼠标左键按下后移动时,改变窗体的Left和Top属性,就可以实现移动无标题的窗体的移动。
创建一个窗体,并添加组件修改其属性,设计如下:组件名称属性Form1 BorderStyle:bsNone;FormStyle:fsStayOnTop;AutoSize:True;Image1 AutoSize:TruePopMemu1 第一个菜单命令:Name:C1;Caption:关闭(&C)说明:设置Image1组件的Picture属性时,静态的装入一个图片文件,可以从Windows的日期/时间属性中获取一个图片。
VBA窗体设计实例介绍VBA(Visual Basic for Applications)是一种用于自动化任务和自定义功能的编程语言,广泛应用于Microsoft Office套件中。
VBA窗体设计是使用VBA创建自定义用户界面的过程。
在本文中,我们将探讨VBA窗体设计的实例,介绍如何使用VBA创建用户友好的界面,并实现与用户的交互。
窗体设计的基本概念在VBA中,窗体是一种用户界面元素,用于显示和接收用户输入。
窗体可以包含各种控件,如文本框、按钮、复选框等,用于展示数据和执行操作。
通过设计窗体,我们可以创建自定义的界面,以满足特定的需求。
创建窗体要创建一个窗体,我们需要打开VBA编辑器,并选择要添加窗体的工作簿或文档。
然后,选择插入菜单中的用户窗体选项,即可创建一个新的窗体对象。
在窗体上,我们可以添加各种控件,并设置它们的属性。
添加控件在窗体上添加控件是实现用户界面的关键步骤。
通过选择“工具箱”中的控件,我们可以将它们拖放到窗体上。
常用的控件包括文本框、标签、按钮、列表框等。
在添加控件后,我们可以通过设置其属性来定义其外观和行为。
设置属性每个控件都有一组属性,用于定义其外观和行为。
例如,文本框控件有属性如下:•Name:控件的名称,用于在VBA代码中引用该控件。
•Caption:控件的文本标签。
•Value:控件的当前值。
•Enabled:指示控件是否可用。
•Visible:指示控件是否可见。
通过设置这些属性,我们可以自定义控件的外观和行为,使其适应特定的需求。
编写事件处理程序在窗体上的控件上发生事件时,我们可以编写VBA代码来响应这些事件。
例如,当用户单击按钮控件时,可以编写一个事件处理程序来执行相关的操作。
通过编写事件处理程序,我们可以实现与用户的交互,并对用户输入做出响应。
实例:创建一个简单的登录窗体下面是一个使用VBA创建简单登录窗体的示例:1.创建一个新的工作簿,并打开VBA编辑器。
2.在VBA编辑器中,选择插入菜单中的用户窗体选项,创建一个新的窗体对象。
SetWindowRgn,CreateRectRgnIndirect,CreateEllipticRgnIndirect,CreatePolygonRgn,CombineRgnVC++提供了CRgn类和SetWindowRgn()函数来实现不规则的程序窗口。
创建一个不规则窗口的过程是:首先定义一个CRgn类,并用各种初始化函数创建CRgn类的具体区域,然后调用CWnd::SetWindowRgn()函数创建不规则窗口。
CRgn是从CgdiObject衍生出来的类,用来确定一个多边形、椭圆或者由多边形及椭圆合成的范围,在程序中主要会用到CreateRectRgnIndirect()、CreateEllipticRgnIndirect()、CreatePolygonRgn()三个函数。
CreateRectRgnIndirect(LPCRECT lpRect)函数创建一个矩形区域,参数lpRect指定所创建的矩形区域在窗口用户区中的left(左)、top(上)、right(右)、bottom(下)坐标。
例如:CRgn MyRgn;RECT m_rect;m_rect.left=0; m_rect.top=0; m_rect.right=500; m_rect.bottom=300;MyRgn.CreateRectRgnIndirect( &m_rect );CreateEllipticRgnIndirect(LPCRECT lpRect)函数创建一个椭圆形区域,参数lpRect指定所创建的椭圆形区域在窗口用户区中的left(左)、top(上)、right(右)、bottom(下)坐标,如果指定right 坐标与left坐标之差等于bottom坐标与top坐标之差,则创建的区域是一个圆。
例如:CRgn MyRgn;RECT m_rect;m_rect.left=0; m_rect.top=0; m_rect.right=500; m_rect.bottom=300;MyRgn.CreateEllitpticRgnIndirect( &m_rect );CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode)函数创建一个多边形区域,参数lpPoints指向一个POINT结构数组,在POINT结构数组中每个POINT结构项,用来确定多边形顶点在窗口用户区中的坐标;nCount说明POINT结构数组中POINT结构项的数目,也就是多边形的顶点数;nMode指定多边形的填充方式,一般使用ALTERNATE方式。
tkinter复杂窗口布局实例摘要:如何设计出更合理的tkinter窗口布局,局部内容随窗口尺寸变化而变化。
tkinter 与matplotlib结合,在tkinter窗口中嵌入matplotlib图像,图像尺寸可以随窗口变化而相应变化。
tkinter控件提供了三种布局方式:place、grid、pack:place可以提供精确的控件定位,grid适合表格类似的布局,pack提供的是相对位置的布局方式。
对于简单的窗口,特别是尺寸固定的窗口,直接将Label、Entry、Button的控件按以上三种方式布局即可。
但对于复杂的窗口,需要考虑各个控件的位置如何跟随窗口尺寸变化,这里需要灵活使用三种布局方式,以及Frame控件。
下面实例中将会应用到三种布局方式,tkinter 窗口中嵌入matplotlib绘图,并需要自动调整画板尺寸,以适应窗口尺寸变化。
实例:设计一个小程序,可以根据输入的数据绘制柱状图,横坐标和纵坐标的范围、刻度可以自定义调整。
效果如下:默认尺寸下:窗口最大化后,数据区域尺寸不变,绘图区域自动根据窗口尺寸变化:过程:1.导入所需要的库:import tkinter as tkimport matplotlib.pyplot as pltfrom matplotlib.pylab import mplfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAggimport numpy as np2.新建窗口,设置标题、默认尺寸、位置,最小尺寸等:root = ()root.title("绘图窗口") # 标题root.geometry("1000x600+100+100") # 窗口默认大小,注意长高尺寸中间为字母‘x’root.minsize(1000, 600)root.resizable(1, 1) # 可改变大小,第一个1表示长度可变,第二个1表示高度可变。
《设计窗体》教学设计方案(第一课时)一、教学目标1. 知识与技能:学生能够了解窗体的基本观点和作用,掌握窗体的基本操作技能。
2. 过程与方法:通过实际操作,学生能够掌握窗体设计的流程和方法。
3. 情感态度价值观:培养学生自主探究和团队协作的精神,提高学生对信息技术的兴趣。
二、教学重难点1. 教学重点:学生能够设计和制作简单的窗体。
2. 教学难点:学生在设计窗体过程中,能够合理布局和美化窗体界面。
三、教学准备1. 准备教学用具:计算机、投影仪、窗体设计软件等。
2. 准备教学内容:设计窗体的相关案例和素材。
3. 安排时间表:根据教学计划,每周安排两节课时,共计八周时间进行窗体设计软件的教学。
4. 教学方法:采用理论讲解和实践操作相结合的方式,确保学生能够熟练掌握窗体设计软件的应用技巧。
5. 评估方式:通过学生完成的作品和教室表现,评估学生对窗体设计软件的实际掌握情况。
6. 预期效果:学生能够熟练掌握窗体设计软件的应用,能够独立完成简单的窗体设计任务,并能够在实际工作中应用所学知识。
7. 反馈机制:在教学过程中,及时收集学生的反馈意见和建议,以便不息改进教学方法和内容。
总之,通过以上安排和准备,我们将为学生提供一次全面的窗体设计软件教学体验,帮助他们掌握这一重要的计算机技能,为未来的职业发展打下坚实的基础。
四、教学过程:(一)导入新课1. 展示几个用Word制作的精美电子贺卡,引起学生的兴趣。
2. 展示一些不规范或不常用的计算机术语,让学生猜测术语的含义,以此来激发学生的好奇心。
3. 引出“窗体”的观点,介绍窗体的作用。
(二)探索新知1. 通过多媒体演示,展示窗体的制作过程。
2. 学生观察窗体的制作过程,思考以下问题:(1)窗体上都有哪些元素?(2)这些元素各自的作用是什么?(3)在制作窗体时,有哪些注意事项?(三)小组合作1. 将学生分成若干小组,每组选定一名组长。
2. 给每个小组发放一张电子表格,表格中包含一些基本信息,如姓名、性别、年龄等。
使用C++绘制不规则的窗体减小字体增大字体作者:不详来源:转载发布时间:2010-02-23 07:43:00一、序言在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我们常用的,“记事本”,“扫雷”,等等。
矩形窗体,具有编程实现简单,风格简洁的优点,所以在普通文档应用程序和简单小游戏中使用足矣。
但在某些娱乐游戏程序中使用就略显呆板些了,这时若用不规则窗体替代原先的矩形窗体,将会使这类程序更添情趣。
典型的例子有windows 自代的Media Player,新版本的Media Player 有个控制面板的选项,选中这些面板,播放器就以选中的面板形状出现,这时的播放器比以前版本的Media Player的古老矩形界面要生动有趣的多了。
要实现不规则窗体不是太难,知道了基本原理后,你也可以创建各种有趣的不规则窗体。
二、实现原理所有的Windows 窗体都位于一个称为“region”中,窗体的大小如果超出“region”的范围,windows 会自动裁剪超出"region"范围那部分的窗体,使其不可见。
所以,要创建不规则窗体有两个步骤:第一步就是创建不规则"region".第二步就是将窗体放到创建的“region”中。
其中第二步很简单就调用一条语句即可。
在SDK中调用API函数SetWindowRgn,该函数原型如下:int SetWindowRgn( HWND hWnd, HRGN hRgn, BOOL bRedraw );其中hWnd为待设置的窗体句柄,hRgn为已经创建的"region"句柄,bRedraw代表是否要重绘窗体。
在MFC 中使用窗口类CWnd的成员函数int CWnd::SetWindowRgn(HRGN hRgn, BOOL bRedraw );该函数的参数意义与API中同名函数相同。
相对与第二步,创建不规则窗体的第一步要复杂许多,并且不规则窗体越复杂,创建其"region"的过程也越复杂。
目标不规则窗体也称为异型窗体,像迅雷的飞鸟型窗体就是啦。
这篇文章就是要实现这样的窗体。
计划&方案根据上一篇文章继续扩展。
我们有几种方案实现不规则窗体。
迅雷就是用一张图片作为窗体的形状,那么图片的类型我们也要考虑进来。
现在是png图片的天下,自带背景透明;对于bmp图片,需要程序处理一下。
对于常规图形如圆形,只需要SetWindowRgn就可以搞定。
对于复杂图形,需要用一点技巧来做。
下面用例子来演示圆形和复杂图形的不规则窗体。
关于SetWindowRgn,参见官方文档。
实践一、圆形窗体这里还要借助另一个类CRgn,它作为SetWindowRgn的主要参数,通过CreateEllipticRgn方法初始化出圆形区域。
具体代码如:CRgn rgn;rgn. CreateEllipticRgn(0,0,96,96);SetWindowRgn(rgn,TRUE);接下来封装一个方法来加载png图片:void ShowPicture(){CImage img;HRESULT result = img.Load(_T("prime.png"));//加强透明化for(int i = 0; i < img.GetWidth(); i++){for(int j = 0; j < img.GetHeight(); j++){unsigned char* pucColor = reinterpret_cast<unsigned char *>(img.GetPixelAddress(i , j));pucColor[0] = pucColor[0] * pucColor[3] / 255;pucColor[1] = pucColor[1] * pucColor[3] / 255;pucColor[2] = pucColor[2] * pucColor[3] / 255;}}CDC *pDC = GetWindowDC();int nX = img.GetWidth();int nY = img.GetHeight();img.Draw( pDC->m_hDC,0,0);ReleaseDC( pDC );}二、复杂图形窗体引用vckbase的文章《Windows 中不规则窗体的编程实现》中“根据图像创建region”一节。
标准的Windows窗⼝是矩形的,但在有些时候我们需要⾮矩形的窗⼝,⽐如圆形的、甚⾄是不规则的。
借助CWnd类的SetWindowRgn函数可以创建不规则形状窗⼝。
CWnd::SetWindowRgn的函数原型如下: int SetWindowRgn( HRGN hRgn, // 窗⼝区域句柄 BOOL bRedraw ); // 是否重画窗⼝ CRgn类封装了关于区域的数据和操作。
通过(HRGN)强制操作可以从CRgn类中取得其HRGN值。
CRgn提供了CreateRectRgn、CreateEllipticRgn和CreatePolygonRgn成员函数,分别⽤以创建矩形、(椭)圆形和多边形区域。
创建⾮矩形窗⼝的⽅法如下: ⾸先,在窗⼝类中定义区域类成员数据(如CRgn m_rgnWnd); 其次,在窗⼝的OnCreate函数或对话框的OnInitDialog函数中调⽤CRgn类的CreateRectRgn、CreateEllipticRgn或CreatePolygonRgn函数创建所需的区域,并调⽤SetWindowRgn函数。
下例将⽣成⼀个椭圆窗⼝。
1. 在Developer Studio中选取File菜单中的New命令,在出现的New对话框中选择创建MFC AppWizard(exe)框架应⽤程序,并输⼊项⽬名为EllipseWnd。
设定应⽤程序类型为基于对话框(Dialog based),其它选项按缺省值创建项⽬源⽂件。
2. 使⽤资源编辑器从主对话框(ID为IDD_ELLIPSEWND_DIALOG)删除其中的所有控制,并从其属性对话框(Dialog Properties)中设定其风格为Popup、⽆标题条和边框。
3. 在EllipseWndDlg.h源⽂件中给主对话框类CEllipseWndDlg增加⼀个CRgn类保护型数据成员m_rgnWnd,它将定义窗⼝的区域。
4. 在EllipseWndDlg.cpp源⽂件中修改主对话框类CEllipseWndDlg的OnInitDialog()函数,增加m_rgnWnd的创建,并将其定义为窗⼝区域。
用VC++实现异形窗口.大连铁道学院(116028)李文辉随着Microsoft凭借Windows在操作系统上取得的巨大成绩,Windows用户界面也日益成为业界标准。
统一的界面给广大用户对应用软件的学习与使用带来了很大方便。
但每天都面对同一副面孔,日久天长难免会产生一些厌倦,开发一些“离经叛道”,一改Windows应用程序千篇一律的“标准”界面,一定会给你带来一种清新的感觉。
标准Windows应用程序窗口一般为带有标题栏的浅灰色矩形外观,因而“异形”对话框/窗口也主要是颜色与外形上动手脚。
1.改变背景颜色改变对话框(窗口)的背景颜色是最简单的改变Windows应用程序外观的方法,根据Windows创建与管理机理,一般有两种方法。
一种是处理WM_CTLCOLOR 消息,首先创建所选背景颜色的刷子,然后调用SetBkColor()或SetDialogBkColor()以所创建的刷子来绘制窗口或对话框的背景。
需要重画窗口或对话(或对话的子控件)时,Windows向对话发送消息WM_CTLCOLOR,应用程序处理WM_CTLCOLOR消息并返回一个用来绘画对话背景的刷子句柄。
另外一种是响应Windows的WM_ERASEBKGND消息,Windows向窗口发送一个WM_ERASEBKGND消息通知该窗口擦除背景,可以使用VC++的ClassWizard 重载该消息的缺省处理程序来擦除背景(实际是用刷子画),并返回TRUE以防止Windows擦除窗口。
2.改变窗口外形通过使用新的SDK函数SetWindowRgn(),可以将绘画和鼠标消息限定在窗口的一个指定的区域,因此实际上是使窗口成为指定的不规则形状(区域形状)。
“区域”是Windows GDI中一种强有力的机制,区域是设备上的一块空间,可以是任意形状,复杂的区域可以由各个小区域组合而成。
Windows内含的区域创建函数有CreateRectRgn()、CreatePolyRgn()、CreatePolygonRgn()、CreateRoundRectRgn()和CreateEllipticRgn(),再通过CombineRgn()来组合区域,即可得到复杂形状的区域,获得复杂形状的窗口外形。
一个不规则形状的窗口
可以使用新的SDK函数SetWindowRgn。
该函数将绘画和鼠标消息限定在窗口的一个指定的区域,实际上使窗口成为指定的不规则形状。
1, 使用AppWizard创建一个基于对的应用程序并使用资源编辑器从主对话资源中删除所在的缺省控件、标题以及边界。
2, 给对话类增加一个CRgn数据成员,以后要使用该数据成员建立窗口区域。
class CTestDlg : public CDialog
{
……
private:
CRgn m_rgn ; // window region
……
};
3, 修改OnInitDialog函数建立一个椭圆区域并调用SetWindowRgn将该区域分配给窗口:
BOOL CTestDlg::OnInitDialog()
{
……
//Get size of dialog .
CRect rcDialog ;
GetClientRect (rcDialog );
// Create region and assign to window .
m_rgn.CreateEllipticRgn(0 , 0 , rcDialog.Width(),rcDialog.Height());
SetWindowRgn((HRGN)m_rgn, TRUE );
……
}。
access窗体设计知识点本文将介绍Access窗体设计的知识点,涵盖了必要的基础知识和技巧,以帮助读者更好地设计和定制Access数据库的窗体。
下面将详细阐述几个主要的知识点。
一、窗体设计概述1.1 窗体的作用和目的Access窗体是用于数据输入、浏览和操作的界面,它可以提供友好的用户界面,使用户能够方便地访问数据库中的信息。
1.2 窗体设计原则在设计窗体时,应遵循以下原则:- 简洁明了:窗体的布局、控件的排列应简洁明了,使用户能够轻松理解和操作。
- 一致性:窗体应保持一致的样式和风格,使用户在不同的窗体之间能够有一致的操作体验。
- 合理布局:窗体各部分的布局应合理分配,便于用户浏览和操作。
- 控件选择:根据实际需求选择合适的控件,如文本框、列表框、按钮等。
- 数据验证:对于用户输入的数据,应进行必要的验证,确保数据的准确性和完整性。
二、窗体的创建与设置2.1 创建窗体使用Access的窗体设计器,可以通过向导或手动创建新的窗体。
2.2 窗体属性设置在创建窗体后,可以设置窗体的属性,包括标题、背景颜色、字体样式等,以及与其他表单关联。
2.3 控件的添加与设置在窗体上可以添加各种控件,如文本框、下拉框、按钮等,并进行相应的属性设置,如名称、大小、显示内容等。
三、窗体布局与设计3.1 布局工具与对齐Access提供了多种布局工具,如网格、对齐线等,可辅助进行控件的对齐和排列。
3.2 表单视图与设计视图Access提供了两种视图:表单视图和设计视图。
表单视图用于数据的浏览和输入,设计视图用于窗体的设计和排版。
3.3 分组与标签页可以使用分组和标签页等功能将窗体分为多个部分,便于布局和管理复杂的窗体。
3.4 窗体样式设置Access提供了多种预设的窗体样式,也可以自定义窗体的样式和主题,以满足个性化的需求。
四、数据绑定与控件设置4.1 控件的数据源设置在窗体设计中,可以将控件与数据表或查询关联,实现数据的读取、修改和提交等操作。
vba窗体设计实例VBA窗体设计实例VBA(Visual Basic for Applications)是一种基于Microsoft Visual Basic的编程语言,广泛应用于Microsoft Office软件中。
在Excel、Word等Office软件中使用VBA可以实现各种自动化操作,提高工作效率。
在VBA中,我们可以通过设计窗体来实现更加灵活的操作界面。
本文将介绍几个VBA窗体设计的实例。
一、创建用户登录窗体用户登录窗体是一个常见的功能,在此我们以Excel为例,介绍如何通过VBA创建一个简单的用户登录窗体。
1.首先打开Excel,并按下快捷键“Alt+F11”进入VBA编辑器界面。
2.在左侧“项目资源管理器”中右键点击“Microsoft Excel对象”,选择“插入”-“用户窗体”。
3.在弹出的对话框中,选择“模式对话框”,并设置标题和大小等属性。
4.在窗体上添加需要的控件,例如标签、文本框、按钮等。
5.双击按钮控件,在代码编辑器中编写代码,验证用户名和密码是否正确,并根据结果弹出相应提示信息或打开主界面。
二、创建数据录入窗体数据录入窗体是一个常见的功能,在此我们以Access为例,介绍如何通过VBA创建一个简单的数据录入窗体。
1.首先打开Access,并创建一个数据表,包含需要录入的字段。
2.在左侧“导航窗格”中右键点击“表单”,选择“设计视图”。
3.在窗体上添加需要的控件,例如标签、文本框、下拉框等。
4.双击保存按钮控件,在代码编辑器中编写代码,将录入的数据保存到数据表中,并弹出相应提示信息。
5.在Access主界面中打开该表单,即可进行数据录入操作。
三、创建图形化界面图形化界面可以让用户更加直观地了解程序运行状态和结果,在此我们以Excel为例,介绍如何通过VBA创建一个简单的图形化界面。
1.首先打开Excel,并按下快捷键“Alt+F11”进入VBA编辑器界面。
2.在左侧“项目资源管理器”中右键点击“Microsoft Excel对象”,选择“插入”-“用户窗体”。
【C#界面】完美实现无毛边异形窗体实现效果图1:实现效果图2:实现效果图3:异形窗体的实现思路(一)、采用UpdateLayeredWindow这个api函数基于Png图alpha通道绘制异形窗口优点:真正意义上的异形窗口缺点:用了WS_EX_LAYERED后当前窗体不处理paint事件,所以窗体上无法绘制控件,但这个控件确存在,而且可以响应事件解决无法绘制控件方法:1、思路:采用双层窗口:底层背景窗口层与顶层控件层,用控件层Show()背景层,同时处理窗体的窗口移动事件,让另外一个窗体同步移动或者做其它事情。
2、实现:底层背景层:采用UpdateLayeredWindow这个api函数基于带Alpha通道的Png 图绘制顶层控件层:方法一:采用无边框窗口,把窗口背景颜色BackColor设置一个不常用颜色例如:ff00ff颜色,且把窗口TransparencyKey颜色属性设跟背景色BackColor一样(意义:去除带背景色的区域从而显示后面背景层)方法二:采用无边框窗口,把窗口背景设为背景层对应位置的位图,给人一种透明的效果,但是编辑会有所限制。
(SkinWhetherTank属性可以切换这两种透明模式)优点:可以解决显示控件的问题,不影响控件的使用缺点:方法一会让部分控件有毛边,方法二会让窗体编辑受限制。
(缺点有待解决,望高手指点)属性:GradientTime:控件层渐变特效时长(越小越快)。
MainPosition:窗口在绘图层位置。
SkinBack:设置或获取绘图层窗口背景。
SkinMobile:窗体是否可以移动。
SkinOpacity:设置或获取绘图层窗口透明度(0-255)。
SkinShowInTaskbar:绘图层是否出现在Windows任务栏中。
SkinSize:设置或获取绘图层窗口大小。
SkinTrankColor:绘图层需要透明的颜色。
SkinWhetherTank:绘图层是否开启位图仿透明注意(SkinOpacity < 255时,此属性为False可达到背景透明,控件不透明的效果。
用设计各种形状的窗体界面
本文的主要内容就是探讨一下各种不规则窗体的实现过程
窗体是程序设计最常见,最普通,也是最容易受到程序员忽视的编程对象。
一般来说,在Visual Basic .Net针对窗体的编程是不需要人为介入的,因为可视化编程工具
Visual Studio .Net已经按照窗体的缺省状态实现了。
但是在最近遇到的应用程序中。
我们发现越来越多的应用程序中使用到各种不同规则的窗体,这些不同规则的窗体给应用程序带来异常的情趣和不同平常的效果的同时,也促使使用者思考这样一个问题,如何创建这些窗体?在Visual Basic .Net中提供了一种简单、直接创建不规则窗体的方法,本文的主要内容就是探讨一下这些方法具体的实现过程。
下面就来详细介绍在Visual Basic .Net中实现五种不同规格窗体的方法,即:椭圆形、扇形、圆形、环形和三角形。
掌握了这五种不同形状窗体的实现方法后,我想对于其他规则的窗体就不应该有什么问题了。
Visual Basic .Net中创建、使用MDI窗体也是本文的重要内容之一,MDI是
Multi Document Interface的简称,即:多文档界面,MDI最早出现于Windows 2.0中,最先使用到MDI的应用程序是Excel电子表格。
为了方便使用者同时能够操作多份电子表格,Excel就采用了MDI来解决这个问题。
到了Windows3.1中,MDI在应用程序中得到了更大范围的应用。
其中Windows 3.1中的程序管理器和文件管理器都采用了MDI。
目前MDI在应用程序中依然被广泛采用。
下面就首先来介绍一下Visual Basic .Net创建不规则窗体的相关知识和具体实现方法。
一.简介Visual Basic .Net中定制不规则窗体时使用的类库:
Visual Basic .Net中定制不规则窗体主要使用到Region类和GraphicsPath类,其中以GraphicsPath类最为重要。
GraphicsPath类和Region类分别位于.Net FrameWork SDK 中的"System.Drawing.Drawing2D"命名空间和"System.Drawing"命名空间。
在
Visual Basic .Net中具体实现各种不规则窗体的过程中,GraphicsPath主要作用是根据程序员的要求,通过GraphicsPath中提供的方法绘制不同规则的形状。
Region的主要作用是依靠GraphicsPath实例来初始化Region对象,从而形成不规则窗体。
其具体的实现过程是,首先通过GraphicsPath类构造函数创建GraphicsPath实例,然后通过GraphicsPath中提供的方法按照程序员的要求绘制形状,最后以GraphicsPath实例来初始化Region对象。
完成不规则窗体。
可见了解、掌握GraphicsPath类对于理解本文介绍的实现方法是非常必要的。
表01和表02分别是GraphicsPath类的常用方法和常用属性及其说明:
在本文用Visual Basic .Net实现的椭圆形、扇形、圆形、环形和三角形等形状窗体中就使用到GraphicsPath中的AddEllipse方法(绘制椭圆形)、AddPie方法(绘制扇形)、AddLine方法(绘制直线)等方法。
GraphicsPath中提供了丰富的方法,这对实现更复杂的窗体形状是非常有用的,但完全掌握这些方法的使用方法也需要花费大量的时间和精力。
图01:【中定制不规则窗体】新建项目对话框
7. 把Visual Studio .Net的当前窗口切换到【Form1.vb(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中往Form1窗体中拖入下列组件,并执行相应的操作:五个Button组件,用以定制五种不同形状窗体,并在这个Button组件拖入Form1的设计窗体后,双击它们,则系统会在Form1.vb文件分别产生这五个组件的Click事件对应的处理代码。
4. 在上述组件拖入窗体后,分别按照图02所示排列并设置窗体中的各组件:
图02:【中定制不规则窗体】项目的设计界面
8. 把Visual Basic .Net当前窗口切换到Form1.vb的代码编辑窗口,并用下列代码替换Form1.vb中的Button1的Click事件对应的处理代码,下列代码功能是改变当前窗体形状为椭圆形:
9. 用下列代码替换Form1.vb中的Button2的Click事件对应的处理代码,下列代码功能是改变当前窗体形状为扇形:。