设计各种形状的窗体界面

合集下载

解读VB中的图形窗体(异形窗体)

解读VB中的图形窗体(异形窗体)

====================================================================== 相信大家看过许多形状怪异的窗口吧?可是在VB里,系统提供的只是一个矩形的窗体。

如何在VB里实现这种异形窗体呢?其实原理很简单。

首先,在内存中构建一个想要的图形,再通过API函数将窗体设置为此形状,最后将图片放上去就可以了。

关键在于如何构建这个想要的图形。

让我们看看下面这个图:。

这张图片中既有白色,也有其他彩色,而我们想要的颜色正是除白色以外的其它颜色。

我们可以这样想:在内存中创建一幅一样大小的空的图像,然后只把我们需要的颜色(即非白色)输入内存。

这样,就可以创建出我们想要的图形了。

以上是原理,接下来介绍几个API函数。

GetPixel:获取指定对象的某个点的颜色。

定义为:Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long其中hdc为图形对象的句柄,x、y为坐标。

SelectObject:向内存中的指定地点输入图形。

定义为:Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long其中hdc为内存中图形对象的句柄,hObject为欲输入的图像。

CreateCompatibleDC:在内存中创建一个与指定对象一样的场景(可以理解为图像)。

定义为:Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long其中hdc为指定对象的句柄。

窗体

窗体

退 出
目 录 上一页 下一页
3、 选项组控件:是由一个组框及一组复 选框、选项按钮或切换按钮组成。 【例8-3】在“教师基本信息”窗体的主体节
添加一个选项组控件,显示性别字段。
退 出
目 录 上一页 下一页
4、组合框、列表框控件 列表框控件可以包含一列或几列数 据,用户只能从列表中选择值,而不能 输入新值。组合框的列表可以包含多行 数据,用户既可以进行选择,也可以输 入数据,这是列表框和组合框的区别。
目 录 上一页 下一页
退 出
【例8-2-1】在“教师基本信息”窗体的主体节 垂直添加三个文本框,三个文本框分别命名 “num”、“name”和“dat”,三个文本框 分别显示窗体数据源“教师”表中的“教师编 号”、“姓名”和“工作时间”三个字段值, 其中第一个文本框显示为灰色状态,三个文本 框对应的标签标题分别为“教师编号”、“姓 名”和“工作时间”,三个文本框对应标签的 名称分别是“Lab1”、“Lab2”和“Lab3”。
常用选择字段的小技巧:
目 录 上一页 下一页 返 回 退 出
1、如果要选择相邻的字段,单击 其中的第一个字段按下Shift键单击 最后一个字段;
2、如果要选择不相邻的字段,按 下Ctrl键单击要包含的每个字段名称。
方法二:使用工具箱添加控件
目 录 上一页 下一页 返 回 退 出
例7:打开一个新的窗体“设计”视图, 并在窗体中添加一个文本框控件。 (1)打开一个新的窗体“设计”视图;
退 出
例3:创建包含学号、姓名、性别、年龄 和照片信息的纵栏式窗体,名称为 “LF03”。 1. 创建选项卡窗体组单击窗体向导; 2. 在此对话框中选择学生表,并选择相应 字段,单击下一步,选择纵栏表; 3.单击下一步按钮,在弹出的对话框中输 入窗体的标题,然后单击完成按钮。

窗体的基本类型

窗体的基本类型

1.快速创建带子窗体的窗体 .
【例5-14】 创建“学生成绩”窗体,如图560所示效果。
2.子窗体的源对象为窗体 .
【例5-15】 使用已经存在的窗体,创建“学 生成绩”窗体。 说明:以窗体作为子窗体源对象时,该窗体 的“默认视图”要设置为“数据表”;如不 修改,则子窗体将如一般窗体的纵栏式显示, 一次只显示一笔记录。
快速创建窗体
窗体是最常见的操作界面,本节介绍如何在 Access数据库中,以向导及其他方式,创建 窗体。
自动创建窗体
【例5-1】 使用“自动创建窗体”创建如图56所示的“学生”(自动创建)窗体。
通过文件另存创建窗体
可以通过“另存为”的方法,将现有的表或 查询保存为窗体形式。 【例5-2】 通过将文件另存来创建简单窗体, 创建结果同【例5-1】的结果。
快速自定义窗体
【例5-4】 使用“设计视图”创建“教师基本 情况”窗体,如图5-12所示。
使用设计视图创建窗体
窗体的视图分为设计视图、窗体视图、数据 表视图、数据透视表视图和数据透视图视图。 在设计视图中可创建和修改一个窗体,在窗 体视图下可运行窗体并显示结果。另外3种视 图,是针对窗体中源于表或查询数据的相应 的显示方式。 要想在设计视图中设计窗体,就需了解设计 视图中窗体的结构组成。
3.修改子窗体 .
【例5-16】 修改“学生成绩”窗体的子窗体 部分。
4.在主窗体引用子窗体计算型控件 .
【例5-17】 在“学生成绩”窗体的主窗体引 用子窗体的计算型控件,如图5-72所示。
数据透视表及图
数据透视表及数据透视图均有分析功能,将 数据分析后显示为易读、易懂的表及图,通 过表及图,可一目了然数据分析结果。
第 5章 窗

