WPF程序给按钮增加不同状态的图片

WPF自定义按钮(Blend制作,无图片) 2.1 新建项目和对应的类库2.2 创建Controls 和Themes文件夹2.3 在Controls文件加内添加WPF自定义控件,CommControlButtonTest2.4 将以上Blend软件绘制的样式,复制到CommControlButtonTest的xmal文件内,注意需要修改文件的大标签格式为ResourceDictionary,总体采用这个标签来识别自定义的控件,接着将Blend软件绘制的样式内的Style复制到文件内。xmal如下</Grid></Setter> 阅读详情

首先我们在资源里添加几个图片,Up,Over和Down状态。
然后我们创建一个Style。默认我们的背景设置成Up

然后在Triggers里添加代码,当Property:IsMouseOver为True的时候更换成Over;当Property:IsPressed为True的时候更换成Down;

这样就可以了。代码如下:

<Window.Resources>
    
    <ImageBrush  x:Key="btnCloseUp" ImageSource="/source/guanbi.png"></ImageBrush>
    <ImageBrush  x:Key="btnCloseOver" ImageSource="/source/guanbi1.png"></ImageBrush>
    <ImageBrush  x:Key="btnCloseDown" ImageSource="/source/guanbi1 1.png"></ImageBrush>
    
    <Style x:Key="btnCloseStyle" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="{StaticResource btnCloseUp}"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border x:Name="button"
                    BorderThickness="0"
                    Background="{TemplateBinding Background}"
                            
                    SnapsToDevicePixels="True" IsEnabled="False">
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" TargetName="button" Value="{StaticResource btnCloseOver}"></Setter>
                        </Trigger>

                        <Trigger Property="IsPressed"  Value="True">
                            <Setter Property="Background" TargetName="button" Value="{StaticResource btnCloseDown}"></Setter>
                        </Trigger>

                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    

</Window.Resources>

当然如果需要不可用的时候显示成灰色,可以添加其他的状态:

<Trigger Property="IsEnabled"  Value="False">
    <Setter Property="Background" TargetName="button" Value="{StaticResource btnUpdateImgDisable}"></Setter>
</Trigger>

效果如图:
请添加图片描述

【图片OCR内容改名】如何OCR指定区域图片自动识别内容给图片重命名的实现教程,基于WPF和腾讯云的实现方案 在日常工作和生活场景中,我们常常会接触到大量带有文字信息的图片,例如证件照片、票据图片、带有标识的文档图片等。当需要对大量图片进行管理时,传统的根据拍摄时间或编号命名图片的方式,很难快速准确地定位和区分特定的图片。基于此,开发一个基于WPF界面框架,结合腾讯云OCR服务,实现指定区域图片自动识别内容并给图片重命名的工具就显得尤为实用。它可以帮助各类企业和个人更高效地管理和利用图片资源,提升工作效率。 阅读详情

相关推荐

WPF应用程序部分控件总结

标签文本框密码框按钮控件 1、Label 文本标签 父类 ContentControl 2、TextBox 文本框 编辑与显示 父类 TextBoxBase --Control 特殊内容控件 3、VerticalContentAlignment:垂直居中对齐方式 4、HorizontalContentAlignment:水平居中对齐方式 5、VerticalAlignment:垂直对齐方式 6、HorizontalAlignment:水平对齐方式 7、PasswordB

weixin_44569346的博客 393

WPF——给button添加背景图片

一个可行的解决方案为,封装一个用于图片按钮的自定义按钮控件,该控件继承自Button控件,但是额外增加了一些用户图片绑定的依赖属性,同时在控件的默认外观模板中,通过TemplateBinding的方式绑定到依赖属性上,这样在使用的时候便可以直接通过绑定的方式设置图片按钮需要显示的图片,不再需要修改控件模板。其中ImageButton.xaml为默认控件模板,ImageButton.cs为控件的逻辑控制文件,其中包含了ImageButton控件所需要的新的依赖属性,包括图片源属性等。

weixin_41883890的博客 3496

C#_WPF_按钮模板及自定义控件的使用

源码打包下载​​​​​​​ WPF功能强大,但是控件的用法与Winfrom不大一样。这个文件主要说明了Button控件的用法。希望能给大家一个启示。 1、按钮加入图片 <Button Grid.Row="0" Grid.Column="0" ToolTip="Set_Label" Name="set_label1" Height="45" VerticalAlignment="Stretch" Width="45" HorizontalAlignment="Stretch

dgnankai的专栏 1586

WPF常用的按钮样式(添加图片和设置圆角)

【代码】WPF常用的按钮样式(添加图片和设置圆角)

Hat_man_的博客 1700

WPF 图片文本按钮 自定义按钮

WPF 图片文本按钮 自定义按钮

StevenChen的博客 503

WPF中创建样式图片按钮的实践指南

