MATLAB GUI绘图教程与实战案例

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本资源展示了MATLAB GUI的强大绘图功能,包含了通过GUIDE工具设计的交互式窗口和控件,以及对应的操作脚本。通过本资源,用户可以学习如何创建和运行应用程序,以及如何利用回调函数响应用户交互,动态地在GUI中绘制各类图表。资源中包含的示例文件"gui.fig"和"gui.m"分别用于存储GUI设计和脚本代码,允许用户深入理解GUI绘图机制,并掌握MATLAB中绘图和控件交互的基础。 gui.rar_GUI绘图_gui 绘图_matlab GUI_绘图 matlab

1. MATLAB GUI功能介绍

MATLAB(Matrix Laboratory的缩写)是一种高性能的数值计算环境和第四代编程语言,它将计算、可视化以及编程集成在一个易于使用的环境中。MATLAB广泛应用于工程、科学研究、数学建模等领域。其中,MATLAB GUI(Graphical User Interface,图形用户界面)为用户提供了一种直观、便捷的操作方式。

GUI是MATLAB中一个重要的功能模块,它允许开发者在无需编写大量代码的前提下,通过图形元素(如按钮、文本框、滑动条等)快速构建出交互式的用户界面。这种界面不仅能够简化用户操作,而且可以大幅提高应用程序的用户体验。

在本章中,我们将介绍MATLAB GUI的基本概念、功能以及它在实际项目中的应用。我们将引导读者理解GUI在MATLAB中的角色以及如何通过它实现数据的可视化和交互式操作。接下来的章节中,我们将详细探讨如何使用GUIDE工具设计和优化GUI,并逐步深入了解GUI文件结构以及绘图机制等更高级的主题。

2. 使用GUIDE工具设计交互式界面

2.1 界面设计初步

在MATLAB中,GUIDE(GUI Design Environment)提供了一个可视化的工具,用于设计和布局交互式用户界面。在这一部分,我们将逐步了解如何使用GUIDE来构建一个基础的交互式界面,并学习界面设计的一些基本原则。

2.1.1 理解GUIDE工具的界面布局

GUIDE的界面布局包括几个主要的区域:

  • 设计视图(Design View) :在这个区域中,你可以直观地添加和布局控件(比如按钮、文本框等)。
  • 属性检查器(Property Inspector) :通过这个窗口可以修改所选控件的各种属性。
  • 组件箱(Component palette) :这个面板包含了所有可用的GUI组件,例如按钮、文本框、轴(axes)、菜单等。

设计视图是构建GUI的主战场,你可以在其中直观地拖拽控件并设置它们的布局。属性检查器允许你对选定的组件进行详细的配置,如控件的大小、位置、标签以及各种行为属性等。

2.1.2 设计交互式元素的基本步骤

创建一个交互式界面涉及以下基本步骤:

  1. 启动GUIDE : 打开MATLAB命令窗口,输入 guide 并回车,或者点击MATLAB工具栏中的GUIDE图标。

  2. 新建GUI或打开现有GUI : 在打开的GUIDE窗口中,选择“Blank GUI (Default)”来创建一个新的GUI或者加载一个已存在的GUI文件。

  3. 添加和布局控件 : 从组件箱中选择所需的控件并拖拽到设计视图中。使用属性检查器调整控件的大小、位置和属性。

  4. 调整组件属性 : 每个控件都可以拥有不同的属性,例如 String 属性可以定义按钮上显示的文本。调整这些属性来满足你的设计需求。

  5. 测试GUI : 点击GUIDE工具栏上的“运行”按钮(绿色三角形图标)来预览和测试GUI的功能。

2.2 高级界面组件的使用

在设计一个交互式界面时,仅仅有基础控件是不够的。在本节中,我们将探讨如何使用更高级的组件,以构建一个功能更丰富的GUI。

2.2.1 下拉菜单和按钮组的应用

下拉菜单(popupmenu)和按钮组(uicontrol的Style属性设为'radiobutton')是为用户选择提供了灵活的界面元素。

下拉菜单(popupmenu)