WPF漂亮的窗体样式、按钮样式、复选框样式

WPF漂亮的窗体样式、按钮样式、复选框样式

WPF漂亮的窗体样式、按钮样式、复选框样式<!--窗体样式--><ControlTemplate x:Key="WindowTemplateKey" TargetType="{x:Type Window}"><Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"><Grid><AdornerDecorator><ContentPresenter/></AdornerDecorator><ResizeGrip x:Name="WindowResizeGrip" HorizontalAlignment="Right" VerticalAlignment="Bottom" IsTabStop="false" Visibility="Collapsed"/></Grid></Border><ControlTemplate.Triggers><MultiTrigger><MultiTrigger.Conditions><Condition Property="ResizeMode" Value="CanResizeWithGrip"/><Condition Property="WindowState" Value="Normal"/></MultiTrigger.Conditions><Setter Property="Visibility" TargetName="WindowResizeGrip" Value="Visible"/></MultiTrigger></ControlTemplate.Triggers></ControlTemplate><ControlTemplate x:Key="WindowControlRectangleTemplate" TargetType="{x:Type Window}"><Border Background="{TemplateBinding Background}" BorderThickness="1,1,1,1" CornerRadius="0,0,0,0" ><Border.BorderBrush><ImageBrush ImageSource="/Controls;component\Images\bgtop.png"></ImageBrush></Border.BorderBrush><Grid Width="Auto" Height="Auto" VerticalAlignment="Stretch"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="25"/><RowDefinition/></Grid.RowDefinitions><Border x:Name="topborder" Margin="0" Grid.Column="0" BorderBrush="{x:Null}" BorderThickness="0" CornerRadius="0,0,0,0" Grid.ColumnSpan="1"><Border.Background><ImageBrush ImageSource="/Controls;component/images/bgtop.png"></ImageBrush></Border.Background><Grid HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Stretch" Width="Auto" Height="Auto"><Grid.ColumnDefinitions><ColumnDefinition Width="9.27"/><ColumnDefinition Width="137.397"/><ColumnDefinition/><ColumnDefinition Width="28.207"/><ColumnDefinition Width="0"/><ColumnDefinition Width="27.398"/><ColumnDefinition Width="7.586"/></Grid.ColumnDefinitions><TextBlock Margin="0,0,0,-8" Name="txtTile" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontFamily="微软雅⿊" Height="25" Width="122" FontSize="12" Foreground="White"/><Button x:Name="btnMin" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2.668,2.795,2.777,3.776" Content="-" Style="{StaticResource ButtonMini}" Height="25" Width="30" Grid.Column="3" FontWeight= <Button x:Name="btnClose" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2.668,2.795,1.968,3.776" Content="×" Style="{StaticResource ButtonClose}" Height="25" Width="30" FontWeight="Bold</Grid></Border><Grid Margin="0" Grid.Row="1"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition/></Grid.RowDefinitions><ContentPresenter HorizontalAlignment="Stretch" Margin="0" Width="Auto" Grid.Column="0" Grid.ColumnSpan="1" Grid.RowSpan="1"/></Grid></Grid></Border></ControlTemplate><Style x:Key="WindowRectangleStyle" TargetType="{x:Type Window}"><Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/><Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/><Setter Property="Template" Value="{StaticResource WindowControlRectangleTemplate}"/><Style.Triggers><Trigger Property="ResizeMode" Value="CanResizeWithGrip"><Setter Property="Template" Value="{StaticResource WindowTemplateKey}"/></Trigger></Style.Triggers></Style><!--登录按钮样式--><Style x:Key="ButtonOther" TargetType="{x:Type Button}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Button}"><Grid><Grid.ColumnDefinitions><ColumnDefinition x:Name="columnDefinition1" Width="0.982*"/><ColumnDefinition x:Name="columnDefinition" Width="0.018*"/></Grid.ColumnDefinitions><Rectangle x:Name="rectangle" Stroke="{x:Null}" Fill="#dfa854" /><ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding V </Grid><ControlTemplate.Triggers><Trigger Property="IsFocused" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="#dfa854"/></Trigger><Trigger Property="IsDefaulted" Value="True"><Setter Property="Fill" TargetName="rectangle" Value="#dfa854"/><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/></Trigger><Trigger Property="IsMouseOver" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="#efbc6e"/></Trigger><Trigger Property="IsPressed" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="#dfa854"/></Trigger><Trigger Property="IsEnabled" Value="False"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="{x:Null}"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style><!--最⼩化按钮样式--><Style x:Key="ButtonMini" TargetType="{x:Type Button}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Button}"><Grid><Grid.ColumnDefinitions><ColumnDefinition x:Name="columnDefinition1" Width="0.982*"/><ColumnDefinition x:Name="columnDefinition" Width="0.018*"/></Grid.ColumnDefinitions><Rectangle x:Name="rectangle" Stroke="{x:Null}" Fill="{x:Null}" /><ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding V </Grid><ControlTemplate.Triggers><Trigger Property="IsFocused" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="{x:Null}"/></Trigger><Trigger Property="IsDefaulted" Value="True"><Setter Property="Fill" TargetName="rectangle" Value="#00a1da"/><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/></Trigger><Trigger Property="IsMouseOver" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="#00a1da"/></Trigger><Trigger Property="IsPressed" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="#3e86cc"/><Setter Property="Width" TargetName="columnDefinition" Value="Auto"/><Setter Property="MinWidth" TargetName="columnDefinition" Value="0"/><Setter Property="Width" TargetName="columnDefinition1" Value="*"/></Trigger><Trigger Property="IsEnabled" Value="False"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="{x:Null}"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style><!--关闭按钮样式--><Style x:Key="ButtonClose" TargetType="{x:Type Button}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Button}"><Grid><Grid.ColumnDefinitions><ColumnDefinition x:Name="columnDefinition1" Width="0.982*"/><ColumnDefinition x:Name="columnDefinition" Width="0.018*"/></Grid.ColumnDefinitions><!--RadiusY="2" RadiusX="2"圆⾓属性--><Rectangle x:Name="rectangle" Stroke="{x:Null}" Fill="{x:Null}" Grid.ColumnSpan="1" /><ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding V </Grid><ControlTemplate.Triggers><Trigger Property="IsFocused" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="{x:Null}"/></Trigger><Trigger Property="IsDefaulted" Value="True"><Setter Property="Fill" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/></Trigger><Trigger Property="IsMouseOver" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="#d44027"/></Trigger><Trigger Property="IsPressed" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="#3e86cc"/><Setter Property="Width" TargetName="columnDefinition" Value="Auto"/><Setter Property="MinWidth" TargetName="columnDefinition" Value="0"/><Setter Property="Width" TargetName="columnDefinition1" Value="*"/></Trigger><Trigger Property="IsEnabled" Value="False"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="{x:Null}"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style><!-- 复选框样式 --><Style TargetType="CheckBox"><Setter Property="Background"><Setter.Value><SolidColorBrush Color="#FFFFBA00"/></Setter.Value></Setter><Setter Property="Foreground" Value="#FF000000"/><Setter Property="HorizontalContentAlignment" Value="Left"/><Setter Property="VerticalContentAlignment" Value="Top"/><Setter Property="Padding" Value="4,1,0,0"/><Setter Property="BorderThickness" Value="1"/><Setter Property="BorderBrush" Value="#dcdcdc"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="CheckBox"><Grid><vsm:VisualStateManager.VisualStateGroups><vsm:VisualStateGroup x:Name="CommonStates"><vsm:VisualState x:Name="Normal"/><vsm:VisualState x:Name="MouseOver"><Storyboard><!--<DoubleAnimationUsingKeyFrames Storyboard.TargetName="BackgroundOverlay" Storyboard.TargetProperty="Opacity"><SplineDoubleKeyFrame KeyTime="0" Value="1"/></DoubleAnimationUsingKeyFrames><DoubleAnimationUsingKeyFrames Storyboard.TargetName="BoxMiddleBackground" Storyboard.TargetProperty="Opacity"><SplineDoubleKeyFrame KeyTime="0" Value="1"/></DoubleAnimationUsingKeyFrames>--><ColorAnimationUsingKeyFrames Storyboard.TargetName="BoxMiddle" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)"><SplineColorKeyFrame KeyTime="0" Value="#e9e9ef"/></ColorAnimationUsingKeyFrames><ColorAnimationUsingKeyFrames Storyboard.TargetName="BoxMiddle" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)"><SplineColorKeyFrame KeyTime="0" Value="#e9e9e9"/></ColorAnimationUsingKeyFrames><ColorAnimationUsingKeyFrames Storyboard.TargetName="BoxMiddle" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)"><SplineColorKeyFrame KeyTime="0" Value="#e9e9e9"/></ColorAnimationUsingKeyFrames></Storyboard></vsm:VisualState><vsm:VisualState x:Name="Pressed"><Storyboard><!--<DoubleAnimationUsingKeyFrames Storyboard.TargetName="BackgroundOverlay" Storyboard.TargetProperty="Opacity"><SplineDoubleKeyFrame KeyTime="0" Value="1"/></DoubleAnimationUsingKeyFrames><DoubleAnimationUsingKeyFrames Storyboard.TargetName="BoxMiddleBackground" Storyboard.TargetProperty="Opacity"><SplineDoubleKeyFrame KeyTime="0" Value="1"/></DoubleAnimationUsingKeyFrames>--><ColorAnimationUsingKeyFrames Storyboard.TargetName="BoxMiddle" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)"><SplineColorKeyFrame KeyTime="0" Value="#e9e9e9"/></ColorAnimationUsingKeyFrames><ColorAnimationUsingKeyFrames Storyboard.TargetName="BoxMiddle" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)"><SplineColorKeyFrame KeyTime="0" Value="#e9e9e9"/></ColorAnimationUsingKeyFrames><ColorAnimationUsingKeyFrames Storyboard.TargetName="BoxMiddle" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)"><SplineColorKeyFrame KeyTime="0" Value="#e9e9e9"/></ColorAnimationUsingKeyFrames><ColorAnimationUsingKeyFrames Storyboard.TargetName="BoxMiddle" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)"><SplineColorKeyFrame KeyTime="0" Value="#e9e9e9"/></ColorAnimationUsingKeyFrames><!--<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="grid" Storyboard.TargetProperty="(UIElement.Opacity)"><SplineDoubleKeyFrame KeyTime="00:00:00" Value="0.5"/></DoubleAnimationUsingKeyFrames>--></Storyboard></vsm:VisualState><vsm:VisualState x:Name="Disabled"><Storyboard><DoubleAnimationUsingKeyFrames Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="(UIElement.Opacity)"><SplineDoubleKeyFrame KeyTime="0" Value=".55"/></DoubleAnimationUsingKeyFrames><DoubleAnimationUsingKeyFrames Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="(UIElement.Opacity)"><SplineDoubleKeyFrame KeyTime="0" Value="0.55"/></DoubleAnimationUsingKeyFrames></Storyboard></vsm:VisualState></vsm:VisualStateGroup><vsm:VisualStateGroup x:Name="CheckStates"><vsm:VisualState x:Name="Checked"><Storyboard><DoubleAnimationUsingKeyFrames Storyboard.TargetName="CheckIcon" Storyboard.TargetProperty="(UIElement.Opacity)"><SplineDoubleKeyFrame KeyTime="0" Value="1"/></DoubleAnimationUsingKeyFrames></Storyboard></vsm:VisualState><vsm:VisualState x:Name="Unchecked"/><vsm:VisualState x:Name="Indeterminate"><Storyboard><DoubleAnimationUsingKeyFrames Storyboard.TargetName="IndeterminateIcon" Storyboard.TargetProperty="(UIElement.Opacity)"><SplineDoubleKeyFrame KeyTime="0" Value="1"/></DoubleAnimationUsingKeyFrames></Storyboard></vsm:VisualState></vsm:VisualStateGroup><vsm:VisualStateGroup x:Name="FocusStates"><vsm:VisualState x:Name="Focused"><!--<Storyboard><DoubleAnimationUsingKeyFrames Storyboard.TargetName="ContentFocusVisualElement" Storyboard.TargetProperty="Opacity"><SplineDoubleKeyFrame KeyTime="0" Value="1"/></DoubleAnimationUsingKeyFrames></Storyboard>--></vsm:VisualState><vsm:VisualState x:Name="Unfocused"/></vsm:VisualStateGroup></vsm:VisualStateManager.VisualStateGroups><Grid.ColumnDefinitions><ColumnDefinition Width="20"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Grid HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="grid"><Rectangle Height="18" Margin="1" x:Name="Background" Width="18" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}" RadiusX="1" RadiusY="1" Fill="{x:Null}"/><Rectangle Height="18" Margin="1" x:Name="BackgroundOverlay" Width="18" Opacity="0" Fill="{StaticResource NormalBrush}" Stroke="#00000000" StrokeThickness="1" RadiusX="1" RadiusY="1"/><Rectangle Height="14" x:Name="BoxMiddleBackground" Width="14" Fill="{TemplateBinding Background}" Stroke="#00000000" StrokeThickness="1" RadiusX="1" RadiusY="1"/><Rectangle Height="14" x:Name="BoxMiddle" Width="14" StrokeThickness="1" RadiusX="1" RadiusY="1" Stroke="{x:Null}"><Rectangle.Fill><LinearGradientBrush EndPoint="0.64,0.88" StartPoint="0.62,0.15"><GradientStop Color="#FFFFFFFF" Offset="0.013"/><GradientStop Color="#F9FFFFFF" Offset="0.375"/><GradientStop Color="#EAFFFFFF" Offset="0.603"/><GradientStop Color="#D8FFFFFF" Offset="1"/></LinearGradientBrush></Rectangle.Fill></Rectangle><Rectangle Height="14" x:Name="BoxMiddleLine" Width="14" Opacity=".4" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="2" RadiusX="1" RadiusY="1"/><Path Height="14" Margin="1,1,0,1.5" x:Name="CheckIcon" Width="14.5" Opacity="0" Fill="Green" Stretch="Fill" Data="M102.03442,598.79645 L105.22962,597.78918 L106.78825,600.42358 C106.78825,600.42358 108.51028 <!--<Rectangle Height="2" x:Name="IndeterminateIcon" Width="6" Opacity="0" Fill="#FF333333"/><Rectangle Height="14" x:Name="DisabledVisualElement" Width="14" Opacity="0" Fill="#FFFFFFFF" RadiusX="1" RadiusY="1"/>--><!--<Rectangle Height="16" x:Name="ContentFocusVisualElement" Width="16" IsHitTestVisible="false" Opacity="0" Stroke="{StaticResource HighlightBrush}" StrokeThickness="1" RadiusX="2" RadiusY="2"/>--></Grid><ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" VerticalAlignment="{TemplateBinding VerticalContentAlignment}</Grid></ControlTemplate></Setter.Value></Setter></Style>以上代码是窗体各个控件的样式源码和效果图,简单的样式其实不复杂,但是如果想要界⾯效果惊艳⼀些;就需要使⽤微软的另⼀个⼯具Microsoft Expression Blend 4去画⾃⼰想实现呈现的效果。