WPF(Windows Presentation Foundation)中的按钮控件是一个非常基础且功能强大的UI元素。它允许用户通过点击来触发事件,是实现交云操作的主要手段。开发者可以自定义按钮的外观和行为,包括改变大小、颜色、形状以及在不同状态下的表现。在WPF中,样式是一种强大的功能,允许开发者定义和管理控件的视觉表现和行为。样式由一系列属性设置组成,可以应用于一个或多个控件。它的主要作用是重用界面代码和简化用户界面的维护工作。

weixin_34598113的博客 1137

C# WPF 按钮悬停时切换按钮图片

&lt;Button x:Name="btnExit" HorizontalAlignment="Left" Margin="452,238,0,0" VerticalAlignment="Top" Width="20" Height="20" ToolTip="退出程序"&gt; &lt;Button.Templat

Junior's Blog 1904

C#界面设计:蓝色背景与按钮图片素材

C#作为微软开发的一种面向对象的编程语言,与.NET框架紧密集成,提供了强大的UI设计能力。通过Windows Forms和WPF等技术,开发者可以创建具有丰富交互性和视觉吸引力的应用程序界面。在C#的WinForms或WPF应用程序中,控件可以触发各种事件。常见的事件类型包括:Click:当用户点击控件时触发。MouseEnter:当鼠标指针进入控件范围时触发。MouseLeave:当鼠标指针离开控件范围时触发。

weixin_31591833的博客 1098

【亲测免费】 好看的WPF自定义按钮样式(绝对不亏)

好看的WPF自定义按钮样式(绝对不亏) 去发现同类优质开源项目:https://gitcode.com/ 资源介绍 本仓库提供了一系列精美的WPF自定义按钮样式,全部出自个人之手,旨在为您的WPF应用程序增添独特的视觉效果。这些按钮样式不仅美观大方,而且在实际使用中表现出色,绝对能让您的应用界面焕然一新。 预览效果 您可以通过预览图片直观地了解这些按钮样式的外观和效果。预览图片展示了不同按钮在不同...

gitblog_09727的博客 654

WPF自定义图片按钮[ImageButtonWPF]

WPF自定义图片按钮[ImageButtonWPF] 更多资源: http://cleopard.download.youkuaiyun.com

重磅!Repo Wiki!

RepoWiki是Qoder平台的智能文档生成功能,通过静态代码分析自动提取项目架构、模块依赖和核心逻辑,并持续追踪代码变更保持文档同步。其工作流程分为四个阶段:1)代码扫描与AST解析;2)结构分析与依赖映射;3)文档智能生成;4)增量更新机制。支持多种编程语言,能识别设计模式并推断技术决策,适用于新项目搭建和遗留系统维护。优势在于降低理解成本和提高开发效率,但存在文件数量限制和依赖Git的局限性。典型应用场景包括自动生成架构图、API手册和团队知识沉淀。

ayusong870的博客 4034

C# WPF 自定义按钮的方法

