⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 draw.cpp

📁 一个大学时候做的编译原理的实验.实验内容是正则表达式到NFA到DFA到最小化DFA最终生成词法分析代码的整个过程的演示.那时由于时间关系,词法分析代码自动生成部分还没完成.
💻 CPP
字号:
#include "Globals.h"

void DrawArrow(CDC* pDC,CPoint& start,CPoint& end)//画箭头
{
	int dx,dy,x,y;
	double dq;

	dx=start.x-end.x;
	dy=start.y-end.y;

	dx=dx-dy;
	dy=dx+2*dy;

    dq=sqrt(dx*dx+dy*dy);
	x=int(10*dx/dq);
	y=int(10*dy/dq);

	pDC->MoveTo(end);
	pDC->LineTo(end.x+x,end.y+y);
    pDC->MoveTo(end);
	pDC->LineTo(end.x+y,end.y-x);
}

void DrawArc(CDC* pDC,CPoint& start,CPoint& end,int r,CString str)//画曲线箭头
{
//	pDC->SetBkMode(TRANSPARENT);
    CPoint* pts;
	pts=new CPoint[4];
	pts[0].x=start.x;
	pts[0].y=start.y-r;
	pts[1].x=(3*start.x+end.x)/4;
	pts[1].y=start.y-abs(start.x-end.x)/3;
	pts[2].x=(start.x+3*end.x)/4;
	pts[2].y=start.y-abs(start.x-end.x)/3;
	pts[3].x=end.x;
	pts[3].y=end.y-r;
	pDC->PolyBezier(pts,4);
	DrawArrow(pDC,pts[2],pts[3]);

	int x,y;
	x=(pts[0].x+pts[3].x)/2;
	y=pts[2].y+abs(start.x-end.x)/30;
	pDC->TextOut(x,y,str);

	delete []pts;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -