C语言绘制实习车贴

教育   2024-05-27 22:39   宁夏  

1.前言

道路千万条,安全第一条,行车不规范,亲人两行泪。应粉丝要求,今天继续使用昨天使用的函数,写一个实习车贴。

该实习车贴的绘制很简单,首先绘制一个黄色的填充圆,然后在这个填充圆上绘制两个圆环。使用drawtext函数将实习二字写到填充圆的正中间。最后使用圆圈文字函数,将我们要提示的东西展示出来。

这里简单介绍一下这个输出一圈汉字的函数

void DrawCircle(   TCHAR str,    int variable,   int fors,    int R,    int MYX,    int MYY,    double QSHD,    int size);

   参数

str 

    用于绘制的字符

variable

    用于展示的第几个字符

fors

    总共有几个字符需要展示

R

    展示字符围成圆的半径

MYX

    展示字符圆的x坐标

MYY

    展示字符圆的y坐标

QSHD

    展示字符圆需要调整的起始弧度

size

    展示字符的字体大小

    返回值

无。

2.源码分享

///////////////////////////////////////////////////// 程序名称:绘制实习车贴// 编译环境:Mictosoft Visual Studio 2022, EasyX_20200315(beta)// 公 众 号:C语言研究// 作  者:luoyh <2864292458@qq.com>// 最后修改:2022-5-27//
#include<conio.h>#include<graphics.h>#include<math.h>#define PI acos(-1.0)#define W 800#define H 800void DrawCircle(TCHAR str, int variable, int fors, int R, int MYX, int MYY, double QSHD, int size);
int main(){ initgraph(W,H); setbkcolor(WHITE); cleardevice(); setfillcolor(YELLOW); setbkmode(TRANSPARENT); solidcircle(W / 2, H / 2, 350); setlinestyle(PS_SOLID,5); setlinecolor(RGB(254,0,0)); circle(W / 2, H / 2, 250); settextcolor(RGB(254, 0, 0)); settextstyle(250,0,_T("楷体")); RECT r = { 0, 0, W, H}; drawtext(_T("实习"), &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE); setlinestyle(PS_SOLID, 15); circle(W / 2, H / 2, 350); TCHAR str[25]; for (int i = 0; i < 16; i++) { str[0] = L"车内有娃实习司机出入平安保持车距"[15 - i]; DrawCircle(str[0], i, 16, 370, W / 2, H / 2, 0, 70); } _getch();}void DrawCircle(TCHAR str, int variable, int fors, int R, int MYX, int MYY, double QSHD, int size){ double a, x0, y0, w, h, x1, y1; int x, y; settextstyle(size, 0, L"楷体", variable * 3600 / fors - 900, variable * 3600 / fors - 900, 0, false, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH); a = variable * PI * 2 / fors - QSHD; w = textwidth(str); // 计算字符串宽 w、高 h h = textheight(str); x1 = R * cos(a); // 计算输出字符串的左上角位置 y1 = R * sin(a); x0 = x1 * cos(-a) - y1 * sin(-a); // 将字符串绕原点顺时针旋转 a 弧度 y0 = y1 * cos(-a) + x1 * sin(-a); x0 -= w / 2; // 将字符串向左上偏移 w/2、h/2 y0 += h / 2; // 绘图坐标向下为正 x = (int)(x0 * cos(a) - y0 * sin(a)); // 将字符串绕原点逆时针旋转 a 弧度 y = (int)(y0 * cos(a) + x0 * sin(a)); outtextxy(int(MYX + x + 0.5), int(MYY - y + 0.5), str); // 绘图坐标向下为正}

3.效果展示

C语言研究
写给自己的笔记,时常写写,时常看看,仅此而已。