基于.NET6的WPF基础总结(下)

news2024/11/15 11:01:06

目录

一、集合控件

1. ListBox可选项列表

2.  ListView数据列表控件

3. DataGrid数据表格控件

4. ComboBox下拉框控件 

 5. TabControl

 6. TreeView 树形控件

7. Menu菜单 

8. ContextMenu上下文菜单

二、图像控件 

1. Ellipse 椭圆

2. Line线段 

 3. Rectangle矩形

4. Polyline折线 

5. Polygon多边形 

6. Path路径 

6.1 简单集合(线条、矩形、椭圆)

6.2 PathGeometry路径几何

6.2.1 三角形

6.2.2 扇形

 6.3 GeometryGroup组合图形

 6.4 CombinedGeometry融合几何图形

7. Path标记语法 


一、集合控件

1. ListBox可选项列表

<StackPanel>
    <TextBox x:Name="textBox" Height="20" Width="200" />
    <!--SelectionChanged: 当选定内容改变时触发此事件-->
    <ListBox x:Name="listBox" Height="100" SelectionChanged="listBox_SelectionChanged">
        <ListBoxItem>Item 1</ListBoxItem>
        <ListBoxItem>Item 2</ListBoxItem>
        <ListBoxItem>Item 3</ListBoxItem>
    </ListBox>
</StackPanel>
private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var seletedItem = listBox.SelectedItem as ListBoxItem;
    textBox.Text = seletedItem.Content.ToString();
}

2.  ListView数据列表控件

<ListView x:Name="listView">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="ID" Width="30" DisplayMemberBinding="{Binding ID}" />
            <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="50" />
        </GridView>
    </ListView.View>
</ListView>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        var data = new List<Person>()
        {
            new Person { ID=1, Name = "John" },
            new Person { ID=2, Name = "Mary" },
            new Person { ID=3, Name = "Tom" },
            new Person { ID=4, Name = "Jane" }
        };

        listView.ItemsSource = data;
    }
}
public class Person
{
    public int ID { get; set; }
    public string Name { get; set; }
}

3. DataGrid数据表格控件

生成的列类型数据类型
DataGridTextColumnString
DataGridCheckBoxColumnBoolean
DataGridComboBoxColumnEnum
DataGridHyperlinkColumnUri

 DataGridTextColumn例子:

<Grid>
    <!--AutoGenerateColumns:是否自动生成列 CanUserAddRows: 取消多余的行-->
    <DataGrid x:Name="dataGrid" AutoGenerateColumns="False" CanUserAddRows="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="ID" Binding="{Binding ID}" />
            <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
        </DataGrid.Columns>
    </DataGrid>
</Grid>

4. ComboBox下拉框控件 

<Grid>
    <!--IsSelected:默认选中-->
    <ComboBox Width="120" Height="20">
        <ComboBoxItem Content="Item1" />
        <ComboBoxItem  IsSelected="True" Content="Item2" />
        <ComboBoxItem Content="Item3" />
        <ComboBoxItem Content="Item4" />
    </ComboBox>
</Grid>

 5. TabControl

<TabControl x:Name="tabControl">
    <TabItem Header="选项1">
        <Border>
            <TextBlock Text="选项1的内容" VerticalAlignment="Center" HorizontalAlignment="Center" />
        </Border>
    </TabItem>
    
    <TabItem>
        <TabItem.Header>
            <StackPanel Orientation="Horizontal">
                <Image Source="Images/csharp.png" Height="20" />
                <TextBlock Text="选项2" VerticalAlignment="Center" Margin="5,0" />
            </StackPanel>
        </TabItem.Header>

        <TextBlock Text="选项2的内容" VerticalAlignment="Center" HorizontalAlignment="Center" />
    </TabItem>
</TabControl>

 6. TreeView 树形控件

<TreeView>
    <!--IsExpanded:是否展开-->
    <TreeViewItem Header="Item1" IsExpanded="True">
        <TreeViewItem Header="Item1.1">
            <TreeViewItem Header="Item1.1.1" />
        </TreeViewItem>
        <TreeViewItem Header="Item1.2" />
    </TreeViewItem>
    <TreeViewItem Header="Item2">
        <TreeViewItem Header="Item2.1" />
        <TreeViewItem Header="Item2.2" />
    </TreeViewItem>