GUI界面设计

GUI界面设计

一、按钮式的界面制作过程:1、打开GUI Design Studio,新建一个设计,从元件面板中的“窗体与对话框”中拖出一个应用程序添加到设计文档中。

按F10把应用程序窗口设置为主元素,单击右键选择“添加位图”,选择图片作为背景图,在进行相应的文字及效果处理。

结果如下图:2、在窗体中添加9个按钮和两个文本框,输入相应的文本。

如下图:中的内容,并将外部的设计与屏幕区域的元件连接起来。

如图:以浏览或修改表格的内容,右键单击“库存存货”可以隐藏该窗体。

后面的六个按钮具有同样的功能,制作中没有一一做出来。

左键单击“退出”按钮,弹出一个对话框,询问是否保存对系统的更改。

左键单击“恢复初始值”按钮,弹出一个提醒的对话框,询问是否确定恢复系统初始值。

二、菜单式的界面设计过程:在设置菜单栏时,我把“销售报告”和“输入销售数据”归类为“销售”,把“员工度假和病假时间”和“确定员工工作时间”归类为“员工管理”。

我认为只有确定了“员工度假和病假时间”,才能确定“员工工作时间”;当销售数据产生了,才会生成销售报告。

制作步骤如下:1、第一步和按钮式的设计相同,输出的结果如下图:2、在屏幕区域外部添加一个弹出菜单和两个对话框,弹出菜单和菜单栏中的“文件”项目连接,弹出菜单的项目有“保存”“另存为”“打印”“恢复初始值”“退出”等。

