easyx中的setlinestyle
时间: 2023-10-07 21:04:22 浏览: 330
setlinestyle 是 EasyX 中的一个函数,用于设置画线时的线型(实线、虚线等)。
其函数原型为:
```c++
void setlinestyle(int linestyle, int thickness = 1, const char* style = NULL);
```
其中,linestyle 表示线型,可以取以下值:
- PS_SOLID:实线
- PS_DASH:破折线
- PS_DOT:点线
- PS_DASHDOT:点划线
- PS_DASHDOTDOT:双点划线
thickness 表示线宽,style 表示线型的自定义字符串,如果 linestyle 取值为 PS_USERSTYLE,则需要指定 style 字符串。
例如,设置实线可以使用以下代码:
```c++
setlinestyle(PS_SOLID);
```
设置破折线可以使用以下代码:
```c++
setlinestyle(PS_DASH);
```
如果要设置自定义的线型,可以使用以下代码:
```c++
DWORD dash[2] = {10, 5}; // 10 个像素实线,5 个像素空白
setlinestyle(PS_USERSTYLE, 2, (char*)dash);
```
以上代码表示设置为自定义的线型,线宽为 2,线型为 10 个像素实线和 5 个像素空白,重复此线型绘制。
在绘制完线之后,可以使用以下代码恢复默认的线型:
```c++
setlinestyle(PS_SOLID);
```
相关问题
#include<easyx.h>中函数有什么
在 EasyX 库中,常见的函数有:
1. 初始化函数:initgraph、initwindow、initgraph3D;
2. 绘图函数:line、rectangle、circle、ellipse、arc、pieslice、polygon、fillrectangle、fillcircle、fillellipse、floodfill、putpixel、getpixel、moveto、lineto、polyline、setcolor、setfillcolor、setbkcolor、setbkmode、setlinestyle、settextcolor、settextstyle;
3. 输入输出函数:outtext、outtextxy、outtextrect、inputbox;
4. 鼠标函数:ismouseclick、getmouseclick、getmousex、getmousey、clearmouseclick;
5. 键盘函数:kbhit、getch、getche;
6. 时间函数:delay、Sleep;
7. 图像函数:loadimage、getimage、putimage、getwidth、getheight、free;
8. 其他函数:randomize、random、GetTickCount、MessageBox、PlaySound、ShellExecute。
以上仅列举了常见的函数,实际上 EasyX 库中还有很多其他的函数,可以根据具体需求进行查阅。
easyx实现二叉树遍历
下面是使用easyx图形库实现二叉树的遍历的示例代码:
```cpp
#include <graphics.h>
#include <conio.h>
#include <iostream>
#include <queue>
using namespace std;
const int WIDTH = 800; // 窗口宽度
const int HEIGHT = 600; // 窗口高度
const int RADIUS = 25; // 节点半径
const int DISTANCE_X = 50; // 节点之间的水平距离
const int DISTANCE_Y = 70; // 节点之间的垂直距离
// 二叉树节点结构体
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 画节点
void drawNode(int x, int y, int val) {
setlinecolor(BLACK);
setfillcolor(LIGHTGRAY);
fillellipse(x, y, RADIUS, RADIUS);
setbkmode(TRANSPARENT);
settextstyle(20, 0, _T("Arial"));
settextcolor(BLACK);
TCHAR str[10];
_stprintf_s(str, _T("%d"), val);
outtextxy(x - 10, y - 10, str);
}
// 画边
void drawEdge(int x1, int y1, int x2, int y2) {
setlinecolor(BLACK);
setlinestyle(PS_SOLID, 2);
line(x1, y1 + RADIUS, x2, y2 - RADIUS);
}
// 递归先序遍历
void preOrder(TreeNode* root) {
if (root == NULL) {
return;
}
drawNode(root->val, root->val * DISTANCE_Y, root->val);
if (root->left) {
drawEdge(root->val, root->val * DISTANCE_Y, root->left->val, root->left->val * DISTANCE_Y);
}
if (root->right) {
drawEdge(root->val, root->val * DISTANCE_Y, root->right->val, root->right->val * DISTANCE_Y);
}
preOrder(root->left);
preOrder(root->right);
}
// 递归中序遍历
void inOrder(TreeNode* root) {
if (root == NULL) {
return;
}
inOrder(root->left);
drawNode(root->val, root->val * DISTANCE_Y, root->val);
if (root->left) {
drawEdge(root->val, root->val * DISTANCE_Y, root->left->val, root->left->val * DISTANCE_Y);
}
if (root->right) {
drawEdge(root->val, root->val * DISTANCE_Y, root->right->val, root->right->val * DISTANCE_Y);
}
inOrder(root->right);
}
// 递归后序遍历
void postOrder(TreeNode* root) {
if (root == NULL) {
return;
}
postOrder(root->left);
postOrder(root->right);
drawNode(root->val, root->val * DISTANCE_Y, root->val);
if (root->left) {
drawEdge(root->val, root->val * DISTANCE_Y, root->left->val, root->left->val * DISTANCE_Y);
}
if (root->right) {
drawEdge(root->val, root->val * DISTANCE_Y, root->right->val, root->right->val * DISTANCE_Y);
}
}
// 层序遍历
void levelOrder(TreeNode* root) {
if (root == NULL) {
return;
}
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* node = q.front();
q.pop();
drawNode(node->val, node->val * DISTANCE_Y, node->val);
if (node->left) {
drawEdge(node->val, node->val * DISTANCE_Y, node->left->val, node->left->val * DISTANCE_Y);
q.push(node->left);
}
if (node->right) {
drawEdge(node->val, node->val * DISTANCE_Y, node->right->val, node->right->val * DISTANCE_Y);
q.push(node->right);
}
}
}
int main() {
initgraph(WIDTH, HEIGHT); // 初始化图形窗口
setbkcolor(WHITE); // 设置背景颜色
cleardevice(); // 清屏
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
root->right->left = new TreeNode(6);
root->right->right = new TreeNode(7);
//preOrder(root);
//inOrder(root);
//postOrder(root);
levelOrder(root);
getch(); // 暂停窗口
closegraph(); // 关闭图形窗口
return 0;
}
```
在Visual Studio中,需要配置easyx头文件和库文件路径,否则编译会出错。具体方法可以参考easyx官方文档或者网上其他教程。
阅读全文