下拉菜单通常用于在一组有限的选项中供用户选择。

  • 添加下拉菜单 :在组件箱中选择下拉菜单并放置到设计视图。
  • 配置下拉菜单 :在属性检查器中设置 String 属性为下拉菜单的选项,用逗号分隔。
  • 编写回调函数 :通过编写回调函数来响应用户的选择变化。
function popupmenu1_Callback(hObject, eventdata, handles)
    % hObject    handle to popupmenu1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    selectedOption = get(hObject, 'Value'); % 获取选中项的索引
    % 根据索引获取选中项
    options = strvcat('Option 1', 'Option 2', 'Option 3');
    selectedText = options{selectedOption};
    disp(['You selected: ', selectedText]); % 显示所选选项
end
按钮组(radiobutton)

按钮组允许用户在一个分组内选择单个选项。

  • 添加按钮组 :在组件箱中选择单选按钮,并放置多个到设计视图,为它们分别设置相同的 Grouping 属性。
  • 配置按钮组 :设置每个按钮的 String 属性,并使用回调函数处理用户的点击事件。
2.2.2 文本框和静态文本的添加与配置

文本框(edit text)允许用户输入文本,而静态文本(static text)则用于展示不可编辑的信息。

  • 添加文本框和静态文本 :在组件箱中选择相应的控件并放置。
  • 配置属性 :设置 String 属性以定义显示的文本或为文本框设置初始内容。
2.2.3 利用GUIDE添加图形和图像

在GUI中加入图形和图像是提升用户界面视觉效果的有效手段。

  • 添加图形 :选择组件箱中的 axes 控件,它将作为绘图的画布。
  • 绘制图形 :可以通过编程在 axes 控件中绘制各种图形,如使用 plot bar 等函数。
function axes1_LoadFcn(hObject, eventdata, handles)
    % axes1 为 GUI 设计中默认创建的 axes 控件
    x = linspace(0,2*pi,100); % 生成数据
    y = sin(x); % 生成正弦波数据
    plot(x, y); % 绘制图形
end

以上代码段展示了如何在GUIDE设计的GUI中的 axes 控件里自动绘制一个简单的正弦波图形,作为用户界面的一部分。

3. "gui.fig"设计文件内容解析

3.1 "gui.fig"文件结构分析

3.1.1 打开和查看"gui.fig"文件

MATLAB图形用户界面(GUI)设计时,"gui.fig"文件存储了界面的设计信息,包括布局、组件及其属性等。打开和查看"gui.fig"文件,我们不需要编写代码,而是通过MATLAB自带的GUIDE工具进行。

  1. 打开MATLAB环境,选择"Home"选项卡。
  2. 在"Development"下拉菜单中点击"GUIDE"工具。
  3. 在弹出的GUIDE对话框中,选择打开已存在的"gui.fig"文件。
  4. "gui.fig"文件被加载后,你可以直接查看和修改界面上的组件。

3.1.2 "gui.fig"中各组件属性解析

"gui.fig"文件中包含了GUI设计的所有组件及其属性,比如组件的位置、大小、样式等。这些信息都是以MATLAB结构体形式存储的。我们可以通过MATLAB的命令窗口查看这些结构体内容。例如:

load('gui.fig'); % 加载gui.fig文件
gui = openfig('gui.fig'); % 打开GUI设计
set(gui, 'Visible', 'off'); % 关闭GUI显示
set(gui, 'WindowStyle', 'modal'); % 使GUI为模态窗口

% 获取并显示其中的某一个组件属性
button = findobj(gui, 'Tag', 'pushbutton1');
button.Position % 显示pushbutton1的位置属性

执行这段代码后,我们可以看到pushbutton1的位置属性信息,这些信息详细说明了按钮在GUI中的具体位置。

3.2 "gui.fig"与"gui.m"的关联

3.2.1 理解"gui.fig"与"gui.m"之间的联系

"gui.fig"和"gui.m"是相互独立又紧密联系的两个文件。"gui.fig"包含了界面的布局和外观,而"gui.m"则是与用户交互的代码逻辑部分。当通过GUIDE工具修改了"gui.fig"中的界面设计,"gui.m"文件中的回调函数会自动更新,关联到新的界面组件上。

