关于easyx头文件

一、窗口创建

(1)几种创建方式

#include<easyx.h>//easyx的头文件
#include<iostream>
using namespace std;int main()
{//创建一个500*500的窗口//参数为:长度,宽度,是否显示黑框(无参为不显示黑框,有这个参数则显示)initgraph(500, 500);//不显示dox黑屏initgraph(500, 500, EX_SHOWCONSOLE);//显示dox黑屏//生成框没有关闭按钮initgraph(500, 500, EX_NOCLOSE);//生成框没有最小化按钮initgraph(500, 500, EX_NOMINIMIZE);//如果要实现多个特性的显示框,第三个参数用|连接initgraph(500, 500, EX_SHOWCONSOLE | EX_NOCLOSE | EX_NOMINIMIZE);getchar();//用于实现窗口的暂停return 0;
}

(2)窗口颜色调整

int main()
{//创建窗口(有黑框)initgraph(500, 500, EX_SHOWCONSOLE);//设置窗口颜色setbkcolor(WHITE);//清除原窗口颜色,以显示新的白色cleardevice();getchar();
}
	//库中颜色// Color constant
#define	BLACK			0
#define	BLUE			0xAA0000
#define	GREEN			0x00AA00
#define	CYAN			0xAAAA00
#define	RED				0x0000AA
#define	MAGENTA			0xAA00AA
#define	BROWN			0x0055AA
#define	LIGHTGRAY		0xAAAAAA
#define	DARKGRAY		0x555555
#define	LIGHTBLUE		0xFF5555
#define	LIGHTGREEN		0x55FF55
#define	LIGHTCYAN		0xFFFF55
#define	LIGHTRED		0x5555FF
#define	LIGHTMAGENTA	0xFF55FF
#define	YELLOW			0x55FFFF
#define	WHITE			0xFFFFFF
int main()
{//创建窗口(有黑框)initgraph(500, 500, EX_SHOWCONSOLE);//设置窗口颜色//在画图中查找色号可以实现想要颜色的填充,用RGB函数即可setbkcolor(RGB(21, 134, 41));//清除原窗口颜色,以显示新的颜色cleardevice();getchar();
}

        RGB号的找法:在画图软件中找

(3)坐标体系

二、基本图形绘制

 (1)线条

int main()
{//纯白窗口创建initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();//绘制一个点(x,y,颜色)putpixel(200, 100, RED);//绘制一条线(先设置好,再绘制)//设置线条颜色setlinecolor(BLUE);//设置线条样式(样式,粗细)setlinestyle(PS_SOLID, 3);//开始绘制(起点x,起点y,终点x,终点y)line(0, 0, 500, 500);//跟据显示框绘制line(0, 0, getwidth(), getheight());getchar();return 0;
}

        库中线条类型 :

/* Pen Styles */
#define PS_SOLID            0
#define PS_DASH             1       /* -------  */
#define PS_DOT              2       /* .......  */
#define PS_DASHDOT          3       /* _._._._  */
#define PS_DASHDOTDOT       4       /* _.._.._  */
#define PS_NULL             5
#define PS_INSIDEFRAME      6
#define PS_USERSTYLE        7
#define PS_ALTERNATE        8
#define PS_STYLE_MASK       0x0000000F#define PS_ENDCAP_ROUND     0x00000000
#define PS_ENDCAP_SQUARE    0x00000100
#define PS_ENDCAP_FLAT      0x00000200
#define PS_ENDCAP_MASK      0x00000F00#define PS_JOIN_ROUND       0x00000000
#define PS_JOIN_BEVEL       0x00001000
#define PS_JOIN_MITER       0x00002000
#define PS_JOIN_MASK        0x0000F000#define PS_COSMETIC         0x00000000
#define PS_GEOMETRIC        0x00010000
#define PS_TYPE_MASK        0x000F0000#define AD_COUNTERCLOCKWISE 1
#define AD_CLOCKWISE        2

(2)矩形

