QGraphicsItem成员函数setPos()详解

setPos()函数Qt帮助文档说明


Sets the position of the item to pos, which is in parent coordinates. For items with no parent, pos is in scene coordinates.
The position of the item describes its origin (local coordinate (0, 0)) in parent coordinates.
翻译一下就是:
若item具有父对象,位置按照其父Item对象坐标系确定。若item对象没有父Item对象,其位置按照在scene坐标系确定。这个位置是如何确定的呢? 是按照其局部坐标系原点(0,0)在其父Item对象中坐标位置确定的。
举个例子:从QGraphicsItem类派生出RectangleItem类。
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
QRectF boundingRect() const;
这两个函数在QGraphicsItem类中为纯虚函数,所以必须重写。
头文件实现如下:

#ifndef RECTANGLEITEM_H
#define RECTANGLEITEM_H

#include <QGraphicsItem>

class RectangleItem : public QGraphicsItem
{

public:
    explicit RectangleItem(QGraphicsItem *parent = nullptr);

protected:
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
    QRectF boundingRect() const;
};

#endif // RECTANGLEITEM_H

cpp实现如下所示

#include "rectangleitem.h"

#include <QPainter>

RectangleItem::RectangleItem(QGraphicsItem *parent) : QGraphicsItem(parent)
{

}

void RectangleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    Q_UNUSED(option)
    Q_UNUSED(widget)

    painter->drawRect(boundingRect());
}

QRectF RectangleItem::boundingRect() const
{
    double width=60;
    double height=30;
   return QRectF(-width/2, -height/2, width, height);
}

QRectF boundingRect() const;函数的重写是指定绘图区域的,同时也确定了绘图局部坐标的原点位置。

QRectF RectangleItem::boundingRect() const
{
    double width=60;
    double height=30;
   return QRectF(-width/2, -height/2, width, height);
}

这样实现,item的原点(0,0)在其几何中心
若设置setPos(100,100),则该Item的(0,0)点的位置,即item的中心在(100,100)
若调用这个类的话,会绘制出一个矩形,矩形的中心在(100,100)。
QRectF boundingRect() const;换种实现方法实现:

QRectF RectangleItem::boundingRect() const
{
	  double width=60;
    double height=30;
    return QRectF(0, 0, width, height);
}

这样一来,item的原点(0,0)在其左上角位置