3.2.2 修改"gui.fig"时对"gui.m"的影响

例如,如果你在GUIDE界面中添加了一个新的按钮,该按钮会自动获得一个唯一的Tag属性,比如"pushbutton2"。在"gui.m"文件中,将会自动添加一个新的回调函数:

function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% 获取按钮当前的文本
buttonText = get(hObject, 'String');
% 更新按钮文本
set(hObject, 'String', ['New ', buttonText]);
end

这段回调函数说明了当pushbutton2被触发时,它的文本将会被更新。如果手动修改了"gui.fig"中的按钮Tag或者其他属性,必须确保"gui.m"文件中相关回调函数更新以匹配这些更改,否则可能会导致运行时错误。

通过"gui.fig"与"gui.m"文件之间的互动,开发者可以构建出功能丰富且交互性强的GUI应用程序。

4. "gui.m"脚本文件及其回调函数

4.1 "gui.m"文件作用详解

4.1.1 "gui.m"脚本文件的生成与结构

MATLAB的GUIDE工具自动生成的"gui.m"文件是一个非常关键的组件,它定义了图形用户界面(GUI)的行为和外观。在GUIDE环境下,每次保存GUI设计时,都会生成或更新对应的"gui.m"文件。该文件包含了GUI初始化代码、组件创建代码和回调函数,是GUI运行时的核心脚本文件。

打开"gui.m"文件,可以发现它由以下几个部分组成:

  • 初始化代码(开头部分):这部分包含了对GUI界面的初始化设置,包括窗口的尺寸、位置、名称等属性。
  • 组件创建代码:GUIDE自动生成的代码,负责在GUI中创建所有界面元素,比如按钮、文本框、滑动条等。
  • 回调函数定义:每个界面元素会有一个或多个回调函数,用于处理用户的交互行为,如点击按钮、输入文本等。
function varargout = gui_mainfcn(guiState, ...)
    % ... (初始化代码)

    % Create and configure components ...
    % (组件创建代码)

    % Register the callback functions ...
    % (回调函数定义)

    % Execute the GUI ...
end

4.1.2 "gui.m"中的初始化代码

在"gui.m"中,初始化代码部分通常设置GUI窗口的属性,例如窗口的标题、位置、尺寸以及窗口的默认属性等。这些设置确保GUI启动时具有预定的外观和行为。初始化代码通常位于函数 gui_mainfcn 的开头部分。

function varargout = gui_mainfcn(guiState, ...)
    % Create or load an instance of the GUI
    if nargin && ischar(guiState)
        guiState = load.gui(fn2struct(guiState));
    end
    % Setup GUI
    if length(guiState) == 1
        f = figure('Visible','off','Position',[100 100 350 200],'Name',guiState.name,'NumberTitle','off');
        setappdata(0, 'guiState', guiState);
        setappdata(f,       'guiState', guiState);
    else
        f = findobj('Tag', 'gui');
    end
    % Set up the components ...
    % (组件创建代码)
    % Make the GUI visible
    if strcmp(get(f,'Visible'),'off')
        figure(f);
    end
end

在这段代码中,我们首先检查是否有一个名为 guiState 的结构体传入,这个结构体包含了GUI的状态信息。然后,根据是否存在这样的状态信息来创建或加载GUI窗口。接下来设置窗口的属性,如位置、尺寸、名称和标题栏的显示。最后,如果窗口不可见,那么就让它可见。

4.2 回调函数的编写与理解

4.2.1 回调函数的基本定义和用途

回调函数是在GUI环境中用于处理用户操作的特殊函数。每当用户与界面元素交互时(如点击按钮、移动滑块等),就会触发对应的回调函数。在"gui.m"中,每个界面元素都可能关联一个或多个回调函数,以便在特定事件发生时执行相应的代码逻辑。

