WPF的入门学习

环境的搭配

我们通过VS的官网来安装的VS2022,安装上C#的功能,这样就完成了环境的搭配

第一个wpf工程

打开vs2022,点击如图的创建新的工程。

点选WPF的项目

配置一个新的项目

这样就完成了项目的创建

项目结构

介绍一下大概的项目结构

在APP.XAml文件中,设置我们的窗体入口

界面的处理方式

  1. 内容添加

  2. XAML:微软公司为了构建应用程序用户界面而创建的一种新的"可扩展应用程序标记语言",提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面。

特点:

  • 定义应用程序的界面元素
  • 显式的声明WPF资源(样式、模板、动画等)
  • 可扩展性(自定义UI空间)
  • 集中关注于界面的设计和实现。

基础空间

textblock

通过工具箱拖动,拖出来textblock控件。

通过属性,就可以找到常见的一些属性

通过对应的事件,响应对应的代码

比较重要的布局

label控件

拥有跟textblock控件差不多的属性,事件和布局。

和textblock的区别
Lable的content属性为OBJECT类型

添加一个button对象在Lable控件中

cs文件中

public MainWindow()
{InitializeComponent();Button newButton = new Button();newButton.Content = "Click me";// 根据需要设置其他属性,例如宽度、高度等// newButton.Width = 100;// newButton.Height = 30;// 将新创建的 Button 赋值给 Label 的 ContentmyLabel.Content = newButton;
}

xaml文件

<Label x:Name="myLabel"><Label.Content><Button Content="Click me" /></Label.Content>
</Label>

布局控件

布局属性和布局控件是不同的,布局属性用来做小范围的控制,布局控件大区域的划分。

常见的控件

  • Grid
  • StackPanel
  • WrapPanel
  • DockPanel
  • Canvas
  • UniformGrid
  1. Grid控件

定义行

Xaml语法

<Grid><Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions>
<Grid/>

定义列
Xaml语法

<Grid>
<Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/><ColumnDefinition/><ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid/>

给控件设置布局

 <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="啊~我的妻,王氏宝钗!" VerticalAlignment="Top"Grid.Row="2" Grid.Column="1"/><Label x:Name="myLabel" Grid.Row="1" Grid.Column="2"><Label.Content><Button Content="Click me" /></Label.Content></Label>
  1. StackPanel控件

类似堆栈的视图