#include<easyx.h>//easyx的头文件
#include<iostream>
using namespace std;int main()
{//纯白窗口创建initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();//绘制一个矩形边框//先调一下矩形线的颜色setlinecolor(RED);//开始绘制(左上角x,左上角y,右下角x,右下角y)rectangle(100, 0, 100 + 50, 0 + 50);//绘制一个填充颜色的矩形边框setlinecolor(RED);rectangle(210, 0, 210 + 50, 0 + 50);//设置填充的颜色setfillcolor(YELLOW);//把颜色填到矩形中fillrectangle(210, 0, 210 + 50, 0 + 50);//绘制一个无边框但填充颜色的矩形solidrectangle(320, 0, 320 + 50, 0 + 50);//设置填充的颜色setfillcolor(YELLOW);//可以看到,绘制无边框矩形时如果前面定义过填充颜色,会进行自动填充//绘制一个圆角矩形//开始绘制(左上角x,左上角y,右下角x,右下角y,角的椭圆a,角的椭圆b)roundrect(430, 0, 430 + 50, 0 + 50, 10, 10);//给圆角矩形填充颜色fillroundrect(430, 0, 430 + 50, 0 + 50, 10, 10);//给圆角矩形去边框solidroundrect(430, 0, 430 + 50, 0 + 50, 10, 10);getchar();return 0;
}

关于圆角矩形角的椭圆示意图:

(3)圆形

int main()
{//纯白窗口创建initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();setlinecolor(RED);//绘制一个圆(圆心x,圆心y,半径r)circle(100, 100, 50);//填充颜色setfillcolor(YELLOW);fillcircle(100, 100, 50);//去边框solidcircle(100, 100, 50);getchar();return 0;
}

 (4)椭圆

int main()
{//纯白窗口创建initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();setlinecolor(RED);//绘制一个椭圆(参数和矩形一样,只是会变成椭圆)ellipse(100, 0, 200, 50);//当然也可以进行颜色填充和去边操作getchar();return 0;
}

(5)库中更多图形的定义

// Drawing related functionsCOLORREF getpixel(int x, int y);				// Get pixel color
void putpixel(int x, int y, COLORREF color);	// Set pixel colorvoid line(int x1, int y1, int x2, int y2);		// Draw a linevoid rectangle	   (int left, int top, int right, int bottom);	// Draw a rectangle without filling
void fillrectangle (int left, int top, int right, int bottom);	// Draw a filled rectangle with a border
void solidrectangle(int left, int top, int right, int bottom);	// Draw a filled rectangle without a border
void clearrectangle(int left, int top, int right, int bottom);	// Clear a rectangular regionvoid circle		(int x, int y, int radius);		// Draw a circle without filling
void fillcircle (int x, int y, int radius);		// Draw a filled circle with a border
void solidcircle(int x, int y, int radius);		// Draw a filled circle without a border
void clearcircle(int x, int y, int radius);		// Clear a circular regionvoid ellipse	 (int left, int top, int right, int bottom);	// Draw an ellipse without filling
void fillellipse (int left, int top, int right, int bottom);	// Draw a filled ellipse with a border
void solidellipse(int left, int top, int right, int bottom);	// Draw a filled ellipse without a border
void clearellipse(int left, int top, int right, int bottom);	// Clear an elliptical regionvoid roundrect	   (int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight);		// Draw a rounded rectangle without filling
void fillroundrect (int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight);		// Draw a filled rounded rectangle with a border
void solidroundrect(int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight);		// Draw a filled rounded rectangle without a border
void clearroundrect(int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight);		// Clear a rounded rectangular regionvoid arc	 (int left, int top, int right, int bottom, double stangle, double endangle);	// Draw an arc
void pie	 (int left, int top, int right, int bottom, double stangle, double endangle);	// Draw a sector without filling
void fillpie (int left, int top, int right, int bottom, double stangle, double endangle);	// Draw a filled sector with a border
void solidpie(int left, int top, int right, int bottom, double stangle, double endangle);	// Draw a filled sector without a border
void clearpie(int left, int top, int right, int bottom, double stangle, double endangle);	// Clear a rounded rectangular regionvoid polyline	 (const POINT *points, int num);								// Draw multiple consecutive lines
void polygon	 (const POINT *points, int num);								// Draw a polygon without filling
void fillpolygon (const POINT *points, int num);								// Draw a filled polygon with a border
void solidpolygon(const POINT *points, int num);								// Draw a filled polygon without a border
void clearpolygon(const POINT *points, int num);								// Clear a polygon regionvoid polybezier(const POINT *points, int num);									// Draw three square Bezier curves
void floodfill(int x, int y, COLORREF color, int filltype = FLOODFILLBORDER);	// Fill the area