</TreeView>

7. Menu菜单 

<StackPanel>
    <Menu>
        <MenuItem Header="item1">
            <MenuItem Header="subitem1">
                <MenuItem Header="subsubitem1" />
                <MenuItem Header="subsubitem2" />
            </MenuItem>
            <MenuItem Header="subitem2" />
        </MenuItem>
        <MenuItem Header="item2" />
        <MenuItem Header="item3" />
    </Menu>
</StackPanel>

8. ContextMenu上下文菜单

<StackPanel>
    <Border Width="200" Height="40" Background="Green">
        <TextBlock Text="鼠标右键点击" VerticalAlignment="Center" HorizontalAlignment="Center" />
        <Border.ContextMenu>
            <ContextMenu>
                <MenuItem Header="菜单项1" />
                <MenuItem Header="菜单项2" />
                <MenuItem Header="菜单项3">
                    <MenuItem Header="子菜单项1" />
                    <MenuItem Header="子菜单项2" />
                </MenuItem>
            </ContextMenu>
        </Border.ContextMenu>
    </Border>
</StackPanel>

9. StatusBar状态栏

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <StatusBar Grid.Row="1">
        <StatusBarItem Content="我是底部状态栏" HorizontalAlignment="Center" />
    </StatusBar>
</Grid>

二、图像控件 

1. Ellipse 椭圆

<Canvas>
    <!--Stroke:边框颜色 Fill:填充颜色 StrokeThickness:边框厚度-->
    <Ellipse Width="100" Height="100" Stroke="Green" Fill="Beige" StrokeThickness="2" />
</Canvas>

也可以自定义为图片填充:

<Canvas>
    <!--Stroke:边框颜色 Fill:填充颜色 StrokeThickness:边框厚度-->
    <Ellipse Width="100" Height="100" Stroke="Green" StrokeThickness="2">
        <Ellipse.Fill>
            <ImageBrush ImageSource="Images/csharp.png" />
        </Ellipse.Fill>
    </Ellipse>
</Canvas>

2. Line线段 

        Line自身有四个属性X1,Y1,X2,Y2,其中X1,Y1表示第一个点坐标,X2,Y2表示第二个点坐标。

StrokeStartLineCap线段头的形状
Stroke线条颜色
StrokeThickness线条宽度
StrokeDashArray虚线
StrokeDashOffset虚线位置偏移量
<Canvas>
    <Line Stroke="Green" X1="10" Y1="20" X2="200" Y2="200"
          StrokeThickness="5" StrokeDashCap="Round"
          StrokeStartLineCap="Round" StrokeEndLineCap="Triangle"
          StrokeDashArray="6,1"/>
</Canvas>

 3. Rectangle矩形

<Canvas>
    <Rectangle Width="200" Height="100" Canvas.Top="20"
               Canvas.Left="50" Stroke="Green" />
    <Rectangle Width="100" Height="100" Canvas.Top="170"
               Canvas.Left="50" Stroke="Green"
               RadiusX="50" RadiusY="50" />
</Canvas>

4. Polyline折线 

        Polyline中通过Points定义点的位置,分为起点,中继点,终点。其中起点和终点只能有一个,中继点也就是转折点可以有无数个。

<Canvas>
    <!--Points="10,10 10,100 50,100": 起点:10,10,中继点:10,100, 终点:50,100-->
    <Polyline StrokeThickness="5" Points="10,10 10,100 50,100">
        <!--设置渐变色-->
        <Polyline.Stroke>
            <!--MappingMode="Absolute"表示坐标是绝对的-->
            <LinearGradientBrush StartPoint="10,10" EndPoint="50,100" MappingMode="Absolute">
                <!--Offset:偏移量,越接近1越接近终点-->
                <GradientStop Color="Green" Offset="0.7" />
                <GradientStop Color="Yellow" Offset="0.3" />
            </LinearGradientBrush>
        </Polyline.Stroke>
    </Polyline>
</Canvas>

5. Polygon多边形 

