LCD与触摸屏坐标转换

Android触摸屏坐标转换 一、坐标转换机制概述 特有名词: TP : 触摸屏(Touch Panel) LCD : 显示屏(Liquid Crystal Display)    在Android系统中,大多数的操作都是通过TP完成;这中间就涉及到将TP上报的触屏信息映射到LCD的像素坐标中,以保证显示的正确性。但一般情况下,如没有特殊需求,我们往往是一款TPIC可以搭配多款不同分辨率的LCD;这样搭配可以正常 阅读详情
想要 弄明白LCD屏幕坐标和触摸屏坐标的关系,得先从LCD触摸屏的结构说起。一般我们接触到的触摸屏都有两层,一层是纯粹的LCD液晶显示面板,其上就是一层透明的触摸屏薄膜。要说的是,LCD显示屏和触摸屏都有各自的分辨率指标,也就相当于它们的坐标系,现假定他们的坐标系分别为(x,y)和(X,Y)。就像我所测试的LCD显示屏的分辨率为1024*600,它的坐标原点(0,0)是左上角,右下角坐标为(1024,600),而触摸屏也有它本身的坐标原点O(物理的,固定的,在屏幕中的某一位置,很可能该原点在装配过程中已经被切割掉,但没关系,不影响坐标确定)。
=====================================================================
在实际使用过程中,我们不会关心某 个时刻触摸屏的具体坐标是什么,我们所关心的是在LCD屏的坐标系(x,y),然而驱动程序得到的却是触摸屏的坐标系(X,Y),那么我们怎么把两个2维线性坐标系通过几个采样值,对应起来,即(X,Y)—>(x,y), 例,具体的做法是:
————————-
(1)取定LCD屏幕的四个角的坐标作为采样值(因为在没有其他工具的情况下,只有这四个点才知道确切的坐标(x1,y1),(x2,y2),(x3,y3),(x4,y4))
————————-
(2) 运行之前做的 输入设备检测程序 ,分别点击LCD的四个角,在程序中读出这些点对应的触摸屏坐标值(X1,Y1),(X2,Y2),(X3,Y3),(X4,Y4)
————————-
(3) 将这四个采样值代入如下方程,求解出方程中的7个系数(a,b,c,d,e,f,s),就可以得到两个坐标系的对应关系了:
             sx=aX+bY+c, sy=eX+fY+g 
           假定s=65535
           sx1=aX1+bY1+c
           …..
           sy1=eX1+fY1+g
           …..
————————
上面的情况是普遍适用的, 全面,精度较高,但求解的未知数多,需要的采样值也多; 事实上,现在的装配工艺完全可以保证两个坐标系的相位差为90度的整数倍, 也就是说,上面的对应方程简可化为
{ x=aX+b, y=cY+d     } 或者 { x=aY+b, y=cX+d }
这样,只需要2组采样值, 就可以确定对应系数!     两个坐标系的对应关系就明确了, 一切触摸屏坐标都将根据这个对应关系式转化成LCD坐标系中相应的坐标。
裸机系列——s3c2440之触摸屏 平台         mini2440 触摸屏     索尼x-35 3.5寸触摸屏 1.0、触摸屏与lcd 触摸屏与lcd是俩个独立的屏在lcd中已经讲过了,但是这里在提一下,主要是涉及到一个触摸屏校正的问题,我以前一直很是不解我手指点的什么东西电脑是怎么知道的,直到我弄 阅读详情

相关推荐

stm32(十九)触摸屏XPT2046

1、触摸屏介绍 触摸屏(touch screen)又称为“触控屏”、 “触摸面板”,是一种可接收触头等输入讯号的感应式液晶显示装置, 当接触了屏幕上的图形按钮时,屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置,可用以取代机 械式的按钮面板,并借由液晶显示画面制造出生动的影音效果。触摸屏作为一种最新的电脑输入设备,它是目前 最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌...

朗朗上口就行啦的博客 1万+

触摸屏驱动:坐标转换

触摸屏驱动:坐标转换--作者:赖玉平(Auly)aulyp@163.com 当读到触摸屏坐标,要和相应的LCD屏坐标对应,因为触摸屏都是附在LCD上使用的。这样才能达到所见即所得的效果。TSP_TransXY(INT *px, INT *py){    INT TmpX, TmpY;    //---判有没有超过最大范围,如超过,取最大---    TmpX = (*p

2907

android 触屏 坐标 偏移,android触摸屏坐标手工校准/调整成功

1.简述android 的坐标转换处理:This implementation is a linear transformation using 7 parameters(a, b, c, d, e, f and s) to transform the device coordinates (Xd, Yd)into screen coordinates (Xs, Ys) using the fol...

weixin_40007515的博客 1887

触摸屏的校准与坐标变换

 最近做了一点触摸屏的驱动工作,总结了一下,触摸屏的校准的核心其实就是坐标的变换问题。下面将触屏校准的思路简单记录一下:第一步,记录LCD的4个角上的Touch坐标值(不是LCD坐标值,而是Touch传出来的坐标值)(x1,y1) ----- (x2,y2) | | | | | |(x4

技海淘金 7299

一文入门BMS(电池管理系统)

本文章是基于曾师兄的文稿《具有组网扩展功能的新能源汽车电池管理系统》而写的文章。该文章主要是对BMS(Battery Management System,电池管理系统)做一些简要的介绍,借此助各位也助我入门BMS。有纰漏请指出,转载请说明。学习交流请发邮件 1280253714@qq.com。

weixin_45817947的博客 2万+

深度学习与神经网络有什么区别

人工神经网络(ArtificialNeuralNetwork,即ANN)是从信息处理角度对人脑神经元网络进行抽象,是20世纪80年代以来人工智能领域兴起的研究热点,其本质是一种运算模型,由大量的节点(或称神经元)之间相互联接构成,在模式识别、智能机器人、自动控制、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。...

super67269的博客 8488

LCD & 触摸屏调试记录

1、LCD闪烁的问题 通过搜索了解到,极大可能是驱动频率过低的情况,导致屏幕闪烁 解决方法: 调整LCD的时钟频率 触摸屏GT911遇到问题 1、触摸屏原点(0, 0)在右下角,LCD的原点(0, 0)在左上角 查看触摸屏相关手册知道触摸屏原点有些芯片决定的,有些是代码决定的。 经过和供应商确认,触摸屏原点默认在左上角(连接排线的那一边是下方) 原点不重合问题解决办法: (1) 通过软件进行坐标转换,将触摸屏坐标转换成和LCD对应 (2) 改变LCD的扫描显示方向,使LCD和触摸原点重合 最终采用改

欲盖弥彰1314 3067

CentOS7安装openGauss5.0.2LTS版本

该文档要根据自己的实际情况调整ip地址。要根据自己的实际网卡调整。

superhanyubo的专栏 2579

LCD编程显示像素点

一 LCD屏幕 本次学习使用的LCD屏是一块 800*480 分辨率的全彩屏幕。 分辨率的意思是:每行有800个像素点,一共有480行。 全彩的意思是:像素点显示的颜色是由RGB红绿蓝三种单颜色组成,其次还有阿尔法粒子透明度A。也就是ARGB。 LCD显示屏在工作中需要显卡,显卡中要有显存。而本次学习的开发板没有独立显卡,所以需要分配虚拟显存。而每个像素点在显存中占据4个字节的空间,也就是ARGB...

金三亲的博客 9709

【crawler笔记】R语言简单动态网页爬虫(rvest包)示例

1、爬虫目标 大家普遍认为Python的爬虫功能强大,但在解决动态加载或者登陆网站时,Python存在一定困难的,相对于一些普通爬虫,使用R语言会更方便。 以https://www.thepaper.cn/为例,爬取首页的新闻(标题、内容、时间),主要采用的是动态网页中常用的httr包。 初始学习时,参考了B站《20分钟入门基于R语言的网络爬虫_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili》的视频,但代码运行出现了报错,所以在原代码上做了修改。 2、代码分析及报错修改 library(rv

seeyouer1205的博客 3275

Oracle恢复学习实战小结

     学习oracle10g 043课程有段时间了,前一两个星期学习了backup/restore相关的内容,刚好公司有要求要为host服务器做一个备用机以防止数据意外丢失。于是,实战开始了。     首先介绍host服务器架构。host以oracle数据库作为底层数据存储,以公司总部开发的Santorin作为应用,主要提供给测试台架数据存储、数据访问、数据导入导出、用户权限管理和数据自动备份

kseawolfk的专栏 1035

LCD触摸屏中LCD屏幕坐标和触摸屏坐标的关系

想要弄明白LCD屏幕坐标和触摸屏坐标的关系,得先从LCD触摸屏的结构说起。一般我们接触到的触摸屏都有两层,一层是纯粹的LCD液晶显示面板,其上就是一层透明的触摸屏薄膜。要说的是,LCD显示屏和触摸屏都有各自的分辨率指标,也就相当于它们的坐标系,现假定他们的坐标系分别为(x,y)和(X,Y)。就像我所测试的LCD显示屏的分辨率为1024*600,它的坐标原点(0,0)是左上角,右下角坐标为(1024

老王单片机 1万+

上线之前多一道闸:业务审核系统的接入定义、双轨状态机与可靠生效闭环

运营后台“保存即生效”,让价格、库存、人群等配置每次修改都相当于一次无评审的上线。本文以至尊会员降价活动为例,系统拆解业务审核系统:用带业务语义的操作编码、规则化审核人与候选人快照、完整的生效回调契约做好接入定义;把业务改造为提交待生效,以不可变快照、字段级差异和唯一约束加幂等号防误配防重复;用审批轨与执行轨双轨状态机、链路式重新提交和以事件为准的审核链路理清状态;最后以发件箱、幂等键、超时先查后试、乐观锁与对账闭合生效环节,并结合两个可运行的Java程序,给出五种生效策略的事故率实测对比。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

1.9.9_ADC和触摸屏_较准原理_P

1

一个嵌入式软件工程师的博客 421

c++ webrtc基础(1) :webrtc源码下载与编译、项目模块介绍、学习资料推荐

本篇博客介绍webrtc源码的下载与编译,以及推荐webrtc学习资料。 源码下载 电脑环境:win10/win11 64bit,合理的上网环境,没有合理的网络环境无法拉取、下载webrtc代码和工具,宽带速度要快,尽量50M. 主要步骤如下: (1) 安装git (2) 打开cmd控制台,下载google开发工具depot_tools: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git (3) 新建一个目

琅嬛福地 3298

手把手教你ensp仿真搭建校园网(含防火墙及无线网络)系列(二)校园网接入层交换机配置

本系列博客将带你从零开始,使用 华为 eNSP(Enterprise Network Simulation Platform) 仿真搭建一个完整的校园网络,涵盖 核心层、汇聚层、接入层、防火墙安全策略、无线AC+AP组网 等实战场景。无论你是网络初学者还是希望深化实战经验的工程师,都能通过本教程掌握企业级网络的规划、配置与排错技巧。

echo的博客 1219

android触摸屏坐标转换,【转】android触摸屏坐标手工校准/调整成功

android 的坐标转换处理:This implementation is a linear transformation using 7 parameters(a, b, c, d, e, f and s) to transform the device coordinates (Xd, Yd)into screen coordinates (Xs, Ys) using the followi...

weixin_39901439的博客 996

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

触摸屏校正原理

(1)触摸屏为什么需要校正?      触摸屏与LCD显示屏是两个不同的物理器件。LCD处理的像素,例如我们通常所说的分辨率是600x800,实际就是指每行的宽度是600个像素,高度是800个像素,而触摸屏处理的数据是点的物理坐标,该坐标是通过触摸屏控制器采集到的。两者之间需要一定的转换。      其次, 在安装触摸屏时,不可避免的存在着一定的误差,如旋转,平移的,这同样需要校正解决。  

WangMark的专栏 1355

深度学习工具包 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")

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

linux电容触摸屏驱动参数,Android/Linux CTP电容触摸屏:报点范围和LCD分辨率的关系...

关于在设置TP参数的时候input_set_abs_params(input_dev, ABS_MT_POSITION_X, 0, pdata->x_max, 0, 0);input_set_abs_params(input_dev, ABS_MT_POSITION_Y, 0, pdata->y_max, 0, 0);这里表示设置输入系统能识别的X、Y的范围分别是(0, pdata-&...

weixin_36307344的博客 887

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

基于SOPC的触摸屏操作

mian.c //-----------------------------------------------------------------------------------------------------------   #include #include #include #include #include "system.h" #include "alt

k030941503的专栏 527

韦东山嵌入式Linux学习——017 ADC和触摸屏(4)-校准与画线

ADC和触摸屏(4)——校准与画线 /*  *硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)  *软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统,  *参考资料:开发版原理图,S3C2440A datasheet */ 目录ADC和触摸屏(4)——校准与画线一、前言二、编程原理1、坐标转换方法1.1 原理1.2 校准公式1.3 代码兑现2、坐标倒置修正方法2.1 指定两点,判断其xy方向距离

weixin_42813232的博客 1412

触摸屏事例

触摸屏可分为矢量压力传感式、电阻式、电容式、红外式和表面声波式等,我用的是最普遍的-四线电阻式。   s3c2440集成了4线制电阻式的触摸屏接口,触点坐标的检测是通过A/D转换来实现的。s3c2440提供8路A/D模拟输入,其中有4路是与触摸屏复用的,s3c2440比s3c2410改进的地方是片内部加入了开关用的MOS管,在设计电路时,直接将4路触摸屏引出外加一路基准电压(3.3v)就可以了

497

韦东山ARM裸机和uboot大全(第1期加强版)学习笔记18-第018课_ADC和触摸屏_第009~012节_触摸屏编程_较准原理

参考文章:STM32f103的电阻触摸屏的五点校正算法 一 校准原理 如下图,假如底下是LCD,上面是触摸屏膜(TS)。假设分辨率是480*272,那么在LCD坐标为(0,0)的地方,TS对应的点坐标为(x1’,y1’)。LCD坐标为(479,271)的地方,TS对应的点为(x2’,y2’)。 那么,假如触点的坐标为(x’,y’),对应的LCD的点坐标呢? 为了简化,我们先看x轴的坐标:...

xiaoaojianghu09的博客 293
上一篇: Android中HAL如何向上层提供接口总结-hw_device_t
下一篇: linux 环境变量查看,设置,删除
ricks_wu
博客等级 码龄18年 59粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值