栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

easyX 绘制坐标系

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

easyX 绘制坐标系

.h

#pragma once
#include

class Graph {
public:
	//颜色
	static unsigned long int COLOR_BLUE;//蓝色
	static unsigned long int COLOR_BLACK;//黑色
	static unsigned long int COLOR_RED;//红色
	static unsigned long int COLOR_GREEN;//绿色


	Graph(int windowWidth, int windowHigh); //创建一个画图窗口
	void drawCoordinateAxis(int xLimit, int yLimit, int xStep, int yStep); //画坐标轴
	
 
	void drawPoint(int x, int y, int yLimit); //画点
	void setPointColor(unsigned long int color); //设置点颜色


private:
	int windowHigh, windowWidth, windowPadding;//窗口高、宽、边界厚度 
	int lineWidth;//线宽
	unsigned long int lineColor, textColor, pointColor;//线、文本、点颜色
	int xScale, yScale;//比例尺
	double baseLengthX, baseLengthY;//两个坐标轴刻度的图上距离
};

.cpp

#include "MMW_ConfigureDlg.h"
#include
#include
#include "stdio.h"

unsigned long int Graph::COLOR_BLUE = BLUE;
unsigned long int Graph::COLOR_BLACK = BLACK;
unsigned long int Graph::COLOR_RED = RED;
unsigned long int Graph::COLOR_GREEN = GREEN;

Graph::Graph(int windowWidth, int windowHigh) {
	this->windowWidth = windowWidth;
	this->windowHigh = windowHigh;
	windowPadding = 50;

	//直线默认属性
	lineColor = BLACK;
	textColor = BLACK;
	lineWidth = 2;

	initgraph(windowWidth, windowHigh); // 初始化窗口
	setbkcolor(WHITE);
	cleardevice();
}


void Graph::drawCoordinateAxis(int xLimit, int yLimit, int xStep, int yStep) {
	xScale = (windowWidth - 2 * windowPadding) / xLimit; //比例尺
	yScale = (windowHigh - 2 * windowPadding) / yLimit;

	baseLengthX = (windowWidth - 2 * windowPadding) / (xLimit / xStep);//图上两个刻度间距
	baseLengthY = (windowHigh - 2 * windowPadding) / (yLimit / yStep);

	setlinecolor(lineColor);
	setlinestyle(PS_SOLID | PS_JOIN_BEVEL, lineWidth);
	settextcolor(BLACK);

	line(windowPadding, windowHigh - windowPadding, 
		 windowPadding + xLimit / xStep * baseLengthX, windowHigh - windowPadding);//横轴
	line(windowPadding + xLimit / xStep * baseLengthX / 2, windowHigh - windowPadding,
		windowPadding + xLimit / xStep * baseLengthX / 2,
		windowHigh - (windowPadding + yLimit / yStep * baseLengthY));//竖轴
		//windowPadding);
	
#if(1)
	
	for (int i = 0; i <= xLimit; i += xStep) {
		TCHAR c[20];
		_stprintf_s(c, _T("%d"), i-xLimit/2);
		outtextxy(windowPadding + i * xScale, windowHigh - (windowPadding - 10), c);
	}

	
	for (int i = yStep; i <= yLimit; i += yStep) {
		TCHAR c[20];
		_stprintf_s(c, _T("%d"), i);
		outtextxy(windowPadding + xLimit / xStep * baseLengthX / 2 + 5, 
				  windowHigh - (windowPadding + i * yScale), c);
	}
#endif
}

void Graph::drawPoint(int x, int y, int yLimit)
{
	setfillcolor(pointColor);
	fillcircle(windowPadding + x * xScale + yLimit * xScale / 2, 
			   windowHigh - (windowPadding + y * yScale), 3);
}

void Graph::setPointColor(unsigned long int color)
{
	pointColor = color;
	setfillcolor(color);
	setlinecolor(color);
}

main.cpp

//#include
#include "MMW_ConfigureDlg.h"
//#include 
//#include "stdlib.h"
//#include "process.h"
#include "conio.h"

void test01() {
	Graph graph = Graph(800, 640);
	graph.drawCoordinateAxis(20, 20, 2, 1);//结合窗口合理设置(´-﹏-`;)
	graph.setPointColor(Graph::COLOR_RED);//设置点颜色

	for (int i = 0; i < 4; i++) {
		graph.drawPoint(i, i,20);
		Sleep(200);
	}
}

int main(){
	test01();
	
	_getch();
	//Sleep(3000);
	//system("pause");
	//std::cin.get();
	//getchar();
	return 0;
}

运行效果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/630380.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号