回调函数通常包含两个参数: hObject eventdata 。其中 hObject 是触发回调的界面元素的句柄, eventdata 则包含了事件的附加数据(如果有的话)。回调函数的返回值通常为空,因为它们主要通过修改GUI元素的状态或全局变量来与用户交互。

function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)

    % Update the figure title based on the user input ...
    % (具体的用户交互逻辑)
end

4.2.2 回调函数中的参数传递机制

回调函数中的参数传递机制是GUI交互的核心。 hObject 参数是一个句柄,指向触发当前回调的界面元素。这允许回调函数知道是哪个组件触发了事件,从而做出相应的操作。 eventdata 参数提供了事件的额外信息,但它通常只在特定类型的事件中使用,如 keyrelease 事件。

% Callback function for a button that updates a text box with user input.
function update_textbox_Callback(hObject, eventdata, handles)
    % 获取文本框的句柄
    textbox_handle = findobj(handles, 'Type', 'uicontrol', 'Style', 'text');
    % 从文本框获取当前的文本值
    current_text = get(textbox_handle, 'String');
    % 构建新的文本值
    new_text = [current_text, 'Additional Text'];
    % 更新文本框的内容
    set(textbox_handle, 'String', new_text);
end

在上述例子中,回调函数 update_textbox_Callback 通过 hObject 确定哪个按钮触发了回调,然后找到对应的文本框句柄 textbox_handle ,获取当前文本值,并在其后添加新的字符串,最终更新文本框内容。

4.2.3 实例代码分析

为了更好地理解回调函数的工作原理,让我们来看一个具体的例子。假设我们有一个简单的GUI,它包含一个文本框和一个按钮。当用户在文本框中输入一些文本并点击按钮时,我们希望将这个文本追加到一个列表框中。

function add_text_to_listbox(handles)
    % 从文本框获取当前的文本值
    textbox_handle = handles.textbox;
    input_text = get(textbox_handle, 'String');
    % 获取列表框的句柄和当前的列表项
    listbox_handle = handles.listbox;
    listbox_items = get(listbox_handle, 'String');
    % 追加文本到列表项并更新列表框
    listbox_items{end+1} = input_text;
    set(listbox_handle, 'String', listbox_items);
end

然后在按钮的回调函数中调用这个函数:

function pushbutton1_Callback(hObject, eventdata, handles)
    % 调用函数以将文本添加到列表框中
    add_text_to_listbox(handles);
end

在这个例子中, add_text_to_listbox 函数从文本框获取文本,并将其追加到列表框中。当按钮被点击时,通过 pushbutton1_Callback 回调函数调用 add_text_to_listbox 函数来执行这个操作。

4.2.4 回调函数的优化策略

编写回调函数时,我们不仅要考虑其功能,还要考虑性能和用户体验。优化回调函数通常涉及以下策略:

  • 尽可能减少在回调函数中的计算量。复杂的运算可以放在单独的函数中,或者在用户的交互结束后进行。
  • 避免在回调函数中直接进行耗时的UI更新。可以采用异步更新UI的方法,比如使用 set 函数的后台选项或者利用定时器。
  • 利用MATLAB的事件驱动编程模型,合理设计事件的分发和回调函数的管理,以提高程序的可维护性和可扩展性。
% 使用定时器来异步更新列表框
t = timer('ExecutionMode', 'fixedRate', 'Period', 0.1, 'TimerFcn', @(~,~) update_listbox());
start(t);

function update_listbox()
    % ... 更新列表框的代码 ...
end

通过这些策略,我们可以确保GUI响应迅速,不会因长时间执行的回调函数而冻结或出现卡顿现象。

5. GUI绘图功能与axes对象使用

5.1 Axes对象的基础知识

5.1.1 Axes对象在GUI中的角色

在MATLAB的GUI(图形用户界面)开发中,Axes对象扮演着至关重要的角色。Axes是坐标轴的缩写,它作为MATLAB图形系统的核心,提供了绘制和展示数据的二维及三维图形的基础。在用户交互的场景下,Axes对象通常包含坐标轴、网格线、图例、标题、坐标标签、数据标记、图形对象(如线、面、点等)及其他注释元素。