控制方向的代码

 <StackPanel Orientation="Horizontal"><Button Content="Show Message" Click="Button_Click" Foreground="Red"/><Button Content="Show Dialog" Click="Button_Click_1" Foreground="Pink"/></StackPanel>3. WrapPanel类似于棋盘的排布,高度比较统一。当是水平分布的时候,会因为其中的任何一个影响行之间的高度,但是不会受到宽度的影响。(反之亦然)```xaml<WrapPanel><TextBlock Height="100" Width="100" Text="Hello World" Background="Red"/><TextBlock Height="100" Width="100" Text="Hello World" Background="Green"/><TextBlock Height="100" Width="100" Text="Hello World" Background="Blue"/><TextBlock Height="100" Width="100" Text="Hello World" Background="Yellow"/><TextBlock Height="100" Width="100" Text="Hello World" Background="Orange"/><TextBlock Height="100" Width="100" Text="Hello World" Background="Purple"/><TextBlock Height="150" Width="100" Text="Hello World" Background="Red"/><TextBlock Height="100" Width="100" Text="Hello World" Background="Green"/><TextBlock Height="100" Width="100" Text="Hello World" Background="Blue"/><TextBlock Height="100" Width="100" Text="Hello World" Background="Yellow"/><TextBlock Height="100" Width="100" Text="Hello World" Background="Orange"/><TextBlock Height="100" Width="100" Text="Hello World" Background="Purple"/></WrapPanel>
  1. DockPanel控件

停靠效果的布局控件

<DockPanel LastChildFill="false"><TextBlock  Text="Hello World" Background="Green" DockPanel.Dock="Top"/><TextBlock  Text="Hello World" Background="Blue" DockPanel.Dock="Bottom"/><TextBlock  Text="Hello World" Background="Yellow" DockPanel.Dock="Left"/><TextBlock  Text="Hello World" Background="Orange" DockPanel.Dock="Right"/></DockPanel>
  1. Canvas控件

画布布局,都是从左边顶点开始的布局。

xaml

<Canvas><TextBlock Width="100" Height="40" Text="Hello" Background="Gray" Margin="200,0,0,0"/><TextBlock Width="100" Height="40" Text="Hello" Background="Orange" Margin="200,200,0,0"/><TextBlock Width="100" Height="60" Text="Hello" Background="Red" Canvas.Left="300"/><TextBlock Width="100" Height="40" Text="Hello" Background="Green" Canvas.Top="300" Canvas.Left="300"/><TextBlock Width="100" Height="40" Text="Hello" Background="Gray" Canvas.Right="50" Canvas.Bottom="50"/><TextBlock Width="100" Height="40" Text="Hello" Background="Gray" Canvas.Right="50" Canvas.Bottom="50" Canvas.Top="30" Canvas.Left="30" /></Canvas>
  1. InkCanvas控件

可编辑的画布布局控件

 <InkCanvas EditingMode="Select"><TextBlock Width="100" Height="40" Text="Hello" Background="Gray" Margin="200,0,0,0"/><TextBlock Width="100" Height="40" Text="Hello" Background="Orange" Margin="200,200,0,0"/><TextBlock Width="100" Height="60" Text="Hello" Background="Red" InkCanvas.Left="300"/><TextBlock Width="100" Height="40" Text="Hello" Background="Green" InkCanvas.Top="300" InkCanvas.Left="300"/><TextBlock Width="100" Height="40" Text="Hello" Background="Gray" InkCanvas.Right="50" InkCanvas.Bottom="50"/><TextBlock Width="100" Height="40" Text="Hello" Background="Gray" InkCanvas.Right="50" InkCanvas.Bottom="50" InkCanvas.Top="30" InkCanvas.Left="30" /></InkCanvas>
  1. UniformGrid控件

UniformGrid【统一布局】,提供一种在网格(网格中的所有单元格都具有相同的大小)中排列内容的方法。

    <UniformGrid Columns="2" Rows="5"><TextBlock Text="Hello" Background="Gray"/><TextBlock Text="Hello" Background="Orange"/><TextBlock Text="Hello" Background="Red"/><TextBlock Text="Hello" Background="Green"/><TextBlock Text="Hello" Background="Gray"/><TextBlock Text="Hello" Background="Orange"/><TextBlock Text="Hello" Background="Red"/><TextBlock Text="Hello" Background="Green"/><TextBlock Text="Hello" Background="Gray"/><TextBlock Text="Hello" Background="Orange"/><TextBlock Text="Hello" Background="Red"/><TextBlock Text="Hello" Background="Green"/><TextBlock Text="Hello" Background="Gray"/><TextBlock Text="Hello" Background="Orange"/><TextBlock Text="Hello" Background="Red"/><TextBlock Text="Hello" Background="Green"/><TextBlock Text="Hello" Background="Gray"/><TextBlock Text="Hello" Background="Orange"/><TextBlock Text="Hello" Background="Red"/><TextBlock Text="Hello" Background="Green"/><TextBlock Text="Hello" Background="Gray"/><TextBlock Text="Hello" Background="Orange"/><TextBlock Text="Hello" Background="Red"/><TextBlock Text="Hello" Background="Green"/><TextBlock Text="Hello" Background="Gray"/><TextBlock Text="Hello" Background="Orange"/><TextBlock Text="Hello" Background="Red"/><TextBlock Text="Hello" Background="Green"/></UniformGrid>

button控件

xaml文件

    <Label x:Name="myLabel"><Label.Content><Button Content="Click me" Click="Button_Click"/></Label.Content></Label>

cs文件

        public MainWindow(){InitializeComponent();Button newButton = new Button();newButton.Content = "Click me";newButton.Click += Button_Click; // 绑定点击事件myLabel.Content = newButton;}private void Button_Click(object sender, RoutedEventArgs e){if (sender is Button button){button.Content = "Title Changed!";}}

RepeatButton控件

它的主要目的是提供一种在用户按下并持有时会连续触发事件的行为。

<StackPanel><RepeatButton Content="nihao" IsEnabled="True" Interval="500" Click="RepeatButton_Click"></RepeatButton>
</StackPanel>

cs文件

private void RepeatButton_Click(object sender, RoutedEventArgs e)
{Debug.WriteLine("RepeatButton_Click");
}

TextBox控件


<TextBox Width="300" TextWrapping="Wrap" Text="45r435r43t43t43t34t34t43tretg43t4t34t43tert43tert"Height="50" ScrollViewer.VerticalScrollBarVisibility="Auto" Name="tb"/>

Password控件

  <PasswordBox Password="123456" PasswordChar="A" MaxLength="8" Name="pb" Foreground="#FFF10000"/>

richtext控件

<RichTextBox><FlowDocument><Paragraph>Hello World!<Run Foreground="Red" FontWeight="Bold" FontStyle="Italic">wef</Run>wdf<Hyperlink NavigateUri="https://www.baidu.com">ewrgwgtrbg</Hyperlink>th</Paragraph><Paragraph><Run>Hello</Run></Paragraph></FlowDocument></RichTextBox>

image控件

显示图片用的控件

    <Grid.Background><ImageBrush ImageSource="/Images/Logo.png"/></Grid.Background><Image Source="/Images/Logo.png" Height="50"/><!--<Ellipse Width="50" Height="50"><Ellipse.Fill><ImageBrush ImageSource="/Images/Logo.png" Stretch="UniformToFill"/></Ellipse.Fill></Ellipse>-->

radiobutton控件

        <Grid><RadioButton Content="男" IsChecked="True" GroupName="A"/></Grid><Grid><RadioButton Content="女" GroupName="A"/></Grid><RadioButton Content="身份证" IsChecked="True" GroupName="B"/><RadioButton Content="护照" GroupName="B"/>

checkbox控件

       <CheckBox Content="苹果" IsChecked="True"/><CheckBox Content="菠萝"/><CheckBox Content="凤梨" IsChecked="{x:Null}"/>

slider控件

xaml文件

    <TextBlock Name="tb"/><Slider Value="5" ValueChanged="Slider_ValueChanged" Minimum="-10" Maximum="100" TickFrequency="10" TickPlacement="Both"IsSnapToTickEnabled="True"/>

cs文件

    <TextBlock Name="tb"/><Slider Value="5" ValueChanged="Slider_ValueChanged" Minimum="-10" Maximum="100" TickFrequency="10" TickPlacement="Both"IsSnapToTickEnabled="True"/>

progressbar控件

    <TextBlock Name="tb"/><Slider Value="5" ValueChanged="Slider_ValueChanged" Minimum="-10" Maximum="100" TickFrequency="10" TickPlacement="Both"IsSnapToTickEnabled="True"/>

combox控件

 <ComboBox Width="200" SelectedIndex="2" SelectionChanged="ComboBox_SelectionChanged"><ComboBoxItem Content="---请选择---"/><ComboBoxItem Content="AAA"/><ComboBoxItem Content="BBB"/><ComboBoxItem Content="CCC"/><ComboBoxItem Content="DDD"/></ComboBox><ComboBox Width="200" Name="comboBox" SelectedIndex="0"></ComboBox>

listbox控件

  <TextBlock Name="tb"/><ListBox Name="listBox" SelectionMode="Single" SelectionChanged="listBox_SelectionChanged"><!--<ListBoxItem Content="AAAA"/><ListBoxItem Content="BBBB"/><ListBoxItem Content="CCCC"/><ListBoxItem Content="DDDD"/><ListBoxItem Content="EEEE"/><ListBoxItem Content="FFFF"/>--></ListBox>
 private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e){tb.Text = (sender as ListBox).SelectedItem.ToString();}

listview控件

员工类

public class Employee{public bool IsSelected { get; set; }public string Name { get; set; }public string Department { get; set; }public int Age { get; set; }public string Gender { get; set; }}
<ListView Grid.Row="1" Name="lv"><ListView.View><GridView><GridViewColumn Header="员工名称" Width="100" DisplayMemberBinding="{Binding Name}"/><GridViewColumn Header="部门" Width="100" DisplayMemberBinding="{Binding Department}"/><GridViewColumn Header="年龄" Width="100" DisplayMemberBinding="{Binding Age}"/></GridView></ListView.View></ListView>
List<Employee> employees = new List<Employee>();employees.Add(new Employee() { Name = "AAA", Department = "D-1", Age = 19, Gender = "女" });employees.Add(new Employee() { IsSelected = true, Name = "BBB", Department = "D-2", Age = 20 });employees.Add(new Employee() { Name = "CCC", Department = "D-3", Age = 21, Gender = "男" });this.lv.ItemsSource = employees;

dataGrid控件

 List<Employee> employees = new List<Employee>();employees.Add(new Employee() { Name = "AAA", Department = "D-1", Age = 19, Gender = "女" });employees.Add(new Employee() { IsSelected = true, Name = "BBB", Department = "D-2", Age = 20 });employees.Add(new Employee() { Name = "CCC", Department = "D-3", Age = 21, Gender = "男" });this.lv.ItemsSource = employees;this.dg.ItemsSource = employees;this.dgcb.ItemsSource = new List<string> { "男", "女" };
DataGrid Grid.Row="2" Name="dg" AutoGenerateColumns="False" CanUserAddRows="False"><DataGrid.Columns><DataGridTextColumn Header="员工名称" Width="100" Binding="{Binding Name}"/><DataGridTextColumn Header="部门" Width="100" Binding="{Binding Department}"/><DataGridTextColumn Header="年龄" Width="100" Binding="{Binding Age}"/><DataGridCheckBoxColumn Header="勾选" Binding="{Binding IsSelected}"/><DataGridComboBoxColumn Header="下拉列表" SelectedItemBinding="{Binding Gender}" x:Name="dgcb"></DataGridComboBoxColumn><DataGridTemplateColumn Header="自定义" Width="100"><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid><TextBlock Text="{Binding Name}"/><Image Source="images/logo.png"/></Grid></DataTemplate></DataGridTemplateColumn.CellTemplate><DataGridTemplateColumn.CellEditingTemplate><DataTemplate><TextBox Text="{Binding Name}"/></DataTemplate></DataGridTemplateColumn.CellEditingTemplate></DataGridTemplateColumn></DataGrid.Columns></DataGrid>

tabcontroler控件

xaml

 <TabControl><TabItem Header="AAAA"><TextBlock Text="Hello AAA"/></TabItem><TabItem Header="BBBB"><Button Content="Hello BBB"/></TabItem><TabItem><TabItem.Header><StackPanel Orientation="Horizontal"><Image Source="images/logo.png" Width="20"/><TextBlock Text="CCCC"/><Button Content="X"/></StackPanel></TabItem.Header></TabItem><TabItem Header="DDDD"/><TabItem Header="EEEE"/></TabControl>

xaml

        <Menu Grid.Row="1" Height="30" VerticalAlignment="Top"><MenuItem Header="文件(_F)"><MenuItem Header="新建(_N)" Click="MenuItem_Click"><MenuItem.Icon><Image Source="images/logo.png"/></MenuItem.Icon></MenuItem><MenuItem Header="打开"/><Separator/><MenuItem Header="添加"/></MenuItem><MenuItem Header="编辑"><MenuItem Header="剪切"/><Separator/><MenuItem Header="复制"/><MenuItem Header="粘贴"/></MenuItem><MenuItem Header="视图"/></Menu><Border Background="Orange" Width="100" Height="30" Grid.Row="1"><Border.ContextMenu><ContextMenu><MenuItem Header="文件(_F)"><MenuItem Header="新建(_N)" Click="MenuItem_Click"><MenuItem.Icon><Image Source="images/logo.png"/></MenuItem.Icon></MenuItem><MenuItem Header="打开"/><Separator/><MenuItem Header="添加"/></MenuItem><MenuItem Header="编辑"><MenuItem Header="剪切"/><Separator/><MenuItem Header="复制"/><MenuItem Header="粘贴"/></MenuItem><MenuItem Header="视图"/></ContextMenu></Border.ContextMenu></Border>

treeView控件

<TreeView Grid.Row="2" SelectedItemChanged="TreeView_SelectedItemChanged"Name="tv"><TreeViewItem Header="学生" IsExpanded="True"><TreeViewItem Header="一年级" IsExpanded="True"><TreeViewItem Header="AAA"/><TreeViewItem Header="BBB"/><TreeViewItem Header="CCC"/></TreeViewItem><TreeViewItem Header="二年级"/><TreeViewItem Header="三年级"/></TreeViewItem><TreeViewItem Header="老师"><TreeViewItem Header="AAA"/><TreeViewItem Header="BBB"/><TreeViewItem Header="CCC"/></TreeViewItem></TreeView>

cs

private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e){var item = (sender as TreeView).SelectedItem as TreeViewItem;}

Calender控件

<Calendar SelectedDate="10/15/2022" DisplayDate="4/25/2022"DisplayDateStart="4/2/2022" DisplayDateEnd="12/10/2022"/><Calendar Grid.Row="1" SelectionMode="MultipleRange"xmlns:sys="clr-namespace:System;assembly=mscorlib"><Calendar.BlackoutDates><CalendarDateRange Start="4/3/2022" End="4/10/2022"/><CalendarDateRange Start="5/3/2022" End="5/20/2022"/></Calendar.BlackoutDates><Calendar.SelectedDates><sys:DateTime>11/10/2022</sys:DateTime><sys:DateTime>11/12/2022</sys:DateTime><sys:DateTime>11/18/2022</sys:DateTime><sys:DateTime>11/8/2022</sys:DateTime></Calendar.SelectedDates></Calendar>

dataPicker控件

<DatePicker Grid.Row="2" Height="30" Width="170"SelectedDate="2022-12-01"DisplayDateStart="4/2/2022" DisplayDateEnd="12/10/2022"SelectedDateFormat="Short"FirstDayOfWeek="Sunday"></DatePicker>

savedialog和opendialog

  <StackPanel><Button Content="open" Click="Button_Click" ></Button><Button Content="save" Click="Button_Click_1"></Button></StackPanel>
 private void Button_Click(object sender, RoutedEventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "Sql 文件(*.sql)|*.sql|所有文件(*.*)|*.*";//openFileDialog.FilterIndex= 1;openFileDialog.Multiselect = true;// 允许多选if (openFileDialog.ShowDialog() == true){//var file = openFileDialog.FileName;//openFileDialog.FileNames// 进行文件内容读取 }}private void Button_Click_1(object sender, RoutedEventArgs e){SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Filter = "Sql 文件(*.sql)|*.sql|所有文件(*.*)|*.*";if (saveFileDialog.ShowDialog() == true){// 获取保存文件路径 var fn = saveFileDialog.FileName;// 文件内容写入}}

border控件和Expander控件

<Border Background="Gray" Width="50" Height="50" BorderBrush="Red" BorderThickness="3"CornerRadius="5"/><Expander Header="WPF零基础" IsExpanded="True"><StackPanel><Button Content="第一课"/><Button Content="第一课"/><Button Content="第一课"/></StackPanel></Expander><Expander Header="WPF零基础"><StackPanel><Button Content="第一课"/><Button Content="第一课"/><Button Content="第一课"/></StackPanel></Expander>

GroupBox和ViewBox

 <GroupBox Header="WPF"><Button Content="第二课"/></GroupBox><GroupBox Header=".NET"><Button Content="第二课"/></GroupBox><Viewbox StretchDirection="Both" ><Border Background="Orange" Width="60" Height="60"><TextBlock Text="Zhaoxi"/></Border></Viewbox>

dispather控件

            <TextBox Text="Hello" Name="tb"/><Button Content="Button" Click="Button_Click"/>

cs文件

Task.Run(async () =>{try{var value = 200;await Task.Delay(2000);// 请求WebApi// 给TextBox赋值 this.Dispatcher.Invoke(new Action(() =>{this.tb.Text = value.ToString();}));}catch (Exception ex){}});

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【安全架构】权限控制模型

原创 大袤宏图不同的权限模型提供了灵活的访问控制策略,本文绘制了不同模型的ER图,探讨这些模型的原理及适用场景。 一、访问控制列表模型 访问控制列表模型(Access Control List, ACL) 基于资源的访问控制列表,每个资源都有一个列表记录哪些用户可以对其进行哪些操作,适用…

不用代码,2小时搞定自己的网站

之前有许多人咨询过怎么建个官网,有没有 便宜,省事,且数据由自己掌控的方式。 毕竟一个企业在初期,如果不是IT行业,不一定有程序员,但是数据由自己掌握,未来发展壮大了,人员角色被齐了,就可以在原来的基础上做更好的发展了。 最近我也把玩了一个自助建站的产品,快速试…

PentesterTools:简单的SQLMap图形化辅助工具

原创 XiaoTouMingyo Hack分享吧免责声明 该公众号分享的安全工具和项目均来源于网络,仅供安全研究与学习之用,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。工具介绍 SQLmap辅助工具是一款图形用户界面(GUI)工具,旨在简化和增强SQLmap的使…

【Xshell】高级用法: “隧道转发”

原创 大龙山悟道 IT运维不跑路xshell隧道转发类型 类型一:本地拨出 Local(Outgoing)作用:将本地计算机指定的某个端口连接到远程服务器的一个指定端口上。 应用场景:当从本地机器安全地访问位于远程服务器上的服务(如数据库、web服务等)时使用。 工作原理:通过SSH连接,用…

【安全运维】检测即代码(DAC) 详细步骤

原创 Zafkie1 SecLink安全空间引言 DAC(Detection As Code),检测即代码是一种战略方法,可将安全检测机制无缝集成到软件开发生命周期中。通过将安全控制视为代码,组织可以在整个SIEM运维过程中自动部署、配置和维护安全措施。 或许很多人听说过DAC的概念,但是并没有一步步地…

有道领世视频课程下载工具,如何在电脑端下载有道领世视频课程到本地?

一. 安装有道领世课程下载器 1.获取学无止下载器 https://www.xuewuzhi.cn/ydshengxue_downloader 2.下载安装后,然后点击桌面快捷方式运行即可。 注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。 二. 使用说明 1.学…

chapter15

relocation.py参数第一题问题用种子 1、2 和 3 运行,并计算进程生成的每个虚拟地址是处于界限内还是界限外?如果在界限内,请计算地址转换。 种子为1时:种子为2时:种子为3时:第二题问题使用以下标志运行:-s 0 -n 10。为了确保所有生成的虚拟地址都处于边界内,要将-l(界…

23设计模式详解

参考博客 https://baijiahao.baidu.com/s?id=1758410771062793648&wfr=spider&for=pc 设计模式(Design pattern) """ 对软件开发中【普遍存在(反复出现)的问题】,而提出的【解决方案】。每一个设计模式系统地命名、解释和评价了面向对象系统中一…

DearPyGui环境配置

DearPyGui 是一个基于Python的图形用户界面(GUI)工具包,它以简单易用而著称。这个库利用GPU加速渲染和高效的C/C++底层代码,确保了出色的性能和稳定性。DearPyGui支持异步函数,能够绘制大量数据点而不影响帧率,还内置了一个节点编辑器和实时开发调试工具。它适用于Window…

oasys系统代码审计

oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架,集成了jpa、mybatis等框架。简述: oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开…

科大讯飞离线lunix tts demo使用

项目中需要用到后台服务端用文本生成语音,网上大部分都是通过ai大模型推理出来的,还有写其他方式的,效果和生成时间都比较不理想,但是讯飞生成的只需要零点几秒,不愧是行业NO1,下面说下怎么使用。 1、下载官方demo。 2、在官方demo目录下,执行source 32bit_make.sh 或64…

高效数据集成:从旺店通到金蝶云

旺店通旗舰奇门数据集成到金蝶云星空:柏为销售出库单07.25 在现代企业的运营中,数据的高效流转和准确对接是确保业务顺畅运行的关键。本文将分享一个实际案例——如何通过轻易云数据集成平台,将旺店通旗舰奇门的数据无缝集成到金蝶云星空系统中。具体方案名称为“柏为销售出…