运行模拟器时,左键单击“文件”,出现下拉菜单,左键单击下拉菜单中的“恢复初始值”或“退出”,效果与按钮式界面的效果相同,就不再细说。

如图:3、在屏幕区域外部添加三个弹出菜单,他们分别是“员工管理”“销售”和“帮助”的下拉菜单。

“员工管理”的下拉菜单中包含“员工度假和病假时间”和“确定员工工作时间”两个项目,“确定员工工作时间”开始是禁用的,当“员工度假和病假时间”中有数据时才可用。

“销售”的下拉菜单中包含“销售报告”和“输入销售数据”两个项目,“销售报告”开始是禁用的,当“输入销售数据”中有数据时才可用。

vb窗口形状改变

vb窗口形状改变

用设计各种形状的窗体界面窗体是程序设计最常见,最普通,也是最容易受到程序员忽视的编程对象。

一般来说,在Visual 针对窗体的编程是不需要人为介入的,因为可视化编程工具Visual 已经按照窗体的缺省状态实现了。

但是在最近遇到的应用程序中。

我们发现越来越多的应用程序中使用到各种不同规则的窗体,这些不同规则的窗体给应用程序带来异常的情趣和不同平常的效果的同时,也促使使用者思考这样一个问题,如何创建这些窗体?在Visual 中提供了一种简单、直接创建不规则窗体的方法,本文的主要内容就是探讨一下这些方法具体的实现过程。

