day 2
This commit is contained in:
parent
7f2284efc5
commit
e872682d37
@ -21,4 +21,5 @@
|
|||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</Application.Resources>
|
</Application.Resources>
|
||||||
|
|
||||||
</Application>
|
</Application>
|
@ -14,7 +14,7 @@
|
|||||||
<SolidColorBrush x:Key="BgBody" Color="GhostWhite" />
|
<SolidColorBrush x:Key="BgBody" Color="GhostWhite" />
|
||||||
<SolidColorBrush x:Key="TexPrimary" Color="Black" />
|
<SolidColorBrush x:Key="TexPrimary" Color="Black" />
|
||||||
<!-- 内容主题 -->
|
<!-- 内容主题 -->
|
||||||
<SolidColorBrush x:Key="BodyValueBg" Color="SlateGray" />
|
<SolidColorBrush x:Key="BodyValueBg" Color="White" />
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
|
|
||||||
<!-- 夜晚主题 -->
|
<!-- 夜晚主题 -->
|
||||||
|
@ -1,62 +1,125 @@
|
|||||||
using System.ComponentModel;
|
using System;
|
||||||
using System.Net.Http;
|
using System.Net;
|
||||||
using System.Runtime.CompilerServices;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using Avalonia;
|
||||||
|
using Avalonia.Animation;
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Media;
|
||||||
using Avalonia.Media.Imaging;
|
using Avalonia.Media.Imaging;
|
||||||
using Avalonia.Threading;
|
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
|
||||||
namespace 山海奇闻录.ViewModels;
|
namespace 山海奇闻录.ViewModels;
|
||||||
|
|
||||||
public partial class MainViewModel : ViewModelBase
|
public partial class MainViewModel : ViewModelBase
|
||||||
{
|
{
|
||||||
//界面文字
|
|
||||||
[ObservableProperty] private string _AppTitle = "山海奇闻录";
|
[ObservableProperty] private string _AppTitle = "山海奇闻录";
|
||||||
[ObservableProperty] private string _MyValue = "我的 / 上传";
|
[ObservableProperty] private string _UpLoadTitle = "上传内容库";
|
||||||
|
[ObservableProperty] private string _MyValue = "内容上传";
|
||||||
|
[ObservableProperty] private string _CloseMyValue = "返回主页";
|
||||||
[ObservableProperty] private string _Friendly = "社交";
|
[ObservableProperty] private string _Friendly = "社交";
|
||||||
[ObservableProperty] private string _TextBook = "文案";
|
[ObservableProperty] private string _TextBook = "文案";
|
||||||
[ObservableProperty] private string _TalkPhotos = "图片";
|
[ObservableProperty] private string _TalkPhotos = "图片";
|
||||||
}
|
|
||||||
|
|
||||||
//加载logo
|
[ObservableProperty] private string _DebugText = "调试输出";
|
||||||
public partial class MainViewModel : INotifyPropertyChanged
|
|
||||||
{
|
[ObservableProperty] private Bitmap? _LogoUrl;
|
||||||
private Bitmap _LogoUrl;
|
[ObservableProperty] private Bitmap? _UpLoadUrl;
|
||||||
public Bitmap LogoUrl
|
|
||||||
{
|
[ObservableProperty] private Bitmap? _MainImage1;
|
||||||
get => _LogoUrl;
|
[ObservableProperty] private Bitmap? _MainImage2;
|
||||||
set
|
[ObservableProperty] private Bitmap? _MainImage3;
|
||||||
{
|
|
||||||
_LogoUrl = value;
|
private readonly string _LogoUrlAddr = "https://shanhai.linuxacme.com/logo.png";
|
||||||
OnPropertyChanged();
|
private readonly string _UpLoadUrlAddr = "https://shanhai.linuxacme.com/logo.png";
|
||||||
}
|
private readonly string _MainImage1Addr = "https://shanhai.linuxacme.com/image/2021102818050.jpg";
|
||||||
}
|
private readonly string _MainImage2Addr = "https://shanhai.linuxacme.com/image/2021091109343.jpg";
|
||||||
|
private readonly string _MainImage3Addr = "https://shanhai.linuxacme.com/image/210903/210903.jpg";
|
||||||
|
|
||||||
|
// private static readonly HttpClient client = new HttpClient();
|
||||||
|
|
||||||
public MainViewModel()
|
public MainViewModel()
|
||||||
{
|
{
|
||||||
LoadImageAsync();
|
//加载icon
|
||||||
|
LoadIcon(_LogoUrlAddr);
|
||||||
|
LoadUpLoad(_UpLoadUrlAddr);
|
||||||
|
LoadMainImage1(_MainImage1Addr);
|
||||||
|
LoadMainImage2(_MainImage2Addr);
|
||||||
|
LoadMainImage3(_MainImage3Addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task LoadImageAsync()
|
private void LoadIcon(string url)
|
||||||
{
|
{
|
||||||
var url = "https://shanhai.linuxacme.com/logo.png";
|
using (var webClient = new WebClient())
|
||||||
using (var httpClient = new HttpClient())
|
|
||||||
{
|
{
|
||||||
var imageData = await httpClient.GetByteArrayAsync(url);
|
byte[] imageBytes = webClient.DownloadData(url);
|
||||||
var bitmap = new Bitmap(new System.IO.MemoryStream(imageData));
|
using (var memoryStream = new MemoryStream(imageBytes))
|
||||||
|
|
||||||
// 确保在 UI 线程上更新属性
|
|
||||||
Dispatcher.UIThread.InvokeAsync(() =>
|
|
||||||
{
|
{
|
||||||
LogoUrl = bitmap;
|
LogoUrl = new Bitmap(memoryStream);
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
private void LoadUpLoad(string url)
|
||||||
|
|
||||||
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|
||||||
{
|
{
|
||||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
using (var webClient = new WebClient())
|
||||||
|
{
|
||||||
|
byte[] imageBytes = webClient.DownloadData(url);
|
||||||
|
using (var memoryStream = new MemoryStream(imageBytes))
|
||||||
|
{
|
||||||
|
UpLoadUrl = new Bitmap(memoryStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private void LoadMainImage1(string url)
|
||||||
|
{
|
||||||
|
using (var webClient = new WebClient())
|
||||||
|
{
|
||||||
|
byte[] imageBytes = webClient.DownloadData(url);
|
||||||
|
using (var memoryStream = new MemoryStream(imageBytes))
|
||||||
|
{
|
||||||
|
MainImage1 = new Bitmap(memoryStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadMainImage2(string url)
|
||||||
|
{
|
||||||
|
using (var webClient = new WebClient())
|
||||||
|
{
|
||||||
|
byte[] imageBytes = webClient.DownloadData(url);
|
||||||
|
using (var memoryStream = new MemoryStream(imageBytes))
|
||||||
|
{
|
||||||
|
MainImage2 = new Bitmap(memoryStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadMainImage3(string url)
|
||||||
|
{
|
||||||
|
using (var webClient = new WebClient())
|
||||||
|
{
|
||||||
|
byte[] imageBytes = webClient.DownloadData(url);
|
||||||
|
using (var memoryStream = new MemoryStream(imageBytes))
|
||||||
|
{
|
||||||
|
MainImage3 = new Bitmap(memoryStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// private async Task Post(string data)
|
||||||
|
// {
|
||||||
|
// using (var client = new HttpClient())
|
||||||
|
// {
|
||||||
|
// // 将字符串数据转化为 StringContent
|
||||||
|
// var content = new StringContent(data, Encoding.UTF8, "application/x-www-form-urlencoded");
|
||||||
|
//
|
||||||
|
// // 发送请求
|
||||||
|
// var response = await client.PostAsync("https://shanhai.linuxacme.com/Php/PushText.php", content);
|
||||||
|
//
|
||||||
|
// // 获取数据
|
||||||
|
// var responseString = await response.Content.ReadAsStringAsync();
|
||||||
|
// DebugText = responseString;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
@ -3,52 +3,84 @@
|
|||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:vm="clr-namespace:山海奇闻录.ViewModels"
|
xmlns:vm="clr-namespace:山海奇闻录.ViewModels"
|
||||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
mc:Ignorable="d"
|
||||||
x:Class="山海奇闻录.Views.MainView"
|
x:Class="山海奇闻录.Views.MainView"
|
||||||
x:DataType="vm:MainViewModel">
|
x:DataType="vm:MainViewModel">
|
||||||
<Design.DataContext>
|
<Design.DataContext>
|
||||||
<!-- This only sets the DataContext for the previewer in an IDE,
|
|
||||||
to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->
|
|
||||||
<vm:MainViewModel />
|
<vm:MainViewModel />
|
||||||
</Design.DataContext>
|
</Design.DataContext>
|
||||||
<Grid RowDefinitions="Auto, *, Auto">
|
<Grid>
|
||||||
|
<!-- 现有的内容 -->
|
||||||
|
<Grid x:Name="MainContent">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" /> <!-- Top Bar -->
|
||||||
|
<RowDefinition Height="*" /> <!-- Middle Area -->
|
||||||
|
<RowDefinition Height="Auto" /> <!-- Bottom Bar -->
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
<!-- Top Bar -->
|
<!-- Top Bar -->
|
||||||
<Border Grid.Row="0" Background="{DynamicResource BgBody}" Height="50" Opacity="1.0">
|
<Border Grid.Row="0" Background="{DynamicResource BgBody}" Height="50">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Image Source="{Binding LogoUrl}"
|
<Image Source="{Binding LogoUrl}"
|
||||||
Width="30"
|
Width="30"
|
||||||
Stretch="Uniform"
|
Stretch="Uniform"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Margin="10 0 0 0 "/>
|
Margin="10 0 0 0"/>
|
||||||
<TextBlock Text="{Binding AppTitle}"
|
<TextBlock Text="{Binding AppTitle}"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Foreground="{DynamicResource TexPrimary}"
|
Foreground="{DynamicResource TexPrimary}"
|
||||||
FontSize="20"
|
FontSize="20"
|
||||||
Margin="50 0 0 0 "/>
|
Margin="50 0 0 0"/>
|
||||||
<Button Content="{Binding MyValue}"
|
<Button Content="{Binding MyValue}"
|
||||||
|
x:Name="OpenPushWindow"
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
Margin="0 0 15 0"></Button>
|
Margin="0 0 15 0"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<!-- Middle Area with ScrollViewer -->
|
<!-- Middle Area with ScrollViewer -->
|
||||||
<ScrollViewer Grid.Row="1" Background="{DynamicResource BodyValueBg}">
|
<ScrollViewer Grid.Row="1" Background="{DynamicResource BodyValueBg}">
|
||||||
<StackPanel>
|
<Grid>
|
||||||
</StackPanel>
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" /> <!-- Top Bar -->
|
||||||
|
<RowDefinition Height="*" /> <!-- Middle Area -->
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Grid Grid.Row="0" >
|
||||||
|
<Border HorizontalAlignment="Center" Margin=" 6" x:Name="MainBox" CornerRadius="6" ClipToBounds="True">
|
||||||
|
<StackPanel Orientation="Horizontal" Spacing="0" x:Name="MainImageBox">
|
||||||
|
<Image Source="{Binding MainImage1}"
|
||||||
|
x:Name="MainImages1"
|
||||||
|
Stretch="UniformToFill" />
|
||||||
|
<Image Source="{Binding MainImage2}"
|
||||||
|
x:Name="MainImages2"
|
||||||
|
Stretch="UniformToFill" />
|
||||||
|
<Image Source="{Binding MainImage3}"
|
||||||
|
x:Name="MainImages3"
|
||||||
|
Stretch="UniformToFill" />
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
<!-- <StackPanel> -->
|
||||||
|
<!-- -->
|
||||||
|
<!-- <TextBlock Name="DebugTextBlock" Text="{Binding DebugText}"/> -->
|
||||||
|
<!-- <TextBlock x:Name="Fuck" Text="v"/> -->
|
||||||
|
<!-- </StackPanel> -->
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
|
|
||||||
<!-- Bottom Bar -->
|
<!-- Bottom Bar -->
|
||||||
<Border Grid.Row="2" Height="50" Opacity="1.0" Background="{DynamicResource BgBody}">
|
<Border Grid.Row="2" Height="50" Background="{DynamicResource BgBody}">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*" /> <!-- 左边占比空间 -->
|
<ColumnDefinition Width="*" />
|
||||||
<ColumnDefinition Width="Auto" /> <!-- 第一个按钮 -->
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="0.8*" /> <!-- 右边空间 -->
|
<ColumnDefinition Width="0.8*" />
|
||||||
<ColumnDefinition Width="Auto" /> <!-- 第二个按钮 -->
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="0.8*" /> <!-- 右边空间 -->
|
<ColumnDefinition Width="0.8*" />
|
||||||
<ColumnDefinition Width="Auto" /> <!-- 第三个按钮 -->
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="*" /> <!-- 右边占比空间 -->
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<Button Grid.Column="1" Content="{Binding Friendly}"
|
<Button Grid.Column="1" Content="{Binding Friendly}"
|
||||||
@ -63,5 +95,38 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
</Grid>
|
</Grid>
|
||||||
<!-- <TextBlock Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/> -->
|
|
||||||
</UserControl>
|
<!-- 侧边栏 -->
|
||||||
|
<Border Grid.Column="0" Background="{DynamicResource BgBody}" x:Name="PushWindow" IsVisible="True" ZIndex="1">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" /> <!-- Top Bar -->
|
||||||
|
<RowDefinition Height="*" /> <!-- Middle Area -->
|
||||||
|
<RowDefinition Height="Auto" /> <!-- Bottom Bar -->
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Grid Grid.Row="0" Height="50">
|
||||||
|
<Image Source="{Binding UpLoadUrl}"
|
||||||
|
Width="30"
|
||||||
|
Stretch="Uniform"
|
||||||
|
HorizontalAlignment="Left"
|
||||||
|
Margin="10 0 0 0"/>
|
||||||
|
<TextBlock Text="{Binding UpLoadTitle}"
|
||||||
|
HorizontalAlignment="Left"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Foreground="{DynamicResource TexPrimary}"
|
||||||
|
FontSize="20"
|
||||||
|
Margin="50 0 0 0"/>
|
||||||
|
<Button Content="{Binding CloseMyValue}"
|
||||||
|
x:Name="ClosePushWindow"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
Margin="0 0 15 0"/>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<Grid Grid.Row="1">
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
@ -1,11 +1,132 @@
|
|||||||
|
using System.Threading.Tasks;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Interactivity;
|
||||||
|
using Avalonia.Media;
|
||||||
|
using 山海奇闻录.ViewModels;
|
||||||
|
|
||||||
namespace 山海奇闻录.Views;
|
namespace 山海奇闻录.Views;
|
||||||
|
|
||||||
public partial class MainView : UserControl
|
public partial class MainView : UserControl
|
||||||
{
|
{
|
||||||
|
public double WindowWidth;
|
||||||
|
public double WindowHeight;
|
||||||
|
|
||||||
public MainView()
|
public MainView()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
//获取程序的宽高
|
||||||
|
this.Loaded += GetWindowBodySize;
|
||||||
|
|
||||||
|
//打开侧边栏
|
||||||
|
this.OpenPushWindow.Click += OpenPushWindowHandler;
|
||||||
|
//关闭侧边栏
|
||||||
|
this.ClosePushWindow.Click += ClosePushWindowHandler;
|
||||||
}
|
}
|
||||||
}
|
private void InitPushWindow()
|
||||||
|
{
|
||||||
|
var NewTransForm = new TranslateTransform
|
||||||
|
{
|
||||||
|
X = (-1 * WindowWidth), // 设置 X 坐标偏移
|
||||||
|
Y = (0 * WindowHeight) // 设置 Y 坐标偏移
|
||||||
|
};
|
||||||
|
this.PushWindow.RenderTransform = NewTransForm;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitLunBoTu()
|
||||||
|
{
|
||||||
|
//设置轮播图宽高
|
||||||
|
this.MainBox.Width = (WindowWidth - 12);
|
||||||
|
this.MainBox.Height = (WindowHeight / 3.5);
|
||||||
|
|
||||||
|
this.MainImages1.Width = (WindowWidth - 12);
|
||||||
|
this.MainImages1.Height = (WindowHeight / 3.5);
|
||||||
|
this.MainImages2.Width = (WindowWidth - 12);
|
||||||
|
this.MainImages2.Height = (WindowHeight / 3.5);
|
||||||
|
this.MainImages3.Width = (WindowWidth - 12);
|
||||||
|
this.MainImages3.Height = (WindowHeight / 3.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GetWindowBodySize(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
WindowWidth = this.Bounds.Width;
|
||||||
|
WindowHeight = this.Bounds.Height;
|
||||||
|
|
||||||
|
InitLunBoTu();
|
||||||
|
|
||||||
|
InitPushWindow();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void OpenPushWindowHandler(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
await OpenPushWindowExecAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task OpenPushWindowExecAsync()
|
||||||
|
{
|
||||||
|
var NewTransForm = new TranslateTransform
|
||||||
|
{
|
||||||
|
X = (-1 * WindowWidth), // 设置 X 坐标偏移
|
||||||
|
Y = (0 * WindowHeight) // 设置 Y 坐标偏移
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < (WindowWidth / 10) - 1; i++)
|
||||||
|
{
|
||||||
|
NewTransForm.X += 10;
|
||||||
|
NewTransForm.Y = 0;
|
||||||
|
|
||||||
|
// 使用异步延迟,避免阻塞 UI 线程
|
||||||
|
await Task.Delay(1);
|
||||||
|
|
||||||
|
// 直接更新 UI
|
||||||
|
this.PushWindow.RenderTransform = NewTransForm;
|
||||||
|
}
|
||||||
|
|
||||||
|
NewTransForm.X = 0;
|
||||||
|
NewTransForm.Y = 0;
|
||||||
|
|
||||||
|
this.PushWindow.RenderTransform = NewTransForm;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task ClosePushWindowExec()
|
||||||
|
{
|
||||||
|
var NewTransForm = new TranslateTransform
|
||||||
|
{
|
||||||
|
X = (0 * WindowWidth), // 设置 X 坐标偏移
|
||||||
|
Y = (0 * WindowHeight) // 设置 Y 坐标偏移
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < (WindowWidth / 10) - 1; i++)
|
||||||
|
{
|
||||||
|
NewTransForm.X -= 10;
|
||||||
|
NewTransForm.Y = 0;
|
||||||
|
|
||||||
|
// 使用异步延迟,避免阻塞 UI 线程
|
||||||
|
await Task.Delay(1);
|
||||||
|
|
||||||
|
// 直接更新 UI
|
||||||
|
this.PushWindow.RenderTransform = NewTransForm;
|
||||||
|
}
|
||||||
|
|
||||||
|
NewTransForm.X = (-1 * WindowWidth);
|
||||||
|
NewTransForm.Y = 0;
|
||||||
|
|
||||||
|
this.PushWindow.RenderTransform = NewTransForm;
|
||||||
|
}
|
||||||
|
private async void ClosePushWindowHandler(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
await ClosePushWindowExec();
|
||||||
|
}
|
||||||
|
|
||||||
|
//轮播图上一张
|
||||||
|
void MainImageBoxPre()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//轮播图上一张
|
||||||
|
void MainImageBoxNext()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user