Axes对象是绘图区域的容器,用户可以在这个区域内自由地添加和控制图形元素。通过调整Axes的属性,例如轴标签、范围、刻度、颜色和线型等,可以创建出多样化的图形展示效果,以满足不同场景的需求。此外,Axes对象还支持不同类型的坐标系,如笛卡尔坐标系、极坐标系和对数坐标系等,提供多种数据展示方式。

5.1.2 Axes对象属性的设置方法

Axes对象的属性非常丰富,用户可以通过多种方法来设置这些属性,以达到所需的效果。基本属性设置方法包括:

  • 使用 set 函数 set 函数允许用户一次性设置一个或多个属性的值。例如, set(ax, 'Color', 'red') 将Axes对象的颜色设置为红色。
  • 通过图形对象的属性设置 :用户可以直接访问Axes对象下的图形对象(如线条、文本等),并通过图形对象的属性设置方法进行个性化的设置。
  • 使用 get 函数查询当前属性值 :当需要了解某个属性的当前设置,或者需要根据当前属性值进行进一步的修改时, get 函数显得非常有用。例如, get(ax, 'Color') 可以获取当前Axes对象的颜色。
  • 利用交互式设置 :在GUIDE工具中,用户可以通过界面上的属性编辑器,直观地选择和修改属性值,非常适合不熟悉编程的用户。

下面是一个设置Axes对象属性的代码示例,展示了如何使用 set 函数来改变坐标轴的属性:

ax = gca; % 获取当前Axes对象
set(ax, 'FontSize', 14, 'GridLineStyle', '-', 'XColor', 'r', 'YColor', 'g', 'ZColor', 'b');

以上代码段中, gca 函数返回当前的Axes对象。 set 函数的第一个参数是Axes对象本身,随后的键值对分别设置坐标轴的字体大小、网格线样式以及X、Y、Z轴的颜色。

5.1.3 Axes对象属性的动态调整

在GUI应用程序中,常常需要根据用户的操作或程序的需要动态调整Axes对象的属性。这可以通过为特定的事件编写回调函数来实现。在回调函数中,可以根据事件提供的信息更新Axes属性。例如,在鼠标按下事件中,可以将当前鼠标所在位置的坐标添加到图形中。

5.2 图形绘制的实践操作

5.2.1 使用axes对象绘制二维图形

在MATLAB中使用Axes对象绘制二维图形是GUI应用中常见的操作。以下是一些基础的步骤和示例代码:

  1. 创建或获取Axes对象 :如果需要创建新的Axes,使用 axes 函数;如果已经有Axes存在,则使用 gca 获取当前Axes。
  2. 绘制图形 :使用绘图函数,如 plot bar scatter 等在Axes对象上绘制图形。
  3. 设置图形属性 :通过设置Axes对象的属性来控制图形的外观,如轴标签、颜色、线条样式等。
% 创建一个新的Axes对象
ax = axes;

% 绘制一个简单的二维折线图
x = 0:0.1:10;
y = sin(x);
plot(x, y, 'LineWidth', 2);

% 设置坐标轴的属性
set(ax, 'FontSize', 12, 'XColor', 'b', 'YColor', 'g');
xlabel('X axis label');
ylabel('Y axis label');
title('A simple 2D plot in GUI');
grid on;

在这个示例中, axes 函数创建了一个新的Axes对象,然后使用 plot 函数绘制了一个简单的正弦波形图。通过 set 函数设置了坐标轴的字体大小、X和Y轴的颜色,并添加了坐标轴标签和标题。

5.2.2 利用axes对象进行三维绘图

与二维图形类似,三维图形的绘制也是通过创建或获取Axes对象,并利用相应的绘图函数来完成。三维图形提供了额外的Z轴用于展示数据的深度信息。

以下是一个绘制三维曲线的例子:

% 创建一个新的Axes对象并设置为三维视图
ax = axes('Projection', '3d');

% 生成数据
[X, Y, Z] = peaks(50);

% 绘制三维曲面图
surf(X, Y, Z);

% 旋转视图以便更好地观察图形
view(3);