下面就来详细介绍在中实现五种不同规格窗体的方法,即:椭圆形、扇形、圆形、环形和三角形。

掌握了这五种不同形状窗体的实现方法后,我想对于其他规则的窗体就不应该有什么问题了。

Visual Basic .Net中创建、使用MDI窗体也是本文的重要内容之一,MDI是Multi DocumentInterface的简称,即:多文档界面,MDI最早出现于Windows2.0中,最先使用到MDI的应用程序是Excel电子表格。

为了方便使用者同时能够操作多份电子表格,Excel就采用了MDI来解决这个问题。

到了Windows3.1中,MDI在应用程序中得到了更大范围的应用。

其中Windows3.1中的程序管理器和文件管理器都采用了MDI。

目前MDI在应用程序中依然被广泛采用。

下面就首先来介绍一下Visual 创建不规则窗体的相关知识和具体实现方法。

一.简介Visual Basic .Net中定制不规则窗体时使用的类库:Visual 中定制不规则窗体主要使用到Region类和GraphicsPath类,其中以GraphicsPath类最为重要。

GraphicsPath类和Region类分别位于.Net FrameWorkSDK中的"System.Drawing.Drawing2D"命名空间和"System.Drawing"命名空间。

visual studio 窗体设计案例参考

visual studio 窗体设计案例参考