(6)折线的绘制

int main()
{//纯白窗口创建initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();setlinecolor(RED);setlinestyle(PS_SOLID, 3);//POINT的实质的结构体POINT points[] = { {10,10},{50,50},{100,50},{220,350} };polyline(points, 4);getchar();return 0;
}

三、文字操作

(1)基本操作

int main()
{//纯白窗口创建initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();//画个填充颜色的带框矩形setlinecolor(RED);rectangle(100, 100, 300, 200);setfillcolor(YELLOW);fillrectangle(100, 100, 300, 200);//写文字// 注意:凡是easy文字相关函数的调用,字符串一定要写L进行字符集的转化//设置文字大小与类型(宽度,高度(0为自适应),字体)settextstyle(50, 0, L"华文楷体 常规");//设置文字颜色settextcolor(BLUE);//设置背景模式,以防止文字遮盖背景setbkmode(TRANSPARENT);//开写outtextxy(110, 120, L"HELLOW!");getchar();return 0;
}

        文体查找:

 

        三种解决字符集转换的方法:

(2)将int类型的变量输出为屏幕文字

        注意:这个地方使用了第三项来改变字符集

int main()
{//纯白窗口创建initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();//画个填充颜色的带框矩形setlinecolor(RED);rectangle(100, 100, 300, 200);setfillcolor(YELLOW);fillrectangle(100, 100, 300, 200);//写文字// 注意:凡是easy文字相关函数的调用,字符串一定要写L进行字符集的转化//设置文字大小与类型(宽度,高度(0为自适应),字体)settextstyle(50, 0, "华文楷体 常规");//设置文字颜色settextcolor(BLUE);//设置背景模式,以防止文字遮盖背景setbkmode(TRANSPARENT);//开写int score = 66;char str[100] = "";//三个参数(字符串地址,)sprintf_s(str, "score:%d", score);outtextxy(110, 120, str);getchar();return 0;
}

(3)文字在矩形居中显示

int main()
{//纯白窗口创建initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();//变量定义int rx = 100;int ry = 100;int rw = 200;int rh = 100;//画个填充颜色的带框矩形setlinecolor(RED);rectangle(rx, ry, rx + rw, ry + rh);setfillcolor(YELLOW);fillrectangle(rx, ry, rx + rw, ry + rh);//textwidth=tw   textheight=thsettextstyle(30, 0, "华文楷体 常规");int hspace = (rw - textwidth("HELLOW!")) / 2;int vspace = (rh - textheight("HELLOW!")) / 2;settextcolor(BLUE);setbkmode(TRANSPARENT);outtextxy(rx + hspace, ry + vspace, "HELLOW!");getchar();return 0;
}

四、关于消息

(1)基本使用

        定义消息结构体,peekmessage是获取消息,返回一个bool值,如果获取到了就是真,它有三个参数,第一个是消息的地址,第二个是获取的目标,第二第三都有默认值,图中的EX_MOUSE是鼠标的意思,msg结构体有message成员存放消息信息,如果这个信息是鼠标左键被按下(WM_LBUTTONDOWN)就打印按下了鼠标左键