% 设置坐标轴标签
xlabel('X axis label');
ylabel('Y axis label');
zlabel('Z axis label');
title('A 3D surface plot in GUI');

在这个示例中, axes 函数的 'Projection' 属性被设置为 '3d' ,表示创建了一个三维的Axes对象。然后,使用 surf 函数绘制了一个三维曲面图, view(3) 函数用于旋转视图角度,以便更好地观察图形的三维效果。最后,添加了坐标轴标签和标题。

通过上述的示例,我们可以看出,无论是二维还是三维图形,Axes对象为用户提供了强大的控制和配置图形的能力。这些操作不仅可以静态完成,还可以根据用户操作动态地更新图形,使得GUI应用程序的交互性大大增强。

6. MATLAB GUI绘图机制学习

6.1 GUI绘图机制的深入解析

6.1.1 图形对象及其属性的自动更新机制

在MATLAB GUI中,每一个图形元素,如线条、文本、按钮等,都是一个图形对象(handle object)。这些对象拥有可以设置的属性,它们的改变会自动反映在界面上。例如,当我们通过代码改变了一个按钮的颜色属性时,界面上的按钮颜色也会立即更新。

图形对象的自动更新机制依赖于其属性的动态监控。MATLAB的 set 函数可以用来改变对象的属性,而 get 函数则用来获取当前的属性值。例如:

% 假设hButton是按钮的句柄
hButton = uicontrol('Style', 'pushbutton', 'String', 'Click Me', 'Position', [100, 100, 100, 50]);
set(hButton, 'BackgroundColor', [1, 0, 0]); % 将按钮背景设置为红色

6.1.2 GUI绘图中的事件和响应模式

事件(event)是指用户在界面上的交互动作,例如点击按钮、调整滑块等。响应(callback)则是界面对这些事件的反应,它是由特定的函数来实现的。在MATLAB中,回调函数通常需要在GUIDE环境中或者在.m文件中手动编写。

GUI中的每个控件都可以关联到一个回调函数,当控件事件发生时,MATLAB会自动调用这个函数。回调函数的一般形式如下:

function myCallback(hObject, eventdata, handles)
% hObject    handle to the object that called the callback (button, axes, etc.)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% 检测到某事件发生后,执行特定操作
set(hObject, 'String', 'New Text'); % 更新按钮文本

6.2 高级绘图技巧与实践

6.2.1 利用回调函数实现动态更新图形

通过回调函数实现动态更新图形的目的是为了使GUI与用户交互更加直观和高效。例如,我们可以在用户点击一个按钮时,更新一个图表的数据或样式。下面是一个简单的例子:

function updateGraph(hObject, eventdata, handles)
% 这是一个回调函数,用于更新图表
% 假设hAxes是图表的句柄
hAxes = handles.myAxes;
% 更新图表数据
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(hAxes, x, y);

用户点击按钮后,图表会自动根据回调函数中的代码更新。

6.2.2 结合Matlab其他功能增强绘图效果

MATLAB不仅提供了强大的绘图能力,还可以与其他功能结合,增强绘图效果。例如,可以使用Statistics and Machine Learning Toolbox进行数据分析和可视化,或者使用Image Processing Toolbox处理图像数据并进行展示。

例如,利用Image Processing Toolbox将图像转换成灰度图:

img = imread('example.png'); % 读取图像
grayImg = rgb2gray(img); % 转换为灰度图
imshow(grayImg); % 显示灰度图

通过结合不同的工具箱,我们可以使GUI应用的功能更加丰富,提高用户的交互体验。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本资源展示了MATLAB GUI的强大绘图功能,包含了通过GUIDE工具设计的交互式窗口和控件,以及对应的操作脚本。通过本资源,用户可以学习如何创建和运行应用程序,以及如何利用回调函数响应用户交互,动态地在GUI中绘制各类图表。资源中包含的示例文件"gui.fig"和"gui.m"分别用于存储GUI设计和脚本代码,允许用户深入理解GUI绘图机制,并掌握MATLAB中绘图和控件交互的基础。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值