<Canvas>
    <Polygon StrokeThickness="5" Points="10,10 110,10 110,110">
        <Polygon.Stroke>
            <LinearGradientBrush StartPoint="10,10" EndPoint="110,110" MappingMode="Absolute">
                <GradientStop Color="Green" Offset="0.2" />
                <GradientStop Color="Yellow" Offset="0.5" />
                <GradientStop Color="Red" Offset="0.8" />
            </LinearGradientBrush>
        </Polygon.Stroke>
    </Polygon>
</Canvas>

6. Path路径 

几何名称说明
LineGeometry直线几何
RectangleGeometry矩形几何
EllipseGeometry椭圆几何
PathGeometry路径几何
StreamGeometryPathGeometry的轻量级替代品,不支持 Bidning、动画等功能
CombinedGeometry多图形组合,形成单一几何几何图形
GeometryGroup多图形组合,形成几何图形组

6.1 简单集合(线条、矩形、椭圆)

<Canvas>
    <!--线条-->
    <Path Stroke="Red">
        <Path.Data>
            <LineGeometry StartPoint="10,20" EndPoint="100,200" />
        </Path.Data>
    </Path>

    <!--矩形-->
    <Path Stroke="Blue">
        <Path.Data>
            <!--Rect(x,y,width,height)-->
            <RectangleGeometry Rect="105,20,100,50" />
        </Path.Data>
    </Path>

    <!--椭圆-->
    <Path Stroke="Green">
        <Path.Data>
            <!--Center:中心点坐标,RadiusX:水平半径,RadiusY:垂直半径-->
            <EllipseGeometry Center="150,150" RadiusX="60" RadiusY="30" />
        </Path.Data>
    </Path>
</Canvas>

6.2 PathGeometry路径几何

        PathGeometry几何是一种复杂几何,可能由多种图像组合而成。

LineSegment直线段
ArcSegment圆弧线段
BezierSegment三次方贝塞尔曲线段
QuadraticBezierSegmnt二次方贝塞尔曲线段
PolyLineSegment折线段
PolyBezierSegment多三次方贝塞尔曲线段
PolyQuadraticBezierSegment多二次方贝塞尔曲
6.2.1 三角形
<!--三角形-->
<Path Stroke="Green" StrokeThickness="5">
    <Path.Data>
        <PathGeometry>
            <PathGeometry.Figures>
                <!--IsClosed:是否闭合-->
                <PathFigure StartPoint="100,100" IsClosed="True">
                    <LineSegment Point="100,260" />
                    <LineSegment Point="260,260" />
                </PathFigure>
            </PathGeometry.Figures>
        </PathGeometry>
    </Path.Data>
</Path>
6.2.2 扇形

常用属性:

Size圆弧的横轴和纵轴半径
IsLargeArc是否使用大弧连接,默认是false
SweepDirection 圆弧是顺时针还是逆时针。Clockwise:顺时针Counterclockwise:逆时针
RotationAngle明圆弧椭圆的旋转角度
<!--扇形-->
<Path Stroke="Gold" StrokeThickness="5">
    <Path.Data>
        <PathGeometry>
            <PathGeometry.Figures>
                <PathFigure StartPoint="300,260" IsClosed="True">
                    <LineSegment Point="300,100" />
                    <ArcSegment Point="500,260" Size="160,160"
                                SweepDirection="Clockwise"/>
                </PathFigure>
            </PathGeometry.Figures>
        </PathGeometry>
    </Path.Data>
</Path>

 6.3 GeometryGroup组合图形

<Canvas>
    <Path Stroke="Green" Fill="Gold">
        <Path.Data>
            <!--FillRule:填充规则,Nonzero:全部填充,EvenOdd:奇偶方式填充-->
            <GeometryGroup FillRule="EvenOdd">
                <RectangleGeometry Rect="30 10 150 100" />
                <EllipseGeometry Center="100 60" RadiusX="40"  RadiusY="40" />
            </GeometryGroup>
        </Path.Data>
    </Path>
</Canvas>

 6.4 CombinedGeometry融合几何图形