Visual Studio 窗体设计案例参考
以下是一个简单的Visual Studio窗体设计案例,它是一个登录界面:
1.打开Visual Studio,创建一个新的Windows窗体应用项目。

2.在窗体设计器中,从工具箱拖动一个Label控件、两个TextBox 控件和一个Button控件到窗体上。

3.设置Label控件的Text属性为“用户名”,TextBox控件的Text属性清空,设置Button控件的Text属性为“登录”。

4.双击Button控件,Visual Studio会自动生成一个点击事件处理方法。

在这个方法中,编写如下代码:
c
private void button1_Click(object sender, EventArgs e)
{
string username = textBox1.Text;
string password = textBox2.Text;
if (username == "admin" && password == "123456")
{
MessageBox.Show("登录成功!");
}
else
{
MessageBox.Show("用户名或密码错误!");
}
}
5.运行程序,测试登录功能是否正常。

以上是一个简单的Visual Studio窗体设计案例,通过这个案例可以了解如
何使用Visual Studio设计窗体界面和添加控件,以及如何编写事件处理方法。

当然,实际应用中窗体设计会更加复杂,需要更多的控件和事件处理方法来完成功能。

pythonGUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例

pythonGUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例

pythonGUI库图形界⾯开发之PyQt5美化窗体与控件(异形窗体)实例这篇⽂章主要介绍了python GUI库图形界⾯开发之PyQt5美化窗体与控件(异形窗体)实例,需要的朋友可以参考下在默认情况下,我们使⽤PyQt5创建出来的窗⼝和部件都是默认的样式,虽然谈不上很丑,但是也毫⽆美感可⾔。

其实,在PyQt5中,我们可以有较⾼的⾃由度来⾃定义窗⼝和各种⼩部件的样式,通过⾃定义这些样式,以达到美化图形界⾯的⽬的。

本篇⽂章中,我们就通过⼀个实际的例⼦,使⽤QSS和PyQt5的配置属性,实现图形⽤户界⾯的美化⼯作。

