easyx中的setlinestyle
时间: 2023-10-07 18:04:22 浏览: 93
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);
```
相关问题
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官方文档或者网上其他教程。
用easyx画五子棋棋盘
以下是使用easyx画五子棋棋盘的示例代码:
```C++
#include <graphics.h>
int main()
{
initgraph(640, 480); // 初始化图形界面
setbkcolor(WHITE); // 设置背景颜色为白色
cleardevice(); // 清空屏幕
setlinecolor(BLACK); // 设置线条颜色为黑色
setlinestyle(PS_SOLID, 2); // 设置线条样式为实线,线宽为2像素
// 画棋盘
for (int i = 0; i < 15; i++) {
line(40, 40 + i * 30, 430, 40 + i * 30); // 画横线
line(40 + i * 30, 40, 40 + i * 30, 430); // 画竖线
}
getch(); // 等待用户按键
closegraph(); // 关闭图形界面
return 0;
}
```
这段代码使用了easyx图形库中的函数来绘制五子棋棋盘。首先使用`initgraph`函数初始化图形界面,然后使用`setbkcolor`和`cleardevice`函数设置背景颜色并清空屏幕。接着使用`setlinecolor`和`setlinestyle`函数设置线条颜色和样式,然后使用`line`函数画出棋盘的横线和竖线。最后使用`getch`函数等待用户按键,然后使用`closegraph`函数关闭图形界面。