代码绘制五角形

这里为简化计算, 形状并不规则

设置五角星五个点分别为
top
left
right
bottom_left
bottom_right

假设 left -> right 长度为length
left -> top 横坐标差为 length/2 坐标表差为 length / 2
到底部长度也为 length

1. turtle 绘制

python 代码 使用 turtle 绘制 (turtle的坐标系原点在窗口中心,
x轴正方向向右 y轴正方向向上)

import turtle
import math

turtle.color('red')

def get_points(x, y, length):

    return ((x, y), (x + length, y), (x, y - length), (x + length / 2, y + length / 2), (x + length, y - length))

def main():

    for p in get_points(0, 0, 100):
        turtle.goto(p[0], p[1])

    turtle.goto(0, 0)

main()

turtle.done()

可以绘制出下面的图形

在这里插入图片描述

2. easyX绘制

C++ 代码 使用 easyX 绘制 (easyX的坐标轴原点在窗口的左上方
x轴正方向向右 y轴正方向向下)

#include<iostream>
#include<graphics.h>
#include<vector>

namespace zsl {

	class Point {
	private:
		int x; int y;

	public:
		Point(int x, int y) {
			this->x = x;
			this->y = y;
		}

		Point() {}

		int getX() {
			return this->x;
		}

		int getY() {
			return this->y;
		}

		Point to_offset(int x, int y) {
			return Point(this->x + x, this->y + y);
		}
	};
}


std::vector<zsl::Point> getPoints(zsl::Point p, int length) {

	std::vector<zsl::Point> pointList = { p,
		p.to_offset(length, 0),
		p.to_offset(0, length),
		p.to_offset(length / 2, - length / 2),
		p.to_offset(length, length),
		p
	};
	return pointList;
}

int main() {
	initgraph(600, 600);
	setlinecolor(RED);

	zsl::Point start = zsl::Point(200, 200);
	std::vector<zsl::Point> points = getPoints(start, 100);
	for (int i = 1; i < points.size(); i++) {
		zsl::Point last = points[i - 1];
		zsl::Point curr = points[i];
		line(last.getX(), last.getY(), curr.getX(), curr.getY());
	}
	int a;
	std::cin >> a;
	closegraph();
	return 0;
}

easyX绘制五角形

3. swing 绘制

java 代码 使用 swing (swing的坐标轴原点在左上方
x轴正方向向右 y轴正方向向下)

package com.demo.draws;

import javax.swing.*;
import java.awt.*;
import java.util.Arrays;

public class Draw extends JFrame {

    public class Plot extends JPanel {

        private java.util.List<java.util.List<Integer>> points;

        public Plot(java.util.List<java.util.List<Integer>> points) {
            this.points = points;
        }

        public void paint(Graphics graphics) {
            super.paint(graphics);

            Graphics2D graphics2D = (Graphics2D) graphics;
            graphics2D.setColor(Color.RED);
            for (int i = 1; i < points.size(); i ++) {
                graphics2D.drawLine(points.get(i - 1).get(0), points.get(i -1).get(1),
                    points.get(i).get(0), points.get(i).get(1));
            }
            BasicStroke basicStroke = new BasicStroke(10.1f,BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL);
            graphics2D.setStroke(basicStroke);
         }
    }

    public java.util.List<java.util.List<Integer>> getPoints(int x, int y, int length) {
        return Arrays.asList(
            Arrays.asList(x, y),
            Arrays.asList(x + length, y),
            Arrays.asList(x, y + length),
            Arrays.asList(x + length / 2, y - length / 2),
            Arrays.asList(x + length, y + length),
            Arrays.asList(x, y)
        );
    }

    public Draw() {
        super();
        init();
    }

    public void init() {
        this.setSize(600, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setContentPane(new Plot(getPoints(200, 200, 100)));

        this.setTitle("绘图");
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        new Draw();
    }

}

swing绘制五角形

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值