int main()
{//创建窗口initgraph(500, 500, EX_SHOWCONSOLE);//定义消息结构体变量ExMessage msg = { 0 };//套入死循环,便于多次检测消息while (1){//获取消息(消息地址,控制目标(这里是鼠标))if (peekmessage(&msg, EX_MOUSE)){//(msg.message可以访问消息类型)switch (msg.message){case WM_LBUTTONDOWN: // 左键按下printf("左键按下 \n");break;case WM_RBUTTONDOWN: // 右键按下printf("右键按下 \n");break;case WM_MBUTTONDOWN: // 中键按下printf("中键按下 \n");break;case WM_MOUSEWHEEL: // 滚轮滚动printf("滚轮滚动 \n");break;case WM_LBUTTONDBLCLK: // 左键双击printf("左键双击 \n");break;}}}return 0;
}

        库中的控制目标:

         库中的消息类型(可以在帮助文档中查找):

         打印点击位置和滚轮方向(+120是前,-120是后)

int main()
{//创建窗口initgraph(500, 500, EX_SHOWCONSOLE);//定义消息结构体变量ExMessage msg = { 0 };//套入死循环,便于多次检测消息while (1){//获取消息(消息地址,控制目标(这里是鼠标))if (peekmessage(&msg, EX_MOUSE)){//(msg.message可以访问消息类型)switch (msg.message){case WM_LBUTTONDOWN: // 左键按下printf("左键按下 pos(%d,%d)\n", msg.x, msg.y);break;case WM_RBUTTONDOWN: // 右键按下printf("右键按下 pos(%d,%d)\n", msg.x, msg.y);break;case WM_MBUTTONDOWN: // 中键按下printf("中键按下 pos(%d,%d)\n", msg.x, msg.y);break;case WM_MOUSEWHEEL: // 滚轮滚动printf("滚轮滚动 dir(%d)\n", msg.wheel);break;case WM_LBUTTONDBLCLK: // 左键双击printf("左键双击pos(%d,%d)\n", msg.x, msg.y);break;}}}return 0;
}

        结合键盘

int main()
{//创建窗口initgraph(500, 500, EX_SHOWCONSOLE);//定义消息结构体变量ExMessage msg = { 0 };//套入死循环,便于多次检测消息while (1){//获取消息(这次获取的是键盘消息)if (peekmessage(&msg, EX_KEY)){//按键按下if (msg.message == WM_KEYDOWN){printf("按键按下\n");}//按键抬起if (msg.message == WM_KEYUP){printf("按键抬起\n");}}}return 0;
}

         检测具体按下了哪个键

int main()
{//创建窗口initgraph(500, 500, EX_SHOWCONSOLE);//定义消息结构体变量ExMessage msg = { 0 };//套入死循环,便于多次检测消息while (1){//获取消息(这次获取的是键盘消息)if (peekmessage(&msg, EX_KEY)){//按键按下if (msg.message == WM_KEYDOWN){printf("按键按下\n");//具体是哪个键按下switch (msg.vkcode){case VK_UP:printf("上键按下\n");break;case VK_DOWN:printf("下键按下\n");break;case VK_LEFT:printf("左键按下\n");break;case VK_RIGHT:printf("右键按下\n");break;//用大写字符代表键盘上的具体某个键case 'A':printf("AAA\n");break;case 'C':printf("CCC\n");break;}}//按键抬起if (msg.message == WM_KEYUP){printf("按键抬起\n");}}}return 0;
}

(2)画个移动圆形