⾸先上效果图:⼀、对界⾯进⾏布局和组件的布置在图像界⾯编程中,⼀个好的布局有助于全局把控界⾯的形态,⽽在PyQt5中,有多种布局的⽅式供我们选择,⽐较常⽤的布局有以下⼏种:表单布局:QFormLayout⽹格布局:QGridLayout⽔平排列布局:QHBoxLayout垂直排列布局:QVBoxLayout每种布局都有⾃⼰对布局内⼩部件的控制⽅式和特点,在此我们选择⽹格布局作为本次图形界⾯布局的⽅案。

在⽹格布局内,使⽤两个QWidget()部件分别作为左侧菜单模块的部件和右侧内容模块的部件。

所以这个图形界⾯的最基本结构代码如下所⽰:12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35# coding:utf-8from PyQt5 import QtCore,QtGui,QtWidgetsimport sysimport qtawesomeclass MainUi(QtWidgets.QMainWindow):def__init__(self):super().__init__()self.init_ui()def init_ui(self):self.setFixedSize(960,700)self.main_widget =QtWidgets.QWidget() # 创建窗⼝主部件self.main_layout =QtWidgets.QGridLayout() # 创建主部件的⽹格布局self.main_widget.setLayout(self.main_layout) # 设置窗⼝主部件布局为⽹格布局self.left_widget =QtWidgets.QWidget() # 创建左侧部件self.left_widget.setObjectName('left_widget')self.left_layout =QtWidgets.QGridLayout() # 创建左侧部件的⽹格布局层self.left_widget.setLayout(self.left_layout) # 设置左侧部件布局为⽹格self.right_widget =QtWidgets.QWidget() # 创建右侧部件self.right_widget.setObjectName('right_widget')self.right_layout =QtWidgets.QGridLayout()self.right_widget.setLayout(self.right_layout) # 设置右侧部件布局为⽹格self.main_layout.addWidget(self.left_widget,0,0,12,2) # 左侧部件在第0⾏第0列,占8⾏3列 self.main_layout.addWidget(self.right_widget,0,2,12,10) # 右侧部件在第0⾏第3列,占8⾏9列 self.setCentralWidget(self.main_widget) # 设置窗⼝主部件def main():app =QtWidgets.QApplication(sys.argv)gui =MainUi()gui.show()sys.exit(app.exec_())3536 37 38 39if__name__ =='__main__': main()运⾏代码,呈现出来的图形界⾯如下图所⽰:空空荡荡,下⾯我们就开始往⾥⾯填充⼩部件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用设计各种形状的窗体界面一文章来源:互联网窗体是程序设计最常见,最普通,也是最容易受到程序员忽视的编程对象。

一般来说,在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的应用程序是E xcel电子表格。

为了方便使用者同时能够操作多份电子表格,Excel 就采用了MDI来解决这个问题。

到了Windows3.1中,MDI在应用程序中得到了更大范围的应用。

其中Windows 3.1中的程序管理器和文件管理器都采用了MDI。

目前MDI在应用程序中依然被广泛采用。

下面就首先来介绍一下Visual Basic .Net创建不规则窗体的相关知识和具体实现方法。

一.简介Visual Basic .Net中定制不规则窗体时使用的类库:Visual Basic .Net中定制不规则窗体主要使用到Region类和G raphicsPath类,其中以GraphicsPath类最为重要。

GraphicsPath类和Region类分别位于.Net FrameWork SDK中的"System.Drawing.Drawi ng2D"命名空间和"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中提供了丰富的方法,这对实现更复杂的窗体形状是非常有用的,但完全掌握这些方法的使用方法也需要花费大量的时间和精力。

二.Visual Basic .Net中定制不规则窗体的具体步骤:正如前文所说在Visual Basic .Net定制不同规则的窗体是比较容易的,再了解了上面内容后,下面就是在Visual Basic .Net实现椭圆形、扇形、圆形、环形和三角形等五种形状窗体的具体实现步骤:1. 启动Visual Studio .Net。

2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。

3. 将【项目类型】设置为【Visual Basic项目】。

4. 将【模板】设置为【Windows应用程序】。

5. 在【名称】文本框中输入【中定制不规则窗体】。

6. 在【位置】的文本框中输入【E:\项目】,然后单击【确定】按钮,这样在"E:\项目"目录中就产生了名称为"VB. NET中定制不规则窗体"的文件夹,并在里面创建了名称为" 中定制不规则窗体"的项目文件。