<Canvas>
    <Path Stroke="Green" Fill="Gold">
        <Path.Data>
            <!--GeometryCombineMode:合并模式-->
            <!--Exclude:排除 Intersect:交集 Union:并集 Xor:异或-->
            <CombinedGeometry GeometryCombineMode="Xor">
                <CombinedGeometry.Geometry1>
                    <EllipseGeometry Center="50 50" RadiusX="50" RadiusY="50" />
                </CombinedGeometry.Geometry1>
                <CombinedGeometry.Geometry2>
                    <EllipseGeometry Center="100 50" RadiusX="50" RadiusY="50" />
                </CombinedGeometry.Geometry2>
            </CombinedGeometry>
        </Path.Data>
    </Path>
</Canvas>

7. Path标记语法 

详情可见微软官网路径标记语法 - WPF .NET Framework | Microsoft Learn

命令用途语法示例对应标签语法
M移动到起点坐标M 起点M 150,200<PathFigure StartPoint="150,200">
L绘制直线L 终点L 300,200<LineSegment Point="300,200"/>
H水平直线H 终点横坐标
V垂直直线V 终点横坐标
A绘制圆弧A 母椭圆尺寸 旋转角度 是否大弧 顺时针/逆时针 终点A 180,80 45 1 1 150,150<ArcSegment Size="180,80" RotationAngle="45" IsLargeArc="True" SweepDirection="Clockwise" Point="150,150" />
C三次方贝塞尔曲线C 控制点1 控制点2 终点C 200,50 50,200 350,250<BezierSegment Point1="200,50" Point2="50,200" Point3="350,250"/>
Q二次方贝塞尔曲线Q 控制点1 终点Q 200,50 350,250<QuadraticBezierSegmnt Point1="200,50" Point3="350,250"/>
S平滑三次方贝塞尔曲线S 控制点2 终点S 200,50 350,250
T平滑二次方贝塞尔曲线T 终点T 350,250
Z闭合图形ZM 10,150 L40,150 L40,250 L10,250 Z<Path Fill="HotPink" Data="M 10,150 L40,150 L40,250 L10,250 Z" />

 

<Canvas>
    <!--三角形-->
    <Path Stroke="Green" Fill="Gold"
          Data="M 10,100 L 100,10 L 10,10 Z"/>
</Canvas>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2102568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何打造中小学在线教学平台?Java SpringBoot集成Vue,教育资源管理新篇章

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

基于Transformer架构训练LLM大语言模型:Transformer架构工作原理

视频讲解&#xff1a;Transformer架构的工作原理讲解_哔哩哔哩_bilibili 一 Transformer架构总体架构 1 总体架构图 总体架构说明&#xff1a; 输入层 词嵌入&#xff08;Word Embeddings&#xff09;: 输入文本中的每个词都被映射到一个高维空间中的向量&#xff0c;这些向…

HTML静态网页成品作业(HTML+CSS)——动漫大耳朵图图网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

智能化的知识管理:大模型在知识图谱构建中的突破性应用

转自&#xff1a;大模型奇点说 知识图谱是一种以图形结构组织数据的知识表示形式&#xff0c;其中&#xff0c;概念、事件、实体等知识单元通过节点呈现&#xff0c;而它们之间的各种关系则通过边来描述。知识图谱的显著特点在于&#xff0c;通过关系的定义&#xff0c;为节点提…

EmguCV学习笔记 VB.Net 9.3 移动检测类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

第十一课,多分支判断

一&#xff0c;多分支结构 某些场景下&#xff0c;判断条件不止一个&#xff0c;可能有多个。 语法格式&#xff08;下图左&#xff09;&#xff1a; *需要注意&#xff1a;这里仅是以5种选择作为例子&#xff0c; 可以根据自己的需要&#xff0c;在if...else的中间插入任意…

OrangePi AIpro 香橙派 昇腾 Ascend C 算子开发 与 调用 - Tiling实现

OrangePi AIpro 香橙派 昇腾 Ascend C 算子开发 与 调用 - Tiling实现 flyfish 前置知识 基于Kernel直调工程的算子开发流程图 其中有一个Tiling实现 什么是Tiling、Tiling实现 计算API&#xff0c;包括标量计算API、向量计算API、矩阵计算API&#xff0c;分别实现调用S…

51单片机-串口通信(电脑向串口助手发送数据不接收)