#include<easyx.h>//easyx的头文件
#include<windows.h>
#include<iostream>
using namespace std;int main()
{//创建窗口initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();//圆形属性int x = 50;int y = 50;int r = 30;int speed = 3;int vx = 0;int vy = 0;//开启双缓冲避免闪屏(一般是开始绘图时就要开启)BeginBatchDraw();//定义消息结构体变量ExMessage msg = { 0 };//套入死循环,便于多次检测消息while (1){//清除上一帧的内容cleardevice();//获取消息(这次获取的是键盘消息)if (peekmessage(&msg, EX_KEY)){//按键按下if (msg.message == WM_KEYDOWN){switch (msg.vkcode){case VK_UP:vy = -1;break;case VK_DOWN:vy = 1;break;case VK_LEFT:vx = -1;break;case VK_RIGHT:vx = 1;break;}}else if (msg.message == WM_KEYUP){switch (msg.vkcode){case VK_UP:vy = 0;break;case VK_DOWN:vy = 0;break;case VK_LEFT:vx = 0;break;case VK_RIGHT:vx = 0;break;}}}//更新小球位置x += speed * vx;y += speed * vy;//绘制小球setlinecolor(RED);circle(x, y, r);setfillcolor(BLUE);fillcircle(x, y, 30);//加载双缓冲FlushBatchDraw();//这个为了控制帧率,不写会导致小球直接飞掉Sleep(10);}//结束双缓冲EndBatchDraw();return 0;
}

(3)按钮制作

五、帧率控制

(1)这个的问题是出现闪屏,没有控制数字改变的速度