若设置setPos(100,100),则该Item的(0,0)点的位置,即item的左上角位置在(100,100)
若调用这个类的话,会绘制出一个矩形,矩形的左上角在(100,100)。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
2.4 贪吃蛇实验/*---------------------------------------------------------------- 320x240彩屏液晶驱动程序 ----------------------------------------------------------------*/ #include"9325tp.h" #include"reg52.h" /*---------------------------------------------------------------- 全局变量 ----------------------------------------------------------------*/ #define WINDOW_XADDR_START 0x0050 // Horizontal Start Address Set #define WINDOW_XADDR_END 0x0051 // Horizontal End Address Set #define WINDOW_YADDR_START 0x0052 // Vertical Start Address Set #define WINDOW_YADDR_END 0x0053 // Vertical End Address Set #define GRAM_XADDR 0x0020 // GRAM Horizontal Address Set #define GRAM_YADDR 0x0021 // GRAM Vertical Address Set #define GRAMWR 0x0022 // memory write #define DataPort P0 //数据口使用DataPort /*---------------------------------------------------------------- 定义硬件端口 ----------------------------------------------------------------*/ sbit CS=P2^2; //片选 sbit RES=P2^1; //复位 sbit RS=P2^4; //数据/命令选择 sbit RW=P2^5; /*---------------------------------------------------------------- 清屏函数 输入参数:bColor 清屏所使用的背景色 ----------------------------------------------------------------*/ void CLR_Screen(unsigned int bColor) { unsigned int i,j; LCD_SetPos(0,240,0,320);//320x240 for (i=0;i<320;i++) { for (j=0;j<240;j++) Write_Data_U16(bColor); } } /*---------------------------------------------------------------- 显示英文字符 输入参数:x 横坐标 y 纵坐标 c 需要显示的字符 fColor 字符颜色 bColor 字符背景颜色 ----------------------------------------------------------------*/ #include "8X16.h" void LCD_PutChar8x16(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor) { unsigned int i,j; LCD_SetPos(x,x+8-1,y,y+16-1); for(i=0; i<16;i++) { unsigned char m=Font8x16[c*16+i]; for(j=0;j<8;j++) { if((m&0x80)==0x80) { Write_Data_U16(fColor); } else { Write_Data_U16(bColor); } m<<=1; } } } /*---------------------------------------------------------------- 显示英文字符 输入参数:x 横坐标 y 纵坐标 c 需要显示的字符 fColor 字符颜色 bColor 字符背景颜色 ----------------------------------------------------------------*/ void LCD_PutChar(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor) { LCD_PutChar8x16( x, y, c, fColor, bColor ); } /*---------------------------------------------------------------- 显示汉字 输入参数:x 横坐标 y 纵坐标 c 需要显示的汉字码 fColor 字符颜色 bColor 字符背景颜色 ----------------------------------------------------------------*/ #include "GB1616.h" //16*16汉字字模 void PutGB1616(unsigned short x, unsigned short y, unsigned char c[2], unsigned int fColor,unsigned int bColor){ unsigned int i,j,k; LCD_SetPos(x, x+16-1,y, y+16-1); for (k=0;k<64;k++) { //64标示自建汉字库中的个数,循环查询内码 if ((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])){ for(i=0;i<32;i++) { unsigned short m=codeGB_16[k].Msk[i]; for(j=0;j<8;j++) { if((m&0x80)==0x80) { Write_Data_U16(fColor); } else { Write_Data_U16(bColor); } m<<=1; } } } } } /*---------------------------------------------------------------- 显示字符串 可以中英文同时显示 输入参数:x 横坐标 y 纵坐标 *s 需要显示的字符串 fColor 字符颜色 bColor 字符背景颜色 ----------------------------------------------------------------*/ void LCD_PutString(unsigned short x, unsigned short y, unsigned char *s, unsigned int fColor, unsigned int bColor) { unsigned char l=0; while(*s) { if( *s < 0x80) { LCD_PutChar(x+l*8,y,*s,fColor,bColor); s++;l++; } else { PutGB1616(x+l*8,y,(unsigned char*)s,fColor,bColor); s+=2;l+=2; } } } /*---------------------------------------------------------------- 显示RGB颜色 输入参数:x0,y0 起始坐标 x1,y1 结束坐标 Color 背景颜色 ----------------------------------------------------------------*/ /*void Show_RGB (unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1,unsigned int Color) { unsigned int i,j; LCD_SetPos(x0,x1,y0,y1); for (i=y0;i<=y1;i++) { for (j=x0;j<=x1;j++) Write_Data_U16(Color); } } */ /*---------------------------------------------------------------- 显示图片 图片必须是320x240,否则不能正确识别 ----------------------------------------------------------------*/ /*void show_photo(void) { unsigned char j; unsigned int i; unsigned long s=0; LCD_SetPos(0,240,0,320);//320x240 for (i=0;i<75;i++) { for (j=0;j<240;j++) Write_Data(0xff,0xff); } for (i=0;i<170;i++) { for (j=0;j<55;j++) Write_Data(0xff,0xff); for (j=0;j<130;j++) Write_Data(pic[s++],pic[s++]); for (j=0;j<55;j++) Write_Data(0xff,0xff); } for (i=0;i<75;i++) { for (j=0;j<240;j++) Write_Data(0xff,0xff); } } */ /*---------------------------------------------------------------- 写命令、写数据 输入参数:x 需要输入的命令 16位 y 需要输入的数据 16位 ----------------------------------------------------------------*/ void Write_Cmd_Data (unsigned char x,unsigned int y) { unsigned char m,n; m=y>>8; n=y; Write_Cmd(0x00,x); Write_Data(m,n); } /*---------------------------------------------------------------- 写16位数据 ----------------------------------------------------------------*/ void Write_Data_U16(unsigned int y) { unsigned char m,n; m=y>>8; n=y; Write_Data(m,n); } /*---------------------------------------------------------------- 写命令 ----------------------------------------------------------------*/ void Write_Cmd(unsigned char DH,unsigned char DL) { CS=0; RS=0; DataPort=DH; RW=0; RW=1; DataPort=DL; RW=0; RW=1; CS=1; } /*---------------------------------------------------------------- 写数据 双8位 ----------------------------------------------------------------*/ void Write_Data(unsigned char DH,unsigned char DL) { CS=0; RS=1; DataPort=DH; RW=0; RW=1; DataPort=DL; RW=0; RW=1; CS=1; } /*---------------------------------------------------------------- 延时函数 ----------------------------------------------------------------*/ void delayms(unsigned int count) { int i,j; for(i=0;i<count;i++) { for(j=0;j<260;j++); } } /*---------------------------------------------------------------- 液晶初始化 ----------------------------------------------------------------*/ void ILI9325_Initial(void) { CS=1; delayms(5); RES=0; delayms(5); RES=1; delayms(50); Write_Cmd_Data(0x0001,0x0100); Write_Cmd_Data(0x0002,0x0700); Write_Cmd_Data(0x0003,0x1030); Write_Cmd_Data(0x0004,0x0000); Write_Cmd_Data(0x0008,0x0207); Write_Cmd_Data(0x0009,0x0000); Write_Cmd_Data(0x000A,0x0000); Write_Cmd_Data(0x000C,0x0000); Write_Cmd_Data(0x000D,0x0000); Write_Cmd_Data(0x000F,0x0000); //power on sequence VGHVGL Write_Cmd_Data(0x0010,0x0000); Write_Cmd_Data(0x0011,0x0007); Write_Cmd_Data(0x0012,0x0000); Write_Cmd_Data(0x0013,0x0000); //vgh Write_Cmd_Data(0x0010,0x1290); Write_Cmd_Data(0x0011,0x0227); //delayms(100); //vregiout Write_Cmd_Data(0x0012,0x001d); //0x001b //delayms(100); //vom amplitude Write_Cmd_Data(0x0013,0x1500); //delayms(100); //vom H Write_Cmd_Data(0x0029,0x0018); Write_Cmd_Data(0x002B,0x000D); //gamma Write_Cmd_Data(0x0030,0x0004); Write_Cmd_Data(0x0031,0x0307); Write_Cmd_Data(0x0032,0x0002);// 0006 Write_Cmd_Data(0x0035,0x0206); Write_Cmd_Data(0x0036,0x0408); Write_Cmd_Data(0x0037,0x0507); Write_Cmd_Data(0x0038,0x0204);//0200 Write_Cmd_Data(0x0039,0x0707); Write_Cmd_Data(0x003C,0x0405);// 0504 Write_Cmd_Data(0x003D,0x0F02); //ram Write_Cmd_Data(0x0050,0x0000); Write_Cmd_Data(0x0051,0x00EF); Write_Cmd_Data(0x0052,0x0000); Write_Cmd_Data(0x0053,0x013F); Write_Cmd_Data(0x0060,0xA700); Write_Cmd_Data(0x0061,0x0001); Write_Cmd_Data(0x006A,0x0000); // Write_Cmd_Data(0x0080,0x0000); Write_Cmd_Data(0x0081,0x0000); Write_Cmd_Data(0x0082,0x0000); Write_Cmd_Data(0x0083,0x0000); Write_Cmd_Data(0x0084,0x0000); Write_Cmd_Data(0x0085,0x0000); // Write_Cmd_Data(0x0090,0x0010); Write_Cmd_Data(0x0092,0x0600); Write_Cmd_Data(0x0093,0x0003); Write_Cmd_Data(0x0095,0x0110); Write_Cmd_Data(0x0097,0x0000); Write_Cmd_Data(0x0098,0x0000); Write_Cmd_Data(0x0007,0x0133); // Write_Cmd_Data(0x0022);// } /*---------------------------------------------------------------- 画点 输入参数:x,y 需要画点坐标 color 点的颜色 ----------------------------------------------------------------*/ void Put_pixel(uchar x,uchar y,unsigned int color) { LCD_SetPos(x,x,y,y); Write_Data_U16(color); } /*---------------------------------------------------------------- 设置坐标 ----------------------------------------------------------------*/ static void LCD_SetPos(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1) { Write_Cmd_Data(WINDOW_XADDR_START,x0); Write_Cmd_Data(WINDOW_XADDR_END,x1); Write_Cmd_Data(WINDOW_YADDR_START,y0); Write_Cmd_Data(WINDOW_YADDR_END,y1); Write_Cmd_Data(GRAM_XADDR,x0); Write_Cmd_Data(GRAM_YADDR,y0); Write_Cmd (0x00,0x22);//LCD_WriteCMD(GRAMWR); } /*---------------------------------------------------------------- 在屏幕上画线 输入参数: 起始坐标X0,Y0,终止坐标X1,Y1 color 线颜色 ----------------------------------------------------------------*/ void Line( uchar X0, uchar Y0, uchar X1, uchar Y1, unsigned int color) { int dx = X1 - X0; int dy = Y1 - Y0; int P = 2 * dy - dx; int dobDy = 2 * dy; int dobD = 2 * (dy - dx); int PointX = 0,PointY = 0; int incx = 0,incy = 0; int distance = 0,xerr = 0,yerr = 0; unsigned int i = 0; if(dx == 0) //k=1斜率为1 { PointX = X0; if(Y0 < Y1) { PointY = Y0; } else { PointY = Y1; } for(i = 0;i <= ((Y0<Y1) ? (Y1-Y0) : (Y0-Y1));i++) { Put_pixel(PointX,PointY,color); PointY++; } return; } if(dy == 0) //k=0斜率为0 { PointY = Y0; if(X0 < X1) { PointX = X0; } else { PointX = X1; } for(i = 0;i <= ((X0<X1) ? (X1-X0) : (X0-X1));i++) { Put_pixel(PointX,PointY,color); PointX++; } return; } if(dx > 0) incx = 1; else if(dx == 0) incx = 0; else incx = -1; if(dy > 0) incy = 1; else if(dy == 0) incy = 0; else incy = -1; dx = ((X0>X1) ? (X0-X1) : (X1-X0)); dy = ((Y0>Y1) ? (Y0-Y1) : (Y1-Y0)); if(dx>dy) distance=dx; else distance=dy; PointX = X0; PointY = Y0; for(i=0;i<=distance+1;i++) { Put_pixel(PointX,PointY,color); xerr+=dx; yerr+=dy; if(xerr>distance) { xerr-=distance; PointX+=incx; } if(yerr>distance) { yerr-=distance; PointY+=incy; } } } /*--------------------------------------------------------------------------- 绘制矩形框 输入参数:矩形的起始位置left,top 矩形的结束位置right,bottom 矩形框的颜色color -----------------------------------------------------------------------------*/ void Rectangle( uchar left, uchar top, uchar right, uchar bottom, unsigned int color) { Line(left,top,right,top,color); Line(left,top,left,bottom,color); Line(right,top,right,bottom,color); Line(left,bottom,right,bottom,color); } /*--------------------------------------------------------------------------- 绘制平面矩形 输入参数:矩形的起始位置left,top 矩形的结束位置right,bottom 矩形框的颜色color -----------------------------------------------------------------------------*/ void Bar( uchar left, uchar top, uchar right, uchar bottom, unsigned int color) { uchar i = 0,k = 0; for(k = top;k < bottom;k++) { for(i = left+1;i <= right;i++) { LCD_SetPos(i,i,k,k); Write_Data_U16(color); } } } /*--------------------------------------------------------------------------- 向LCD发送一个0--255的数值 -----------------------------------------------------------------------------*/ void LCDShow_uCharNumber( uchar x, uchar y, uchar uCharNumber, unsigned int forecolor, unsigned int bkcolor) { LCD_PutChar(x,y,uCharNumber/100+'0',forecolor,bkcolor); LCD_PutChar(x+8,y,uCharNumber/10+'0',forecolor,bkcolor); LCD_PutChar(x+16,y,uCharNumber+'0',forecolor,bkcolor); }
一、 Delay延时函数 1、 DelayUs2x------------------------ uS延时函数 2、 DelayMs-------------------------- mS延时函数 二、 Timer定时器初始化函数 1、 Init_Timer0---------------定时器初始化子程序 三、 8位共阴数码管显示函数 1、Display-----------显示函数,用于动态扫描数码管 2、Remove_Zero---------------消隐显示数字前边的零 四、 矩阵按键扫描函数 1、KeyScan-------键盘扫描函数,使用行列反转扫描法 2、KeyPro--------------按键值处理函数,返回扫键值 五、 独立按键检测函数 1、KeyCheck---------------------独立按键扫描函数 六、 I2C总线 24C02函数 1、Start_I2c----------------------------启动总线 2、Stop_I2c-----------------------------结束总线 3、SendByte---------------------字节数据传送函数 4、RcvByte----------------------字节数据接收函数 5、Ack_I2c----------------------------应答子函数 6、NoAck_I2c------------------------非应答子函数 7、ISendByte--------向无子地址器件发送字节数据函数 8、ISendStr-------向有子地址器件发送多字节数据函数 9、IRcvByte----------向无子地址器件读字节数据函数 10、IRcvStr-------向有子地址器件读取多字节数据函数 七、 双色点阵8X8 LED 驱动函数 1、Send1Byte-------------------------发送字节程序 2、Send2Byte------------------------发送双字节程序 3、Send1_Byte-----------发送字节程序, 带有方向参数 4、Send2_Byte---------发送双字节程序, 带有方向参数 5、Out595-----------------------------595锁存程序 6、SendSeg-----------------------发送位码字节程序 八、 LCD1602函数 1、LCD_Check_Busy -------------------LCD读忙信号 2、LCD_Write_Com ---------------------写命令指令 3、LCD_Write_Data --------------------写数据指令 4、LCD_Clear ---------------------------清屏函数 5、LCD_Write_String ----------------写一个字符串 6、LCD_Write_Char --------------------写一个字符 7、LCD_Init --------------------------lcd初始化 8、Lcd_User_Chr ------------------用户自定义字符 9、LCD_set_xy -------设置显示地址:X为横轴(0-15),Y为纵轴(0-1) 10、LCD_write_int ---------------写无字符型整形数 九、 18B20温度传感器函数 1、Init_DS18B20 ---------------------18b20初始化 2、ReadOneChar----------------------读取一个字节 3、WriteOneChar --------------------写入一个字节 4、ReadTemperature ---------------------读取温度 十、DS1302 实时时钟驱动函数 1、Ds1302_Write_Byte ----向DS1302写入一字节数据 2、Ds1302_Read_Byte -----从DS1302读出一字节数据 3、Ds1302_Write_Time ------向DS1302写入时钟数据 4、Ds1302_Read_Time -------从DS1302读出时钟数据 5、Ds1302_Init ------------------- DS1302初始化 十一、串口通讯uart函数 1、UART_Init ------------------------串口初始化 2、UartSendByte--- ----------------发送一个字节 3、UartSendStr -------------------发送一个字符串 十二、标准PS2驱动函数 1、PS2_Init --------------------------PS2初始化 2、GetChar--- -----------读取键盘数据 并解码信息 十三、红外解码函数 1、EX0init --------------------外部中断0初始化 2、Ir_work--- -------------------------键值处理 3、Ircordpro -----------------------红外码值处理 十四、IIC协议 PCF8591 AD/DA转换函数 1、ReadADC ------------------------读AD转值程序 2、WriteDAC--- ------------------写入DA转换数值 十五、字库ST7920 12864液晶驱动函数 1、Check_Busy --------------------------检测忙位 2、Write_Cmd -----------------------------写命令 3、Write_Data ----------------------------写数据 4、Init_ST7920 ---------------------液晶屏初始化 5、CGRAM--------------------------用户自定义字符 6、DisplayCGRAM --------------显示用户自定义字符 7、LCD_PutString ---------------------显示字符串 8、ClrScreen -------------------------------清屏 9、LCD_PutGraphic ----------------------显示图片 10、DisplayUpdata ------------------调用显示更新 十六、2.4寸TFT彩屏驱动函数 1、ILI9325_Initial ------------------液晶初始化 2、Write_Cmd_Data -------------------写命令数据 3、Write_Cmd-----------------------------写命令 4、Write_Data --------------------写数据 双8位 5、Write_Data_U16-------------------写16位数据 6、LCD_SetPos -------------------------定位坐标 7、ClearScreen -------------------------清屏函数 8、LCD_PutChar8x16 ------------显示8*16英文字符 9、LCD_PutChar ---------------------显示英文字符 10、PutGB1616 --------------------显示16*16汉字 11、LCD_PutString --------------------显示字符串 12、Show_RGB -----------------------显示RGB颜色 13、show_photo--------------------------显示图片 14、delayms ----------------------------延时函数 15、Put_pixel-------------------------------画点 16、Line----------------------------在屏幕上画线 17、Rectangle-------------------------绘制矩形框 18、Bar-----------------------------绘制平面矩形 19、LCDShow_uCharNumber-------向LCD发送一个0--255的数值 十七、SD卡驱动函数 1、SdWrite ------写一字节到SD卡,模拟SPI总线方式 2、SdRead -------从SD卡读一字节,模拟SPI总线方式 3、SdResponse--------------------检测SD卡的响应 4、SdCommand ----------------------发命令到SD卡 5、SdInit----------------------------初始化SD卡 6、SdWriteBlock ------------往SD卡指定地址写数据 7、SdReadBlock ----------从SD卡指定地址读取数据节
中国象棋的C++代码 #include "chess_zn.h" QTcpSocket * Chess_ZN::client = new QTcpSocket; QUndoStack * Chess_ZN::undoStack = new QUndoStack(); int Chess_ZN::second = 120; bool Chess_ZN::isTurn = false; Chess_ZN::Chess_ZN(QWidget *parent) : QWidget(parent) { init(); initElse(); } void Chess_ZN::initElse(){ treeitem = 1; timer=new QTimer; portmap=0; isConn = true; start = false; isTimer = false; isSearch = false; connect(timer,SIGNAL(timeout()),this,SLOT(stopWatch())); connect(wigettree[1],SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(getInfo(QTreeWidgetItem*))); connect(wigettree[0],SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(connectToHost_PK(QTreeWidgetItem*))); connect(client,SIGNAL(connected()),this,SLOT(connected())); //连接一旦断开 connect(client,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(error(QAbstractSocket::SocketError ))); connect(client,SIGNAL(readyRead()),this,SLOT(readyRead())); peer = new PeerManager(this); peer->setServerPort(10001); items=wigettree[1]->currentItem(); item_pk=wigettree[0]->currentItem(); item_pk_info=wigettree[0]->currentItem(); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[8], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[9], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[10], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[11], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[0], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[1], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[2], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[3], SLOT(setEnabled(bool))); timer->start(1000); createUndoView(); isChoose = true; tableeditor=new TableEditor("users"); } void Chess_ZN::createUndoView() { undoVie

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蔡云辉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值