80C52中的串口通过SCON寄存器配置波特率位可变的&#xff0c;因此&#xff0c;需要通过计算定时器1的参与&#xff0c;在定时器配置过程中选择定时器的相关寄存器TMOD来配置定时器的模式为模式2&#xff08;8位自动重装定时器&#xff0c;如上图&#xff0c;TL1为计数器&#x…

SpringBoot动态配置Nacos

重要知识点 Nacos属性的简单使用 将SpringBoot中的所有配置全部放入到Nacos中 开发人创建单独的命名空间,修改互不影响 Nacos经常变动的配置抽离到外部文件中 将项目中的所有配置全部放到到 1. 首先引入包 <!-- nacos 接入--><!-- https://mvnrepository.com/artifact…

网络安全服务基础Windows--第14节-数字签名

散列函数&#xff08;Hash Function&#xff09;&#xff0c;也称为哈希函数&#xff0c;是密码学中⼀个重要的⼯具。它能够将任意⻓度的输⼊数据转换为固定⻓度的输出&#xff08;散列值或哈希值&#xff09;。这种转换过程具有单向性&#xff0c;即很难从输出推断出输⼊&…

uniapp scroll-view滚动页面

页面滚动固定距离&#xff08;scrollTop&#xff09; <template><view><button click"Test">测试</button><scroll-view style"height: 100px;" :scroll-top"scrollTop" scroll-y"true" class"scrol…

大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Cadence Virtuoso添加工艺库、转换工艺库格式

系统环境&#xff1a;Red Hat 操作软件&#xff1a;Virtuoso 工艺库&#xff1a;tsmc18rf 1、准备好工艺库文件&#xff0c;放在任意文件夹内&#xff0c;记住文件路径&#xff1a; 2、打开Virtuoso软件&#xff1a; 在桌面右键打开终端&#xff0c;输入&#xff1a; virtuo…

Web3D 技术发展瓶颈在哪里?

Web3D 技术的发展瓶颈主要集中在以下几个方面&#xff1a; 1、性能和优化&#xff1a;尽管现代浏览器和硬件逐步提高了性能&#xff0c;但高质量的3D渲染仍可能导致性能瓶颈。特别是在移动设备上&#xff0c;图形渲染和计算可能会受到限制。建议合理控制好项目资源量&#xff…

DataGridView用法合集【精品】

1.当前的单元格属性取得、变更 [VB.NET] Console.WriteLine(DataGridView1.CurrentCell.Value) Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex) Console.WriteLine(DataGridView1.CurrentCell.RowIndex) DataGridView1.CurrentCell DataGridView1(0, 0) [C#] Con…

毕业设计选题系统

一、项目概述 Hi&#xff0c;大家好&#xff0c;今天分享的项目是《毕业设计选题系统》。 毕业论文选题是大学教学管理中的重要环节&#xff0c;关系到高校的教学质量。传统的手工管理方式工作效率低下、管理繁琐&#xff0c;浪费教师和学生的时间与精力的问题。本系统以提高…

鸿蒙HarmonyOS使用地图服务

1. 生成签名证书指纹 按照步骤生成签名证书指纹 步骤1&#xff1a; 步骤2&#xff1a; 步骤3&#xff1a;Key store file为生成的*.p12文件的存储路径&#xff0c;可以自己选择路径并自定义文件名&#xff0c;输入并确认密码后&#xff0c;点击确认 步骤4&#xff1a;Key s…

代码随想录算法day28 | 动态规划算法part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、 746. 使用最小花费爬楼梯

理论基础 什么是动态规划 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的&#xff0c;这一点就区分于贪…

关于位结构体及位操作总结

#include <stdio.h> #pragma pack(1) struct stu{char a:4; // a占用char的低4位 char b:4; // b占用char的高4位&#xff08;注意&#xff0c;这里实际上是与a共享同一个char的空间&#xff09; }; #pragma pack(4) int main() {struct stu s{.a2, //a:0010.b3, …

如何对单片机程序进行加密(防止别人破解)

单片机程序的破解无非就是非法途径获得源代码或者可执行文件&#xff08;hex文件&#xff09;。本文主要介绍两个方法防止别人从单片机fash中获取可执行文件&#xff08;hex文件&#xff09;。一方面保证别人不能获取你的hex文件&#xff0c;另一面就算别人非法获取你的hex文件…