int main()
{initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();setbkmode(TRANSPARENT);int score = 0;char str[50] = "";while (1){sprintf_s(str, "Score:%d", score++);settextcolor(BLACK);//用于刷新分数,防止分数重叠cleardevice();outtextxy(20, 20, str);getchar();}return 0;
}

(2)加入双缓冲防止闪屏

        1.这是第一种,局部使用

int main()
{initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();setbkmode(TRANSPARENT);int score = 0;char str[50] = "";while (1){sprintf_s(str, "Score:%d", score++);settextcolor(BLACK);BeginBatchDraw();cleardevice();outtextxy(20, 20, str);EndBatchDraw();getchar();}return 0;
}

        2.这是第二种,全局使用

int main()
{initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();setbkmode(TRANSPARENT);BeginBatchDraw();int score = 0;char str[50] = "";while (1){sprintf_s(str, "Score:%d", score++);settextcolor(BLACK);cleardevice();outtextxy(20, 20, str);//这个写在绘制后FlushBatchDraw();getchar();}EndBatchDraw();return 0;
}

(3)加入帧率控制部分

int main()
{initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();setbkmode(TRANSPARENT);//60FPS定义//clock_t就是longconst clock_t FPS = 1000 / 60;//1s/60帧 每一帧应该花费的时间int starttime = 0;//用于保存一次开始时的时间int freamtime = 0;//用于进行一次循环的时间BeginBatchDraw();int score = 0;char str[50] = "";while (1){//clock返回的时程序进行到现在的时间starttime = clock();sprintf_s(str, "Score:%d", score++);settextcolor(BLACK);cleardevice();outtextxy(20, 20, str);FlushBatchDraw();freamtime = clock() - starttime;if (freamtime > 0){//暂停使单次时间达到60FPSSleep(FPS - freamtime);}getchar();}EndBatchDraw();return 0;
}

六、图片相关

(1)首先要有把图片保存到工程相关的地方

(2)基本操作

int main()
{//这里的窗口大小和图片属性的大小相同initgraph(2512, 1373, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();//定义图片变量IMAGE img;//加载图片(1.绝对路径 2.相对路径)//1. loadimage(&img, "D:\\代码\\界面库学习\\kon.jpg");//2. loadimage(&img,"界面库学习/kon.jpg");相对路径和main.cpp在同一个文件夹里面//分隔符要么是\\,要么是///一般推荐第二种,便于代码移植loadimage(&img, "D:\\代码\\界面库学习\\界面库学习\\kon.png");//输出图片//前两个参数是图片左上角的坐标putimage(0, 0, &img);getchar();return 0;
}

 (2)原图和掩码图

        上面的例子有一个明显的缺点,图片的张贴会覆盖背景

int main()
{initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();//定义图片变量IMAGE img;loadimage(&img, "D:\\代码\\界面库学习\\界面库学习\\ghost-down.jpg");//输出图片putimage(100, 100, &img);getchar();return 0;
}

        把原图和它的掩码图同时加载,就可以避免背景覆盖问题

#include<easyx.h>//easyx的头文件
#include<windows.h>
#include<iostream>
#include<time.h>
using namespace std;int main()
{initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();BeginBatchDraw();//定义图片变量IMAGE img;IMAGE img_mask;loadimage(&img_mask, "D:\\代码\\界面库学习\\界面库学习\\ghost-mask.jpg");loadimage(&img, "D:\\代码\\界面库学习\\界面库学习\\ghost-down.jpg");//输出图片(先张贴掩码图,在张贴原图)putimage(100, 100, &img_mask, NOTSRCERASE);putimage(100, 100, &img, SRCINVERT);FlushBatchDraw();getchar();EndBatchDraw();return 0;
}

(4)动态过程

#include<easyx.h>//easyx的头文件
#include<windows.h>
#include<iostream>
#include<time.h>
using namespace std;int main()
{initgraph(500, 500, EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice();int FPS = 1000 / 60;int starttime = 0;int freamtime = 0;BeginBatchDraw();//定义图片变量IMAGE img1;IMAGE img2;IMAGE img3;loadimage(&img1, "D:\\代码\\界面库学习\\界面库学习\\ghost1-down.jpg");loadimage(&img2, "D:\\代码\\界面库学习\\界面库学习\\ghost2-down.jpg");loadimage(&img3, "D:\\代码\\界面库学习\\界面库学习\\ghost3-down.jpg");IMAGE image[3] = { img1,img2,img3 };while (1){for (int i = 0; i < 3; i++){//先清空屏幕,再贴图cleardevice();putimage(100, 100, image + i);starttime = clock();FlushBatchDraw();freamtime = clock() - starttime;if (freamtime > 0){Sleep(FPS - freamtime);}FlushBatchDraw();getchar();}}EndBatchDraw();return 0;
}

(5)精灵表动画

七、音乐播放

(1)基本操作

#include<easyx.h>
//下面这三串代码是播放音乐必要的
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
//
#include<iostream>
using namespace std;int main()
{//先open再play,只播放一次mciSendString("open D:\\代码\\界面库学习\\界面库学习\\Start.mp3", NULL, 0, NULL);mciSendString("play D:\\代码\\界面库学习\\界面库学习\\Start.mp3", NULL, 0, NULL);getchar();return 0;
}

(2)简便写法与调整音量大小

#include<easyx.h>
//下面这三串代码是播放音乐必要的
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
//
#include<iostream>
using namespace std;int main()
{//先open再play,只播放一次//简便写法mciSendString("open D:\\代码\\界面库学习\\界面库学习\\Start.mp3 alias bgm", NULL, 0, NULL);mciSendString("play bgm", NULL, 0, NULL);//调整音量大小mciSendString("setaudio bgm volume to 50", NULL, 0, NULL);getchar();return 0;
}

(3)播放错误检查

#include<easyx.h>
//下面这三串代码是播放音乐必要的
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
//
#include<iostream>
using namespace std;int main()
{//先open再play,只播放一次//简便写法mciSendString("open D:\\代码\\界面库学习\\界面库学习\\Start.mp3 alias bgm", NULL, 0, NULL);mciSendString("play bgm", NULL, 0, NULL);//调整音量大小MCIERROR ret = mciSendString("setaudio bgm volume to 50", NULL, 0, NULL);//通过返回值确认是否播放成功if (ret != 0){//获取错误信息char err[100] = { 0 };mciGetErrorString(ret, err, sizeof(err));}getchar();return 0;
}

(5)函数封装

        可以尝试写一个参数只有路径字符串的播放音乐的函数

        这个是示例

(6)用于播放音效的函数

         这个函数只能播放.wav格式的音乐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习记录】Django Channels + WebSocket 异步推流开发常用命令汇总

文章目录 &#x1f4cc; 摘要&#x1f9f0; 虚拟环境管理✅ 创建虚拟环境✅ 删除虚拟环境✅ 激活/切换虚拟环境 &#x1f6e0;️ Django 项目管理✅ 查看 Django 版本✅ 创建 Django 项目✅ 创建 Django App &#x1f4ac; Channels 常用操作✅ 查看 Channels 版本 &#x1f50…

Java线程状态及其流转

在Java编程中&#xff0c;线程是一种重要的并发实体。为了更好地理解和管理多线程应用程序&#xff0c;我们需要清楚线程的不同状态及其流转机制。本文将详细介绍Java中线程的几种主要状态以及它们之间的转换关系。 一、线程状态概述 Java线程的生命周期有多个状态&#xff0…

LabVIEW双光子显微镜开发

基于LabVIEW 开发高性能双光子显微镜系统&#xff0c;聚焦于生物样本深层成像与纳米材料三维表征。实现了超快激光控制、多维数据采集与实时图像重建。系统采用飞秒激光光源与高精度振镜扫描模块&#xff0c;结合 LabVIEW 的 FPGA 实时控制能力&#xff0c;可对活体组织、荧光纳…

数据库操作-MySQL-4(JDBC编程)

JDBC&#xff1a;通过Java代码操作mysql数据库&#xff0c;数据库会提供一些API供我们调用 MySQL、Oracle、等API有差异&#xff0c;但是Java统一了所有接口&#xff0c;即JDBC&#xff1b; 原始api-驱动包&#xff08;类似转接头&#xff09;-统一的api-Java 驱动包&#xff1…

windows修改跃点数调整网络优先级

Windows有两个网卡&#xff0c;一个有线网卡&#xff0c;一个无线网卡&#xff0c;通过修改跃点数来调整优先使用的网卡&#xff0c;这种只是众多设置方式中的其中一种设置方式 文档编写时间&#xff1a;2025年6月 1.打开电脑的网络连接 cmd--ncpa.cpl 在cmd中运行ncpa.cpl可…

实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题。主要涉及线性回归、回归的显著性、回归系数的置信区间。 vial <- seq(1, 10, 1) Viscosity <- c(160,171,175,182,184,181,188,19…

【深入 LangChain 的 Model I/O】提示设计、模型调用与输出解析全解析

目录 什么是 Model I/O&#xff1f; 一、提示模板&#xff08;PromptTemplate&#xff09; 1.1 什么是提示模板&#xff1f; 1.2 常见提示模板类型 二、模型调用&#xff08;Model Predict&#xff09; 三、输出解析&#xff08;Output Parser&#xff09; 综合示例&…

OD 算法题 B卷【跳格子2】

文章目录 跳格子2 跳格子2 小明和朋友玩跳格子游戏&#xff0c;有n个连续格子组成的圆圈&#xff0c;每个格子有不同的分数&#xff0c;小朋友可以选择从任意格子起跳&#xff0c;但是不能跳连续的格子&#xff0c;不能回头跳&#xff0c;也不能超过一圈&#xff0c;给定一个代…

客户线索商机怎么管?客户线索商机管理工具哪个好?

做销售、搞运营的朋友肯定都有过这种烦恼&#xff1a;每天收到海量客户线索&#xff0c;却不知道从哪条开始跟进&#xff1b;试了好几个管理工具&#xff0c;要么功能太复杂&#xff0c;要么用起来不趁手。其实选对客户线索商机管理工具&#xff0c;就像找到靠谱的 “销售小助手…

008房屋租赁系统技术揭秘:构建智能租赁服务生态

房屋租赁系统技术揭秘&#xff1a;构建智能租赁服务生态 在房地产租赁市场日益活跃的当下&#xff0c;房屋租赁系统成为连接房东与租客的重要数字化桥梁。该系统集成用户管理、房屋信息等多个核心模块&#xff0c;面向管理员、房东和用户三类角色&#xff0c;通过前台展示与后…

SpringBoot 系列之集成 RabbitMQ 实现高效流量控制

系列博客专栏&#xff1a; JVM系列博客专栏SpringBoot系列博客 Spring Boot 2.2.1 集成 RabbitMQ 实现高效流量控制 在分布式系统中&#xff0c;消息队列是实现异步通信、解耦服务的重要组件。RabbitMQ 作为一款成熟的开源消息队列&#xff0c;广泛应用于各类项目中。本文将…

新视讯影视官网入口,影视动漫在线播放网站

新视讯影视是一个免费为广大追剧迷提供在线播放服务的影视平台&#xff0c;深受众多影视爱好者的喜爱。它涵盖了大量免费的VIP电视剧资源、最新上映的大片、好看的综艺节目以及动漫视频&#xff0c;是一个播放速度快、资源多的免费影视网站。用户无需注册或登录&#xff0c;即可…

【使用】【经验】docker 清理未使用的镜像的命令

docker images prune在 Docker 中清理未使用的镜像&#xff08;包括悬空镜像和完全未被引用的镜像&#xff09;&#xff0c;可以使用以下命令&#xff1a; 1. ​删除所有悬空镜像​&#xff08;推荐常用&#xff09; docker image prune​悬空镜像 (dangling images)​​ 是指…

OpenCV CUDA模块图像处理------图像融合函数blendLinear()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数执行 线性融合&#xff08;加权平均&#xff09; 两个图像 img1 和 img2&#xff0c;使用对应的权重图 weights1 和 weights2。 融合公式…

【Typst】6.布局函数

概述 上节我们介绍了文档结构元素的函数&#xff0c;本节介绍一些控制布局使用的函数&#xff0c;掌握他们之后你可以更进一步的控制页面元素的布局。 系列目录 1.Typst概述2.Typst标记语法和基础样式3.Typst脚本语法4.导入、包含和读取5.文档结构元素与函数6.布局函数 对齐…

【音视频】FFmpeg 编码H265

一、概述 实现了读入本地yuv文件&#xff0c;通过libx265编码为H265格式&#xff0c;并存储到本地文件中 二、实现流程 准备文件 在build路径下准备yuv文件 在项目中添加文件参数&#xff0c;输出为h265文件&#xff0c;使用libx265编码 初始化解码器 通过传进来的libx265…

ECreator低代码平台-文件管理器的使用说明

Ecreator是中山华拓信息技术公司旗下的一款低代码平台&#xff0c;主要功能包含&#xff1a;文件管理器&#xff0c;表单数据管理器&#xff0c;仪表盘设计界面&#xff0c;内容页面自定义等功能&#xff0c;可以用于快速低成本的构建网站和企业内部应用。 下面介绍一下文件管…

高考加油!UI界面生成器!

这个高考助力标语生成器具有以下特点&#xff1a; 视觉设计&#xff1a;采用了蓝色为主色调&#xff0c;搭配渐变背景和圆形装饰元素&#xff0c;营造出宁静而充满希望的氛围&#xff0c;非常适合高考主题。 标语生成&#xff1a;内置了超过 100 条精心挑选的高考加油标语&a…

阿姆达尔定律的演进:古斯塔夫森定律

前言 在上一篇文章《使用阿姆达尔定律来提升效率》中提到的阿姆达尔定律前提是假设问题的规模保持不变&#xff0c;并且给定一台速度更快的机器&#xff0c;目标是更快地解决问题。然而&#xff0c;在大多数情况下&#xff0c;这并不完全正确。当有一台更快的机器时&#xff0…

【RabbitMQ】- Channel和Delivery Tag机制

在 RabbitMQ 的消费者代码中&#xff0c;Channel 和 tag 参数的存在是为了实现消息确认机制&#xff08;Acknowledgment&#xff09;和精细化的消息控制。 Channel 参数 作用 Channel 是 AMQP 协议的核心操作接口&#xff0c;通过它可以直接与 RabbitMQ 交互&#xff1a; 手…