具体如图01所示:图01:【中定制不规则窗体】新建项目对话框7. 把Visual Studio .Net的当前窗口切换到【Form1.vb(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中往Form1窗体中拖入下列组件,并执行相应的操作:五个Button组件,用以定制五种不同形状窗体,并在这个Butt on组件拖入Form1的设计窗体后,双击它们,则系统会在Form1.vb 文件分别产生这五个组件的Click事件对应的处理代码。

4. 在上述组件拖入窗体后,分别按照图02所示排列并设置窗体中的各组件:图02:【中定制不规则窗体】项目的设计界面Regin对象System.Drawing的一个对象,指示由矩形和由路径构成的图形形状的内部。

因为区域的坐标是在全局坐标中指定的,所以可对它进行缩放。

然而,在绘制表面上,它的内部取决于表示它的像素的大小和形状。

应用程序可以使用若干区域来堆砌绘图操作的输出。

窗口管理器则使用区域来定义窗口的绘制区域。

这些区域被称为剪辑区域。

应用程序还可以在命中检测的操作中使用区域,例如检查一个点或矩形是否与某个区域相交。

应用程序可通过使用Brush 对象来填充一个区域。

GraphicsPath表示一系列相互连接的直线和曲线,应用程序使用路径来绘制形状的轮廓、填充形状内部和创建剪辑区域。

图形引擎在全局坐标空间中维护路径内的几何形状的坐标。

路径可由任意数目的图形(子路径)组成。

每一图形都是由一系列相互连接的直线和曲线或几何形状基元构成的。

图形的起始点是相互连接的一系列直线和曲线中的第一点。

终结点是该序列中的最后一点。

几何形状基元的起始点和终结点都是由基元规范定义的。

8. 把Visual Basic .Net当前窗口切换到Form1.vb的代码编辑窗口,并用下列代码替换Form1.vb中的Button1的Click事件对应的处理代码,下列代码功能是改变当前窗体形状为椭圆形:Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.ClickDim p As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath ( )Dim Width As Integer = Me.WidthDim Height As Integer = Me.Heightp.AddEllipse( 0 , 20 , Width -50 , Height -100 )'根据要绘制椭圆的形状来填写AddEllipse方法中椭圆对应的相应参数Region= New Region ( p )End Sub9. 用下列代码替换Form1.vb中的Button2的Click事件对应的处理代码,下列代码功能是改变当前窗体形状为扇形:Private Sub Button2_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button2.ClickDim p As System.Drawing.Drawing2D.GraphicsPath = New S ystem.Drawing.Drawing2D.GraphicsPath ( )p.AddPie( 10 , 10 , 250 , 250 , 5 , 150 )'根据要实现的扇形形状来填写AddPie方法中的相应参数Me.Region = New Region ( p )End Sub10. 用下列代码替换Form1.vb中的Button3的Click事件对应的处理代码,下列代码功能是改变当前窗体形状为圆形:Private Sub Button3_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button3.ClickDim p As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath ( )Dim Width As Integer = Me.WidthDim Height As Integer = Me.Heightp.AddEllipse( 0 , 0 , Height , Height )Me.Region = New Region ( p )'圆形即是椭圆的一种特例,End Sub11. 用下列代码替换Form1.vb中的Button4的Click事件对应的处理代码,下列代码功能是改变当前窗体形状为环形:Private Sub Button4_Click ( ByVal sender As System.Object ,ByVal e As System.EventArgs ) Handles Button4.ClickDim p As System.Drawing.Drawing2D.GraphicsPath = New S ystem.Drawing.Drawing2D.GraphicsPath ( )Dim Height As Integer = Me.HeightDim width As Integer = 100p.AddEllipse ( 0 , 0, Height , Height )p.AddEllipse ( width , width , Height -( width * 2 ) , Heig ht -( width * 2 ) )'根据环形的形状来分别填写AddEllipse方法中相应的参数Me.Region = New Region ( p )End Sub12. 用下列代码替换Form1.vb中的Button5的Click事件对应的处理代码,下列代码功能是改变当前窗体形状为三角形:Private Sub Button5_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button5.ClickDim p As System.Drawing.Drawing2D.GraphicsPath = New S ystem.Drawing.Drawing2D.GraphicsPath ( )p.AddLine ( 0 , 0 , 250 , 150 )p.AddLine ( 250 , 150 , 0 , 300 )p.AddLine ( 0 , 0 , 0 , 300 )'根据三角形的形状特征来分别填写AddLine方法中相应的参数Me.Region = New Region ( p )End Sub13. 至此在上述步骤都正确完成后,【中定制不规则窗体】项目的全部工作就基本完成了。

相关文档
最新文档