初始代码
#include"XSF.h"
using namespace XSF;
bool running = true;
int main() {
XSF_Window window;
XSF_Window_Init();
XSF_Window_Create(800, 600, L"窗口", window);
XSF_Event event;
XSF_Event_Init(window);
while (running) {
while(XSF_PollEvent(event)) {
switch (event.type) {
case XSF_EVENT_CLOSE:
running = false;
break;
}
}
}
XSF_Window_Close(window);
return 0;
}
任务:实现一个拖拽圆形到指定区域胜利
1.双缓冲相关函数
XSF_DoubleBufferBegin(window);//双缓冲开启
XSF_DoubleBufferFlip(window);//双缓冲画面更新
2.绘制圆形相关函数
XSF_DrawCircle(300, 300, 25, window);//直径五十的空心圆绘制在xy300~350
XSF_DrawSolidCircle(50, 50, 25, window);//实心圆
3.绘制文字相关函数
XSF_DrawText(L"win", 390, 300, window);//x390,y(基线)300
4.鼠标键盘事件
case XSF_EVENT_KEY_DOWN:
switch (event.key) {
case XSF_KEY_ESC:
running = false;
break;
case XSF_KEY_ENTER:
if (win) {
running = false;
}
break;
default:
break;
}
break;//键盘
case XSF_EVENT_MOUSE_DOWN:
if (event.mouse == XSF_MOUSE_LEFT) {
mis = 1;
}
break;
case XSF_EVENT_MOUSE_UP:
if (event.mouse == XSF_MOUSE_LEFT) {
mis = 0;
}
break;
case XSF_EVENT_MOUSE_MOVE:
if (mis&&!win) {
XSF_ClearDraw(window);
XSF_DrawCircle(300, 300, 25, window);
XSF_DrawSolidCircle(event.mousex - 25, event.mousey - 25, 25, window);//绘制鼠标位置的圆
if (event.mousex - 25 >= 300 && event.mousey - 25 >= 300 && event.mousex + 25 <= 350 && event.mousey + 25 >= 350) {
win = 1;
XSF_ClearDraw(window);
XSF_DrawText(L"win", 390, 300, window);
XSF_DrawText(L"按Enter键继续", 350, 320, window);
}//鼠标位置在中心所以要加减
}
break;//鼠标
最终代码
#include"XSF.h"
using namespace XSF;
bool running = true;
bool win = 0;
bool mis = 0;
int main() {
XSF_Window window;
XSF_Window_Init();
XSF_Window_Create(800, 600, L"窗口", window);
XSF_Event event;
XSF_Event_Init(window);
XSF_DoubleBufferBegin(window);//双缓冲开启
XSF_DrawCircle(300, 300, 25, window);//直径五十的空心圆绘制在xy300~350
XSF_DrawSolidCircle(50, 50, 25, window);//实心圆
XSF_DoubleBufferFlip(window);//双缓冲画面更新
while (running) {
while (XSF_PollEvent(event)) {
switch (event.type) {
case XSF_EVENT_CLOSE:
running = false;
break;
case XSF_EVENT_KEY_DOWN:
switch (event.key) {
case XSF_KEY_ESC:
running = false;
break;
case XSF_KEY_ENTER:
if (win) {
running = false;
}
break;
default:
break;
}
break;//键盘
case XSF_EVENT_MOUSE_DOWN:
if (event.mouse == XSF_MOUSE_LEFT) {
mis = 1;
}
break;
case XSF_EVENT_MOUSE_UP:
if (event.mouse == XSF_MOUSE_LEFT) {
mis = 0;
}
break;
case XSF_EVENT_MOUSE_MOVE:
if (mis&&!win) {
XSF_ClearDraw(window);
XSF_DrawCircle(300, 300, 25, window);
XSF_DrawSolidCircle(event.mousex - 25, event.mousey - 25, 25, window);//绘制鼠标位置的圆
if (event.mousex - 25 >= 300 && event.mousey - 25 >= 300 && event.mousex + 25 <= 350 && event.mousey + 25 >= 350) {
win = 1;
XSF_ClearDraw(window);
XSF_DrawText(L"win", 390, 300, window);
XSF_DrawText(L"按Enter键继续", 350, 320, window);
}//鼠标位置在中心所以要加减
}
break;//鼠标
}
XSF_DoubleBufferFlip(window);
}
}
XSF_Window_Close(window);
return 0;
}
视频教程
XSF自制库教程2_哔哩哔哩_bilibili