本文介绍WPF一种自定义按钮的方法。 实现效果 使用图片做按钮背景; 自定义鼠标进入时效果; 自定义按压效果; 自定义禁用效果 实现效果如下图所示: 实现步骤 创建CustomButton.cs,继承自Button; 创建一个资源文件ButtonStyles.xaml; 在资源文件中设计按钮的Style; 在CustomButton.cs中添加Style中需要的依赖属性; 在程序中添加资源并引用(为了方便在不同的程序中引用自定义按钮,自定义按c#教程钮放在独立的类库中,应用程序中进行资源合并即可)。 示例

chinaherolts2008的博客 795

【Ubuntu2404】Ubuntu24.04安装NVIDIA驱动/CUDA/cuDNN搭建神经网络训练环境

NVIDIA 驱动、CUDA和cuDNN是紧密相关但各自具有独特功能的技术,它们共同为图形处理单元(GPU)加速的应用程序提供了强大的支持。本文主要介绍如何安装 `NVIDIA` 驱动、CUDA及cuDNN,为后续神经网络训练提供支持。本文主要介绍Ubuntu24.04安装NVIDIA驱动、CUDA和cuDNN的流程。

王阿巴和王咕噜 1万+

WPF Button按钮简单切换图片

Seal203的博客 8640

Nvivo12新手避坑指南:从安装到编码的完整流程(附实战案例)

本文为Nvivo12新手提供了从软件安装、初始设置到数据导入和编码分析的完整避坑指南。通过一个“校园欺凌现象的学生访谈研究”实战案例,详细拆解了处理中文文本、创建项目结构、执行手动编码及高级查询等关键步骤,帮助研究者避开常见错误,快速上手并高效完成质性数据分析。

resnet7explorer的博客 319

matlab2021a版本条件下安装spm

SPM (Statistical Parametric Mapping),中文名叫统计参数映射。统计参数映射是指构建和评估空间扩展的统计过程,用于测试关于功能成像数据的假设。这些想法已经在名为SPM的免费开源软件中得到了实例化。SPM软件包用于脑成像数据序列分析。目前的版本可以分析fMRI, PET, SPECT, EEG和MEG。 可能由于matlab版本更新的问题,按照之前教程所写的安装方法会出现错误,踩了一些坑,但好在最终解决了。。。 1、下载链接,如下 SPM12 Software -...

qq_42356925的博客 8407

WPF基础控件

在这篇博客中,我们将探讨 WPF 中一些常用的控件,包括 TextBlock、Label、ListBox、DataGrid、ListView、ToggleButton 等。我们将介绍每个控件的作用、常用属性和事件,并提供示例代码来演示它们的用法。无论您是初学者还是有经验的 WPF 开发者,本文都将为您提供有价值的信息,帮助您更好地理解和使用这些控件。

代码改变世界 4208

[Dify] 如何构建一个带评分功能的 Dify AI 教练系统

本文介绍如何利用Dify开源平台构建具备自动评分功能的AI教练系统。系统通过Prompt设计AI教练角色,使用OpenAPI定义评分工具接口,结合工作流编排实现提问、回答收集、评分和反馈的全流程。文章详细讲解了从AI教练身份设定、多维度评分标准设计到前端可视化展示的实现方法,并提供了可扩展建议,适用于语言训练、面试模拟等多种场景。该系统展示了Dify平台在构建智能化评估应用方面的优势,实现零代码开发专业AI教练解决方案。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 334

WPF开源控件Newbeecoder.UI自定义按钮

程序界面上的按钮多种多样,常用的就这几种:普通按钮、图标按钮、文字按钮、图片文字混合按钮。 一、固定样式的按钮 固定样式的按钮一般在临时使用时或程序的样式比较固定时才会使用,按钮整体样式不需要做大的改动。 1.1 普通按钮-扁平化风格 先看效果: 自定义按钮样式中增加几个依赖属性,IsHitTestVisibleInChrome、非客户区鼠标是否响应事件,CornerRadius、MaskBackground、DisabledCursor、NbData,NbData目前存放图片,该类型是.

软件技术的专栏 764

使用 MATLAB/Simulink 搭建一个步进电机细分控制系统的仿真模型

步进电机(Stepper Motor)是一种将电脉冲信号转换为角位移或线位移的执行元件,广泛应用于数控机床、3D打印、机器人、精密仪器等领域。其特点是开环控制、定位精度高、响应快、无累积误差。然而,传统步进电机在整步或半步运行时存在振动大、噪音高、转矩波动明显等问题。为了解决这些问题,细分控制技术被广泛采用。细分控制通过对绕组电流进行精确控制,使转子在两个整步之间实现平滑移动,从而提升电机的运行平稳性和位置精度。本教程将带你使用搭建一个步进电机细分控制系统的仿真模型,并通过仿真分析其。

amy_mhd的博客 428

ICML-2025《Learning from Sample Stability for Deep Clustering》

用于指导深度聚类模型的训练,从而提升模型对困难样本的学习能力,最终改善整体聚类性能。首先,利用K-means在原始样本(非增强)的表征上进行聚类,得到初始聚类分配。其目的是鼓励模型对同一稳定样本在连续epoch中产生相近的表征。输出差异大)会产生更大的损失值,从而引导模型优先优化这些困难样本。此损失借鉴了NT-Xent损失的思想,但将正样本对定义为。最后,通过对比学习优化聚类中心,将同一聚类在。为了获得更具代表性的聚类中心,论文提出。为了学习更鲁棒的表征,模型在在线网络。首先,论文定义了样本。

Christo的博客 830

WPF Button 鼠标移入、移除、选中状态的改变

控件中绑定样式

yb305 1万+

基于YOLOv10的机器人抓取引导系统:从物体检测到精准抓取

python# 数据标注工具简化版import os"""启动标注工具""""""标注单张图像"""print(f"标注图像: {os.path.basename(img_path)}")print("请在图像上绘制抓取矩形框...")# 这里应该实现交互式标注界面# 简化版本直接返回示例标注# 示例标注数据"""保存标注结果"""# 保存为YOLO格式# 转换为YOLO格式。

YOLO 378

WPF 用户控件

WPF中的自定义控件往往结合

sunny906的专栏 3297

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

WPF 调试因为对象不同而绑定失效问题

在 WPF 使用绑定的时候,发现绑定不上,也许是因为绑定的对象不是当前作用的对象的原因。也许是绑定错了对象,或者对象被变更了。本文来告诉大家这个调试思路和方法 使用一个简单的例子来告诉大家,这样比较直观 我有一个简单的应用,这个应用的字符串显示绑定了一个 ToggleButton 也就是下图的写着 点击 的按钮 在 ToggleButton 的 IsChecked 变化的时候,将会自动更...

lindexi 893

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

WPF动画如何使用?炫酷的WPF UI必须掌握,赶紧学起来

使用WPF,可以轻松地创建复杂的图形和动画,实现各种交互效果,以及使用各种不同的数据绑定和样式。无论你是初学者还是有经验的开发人员,都可以通过学习WPF来开发具有创新性和吸引力的应用程序。赶紧学起来吧!

Documentlv的博客 4771
上一篇: Unity场景ab包加载压缩(LZ4,LZMA)格式的测试
下一篇: WPF小知识 - 技巧合集
Thinbug
博客等级 码龄22年 2万+粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinbug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值