使用System.Drawing绘制基本几何图形

1.使用System.Drawing绘制一个正方形

using System;
using System.Drawing;
using System.Windows.Forms;

public partial class MyForm : Form
{
    public MyForm()
    {
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        // 创建一个Pen对象,用于绘制正方形  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {
            // 设置正方形的位置和大小  
            // 在这个例子中,我们从(50, 50)开始,大小为100x100  
            Rectangle rect = new Rectangle(50, 50, 100, 100);

            // 使用Graphics对象的DrawRectangle方法来绘制正方形  
            e.Graphics.DrawRectangle(pen, rect);
        }
    }
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MyForm());
    }
}

 

2. 使用System.Drawing绘制一个长方形

using System;
using System.Drawing;
using System.Windows.Forms;

public partial class MyForm : Form
{
    public MyForm()
    {
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        // 创建一个Pen对象,用于绘制长方形  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {
            // 设置长方形的位置和大小  
            // 在这个例子中,我们从(50, 50)开始,宽度为200,高度为100  
            Rectangle rect = new Rectangle(50, 50, 200, 100);

            // 使用Graphics对象的DrawRectangle方法来绘制长方形  
            e.Graphics.DrawRectangle(pen, rect);
        }
    }
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MyForm());
    }
}

3.使用System.Drawing绘制一个圆形

using System;
using System.Drawing;
using System.Windows.Forms;

public partial class MyForm : Form
{
    public MyForm()
    {
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        // 创建一个Pen对象,用于绘制圆形的边框  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {
            // 创建一个Brush对象,用于填充圆形(如果需要的话)  
            using (Brush brush = new SolidBrush(Color.LightBlue)) // 你可以更改填充颜色  
            {
                // 设置圆形的位置和大小  
                // 在这个例子中,圆心在(100, 100),半径为50  
                int centerX = 100;
                int centerY = 100;
                int radius = 50;

                // 绘制圆形的边框(使用DrawEllipse方法)  
                e.Graphics.DrawEllipse(pen, centerX - radius, centerY - radius, 2 * radius, 2 * radius);

                // 如果你想要填充圆形,可以使用FillEllipse方法  
                // e.Graphics.FillEllipse(brush, centerX - radius, centerY - radius, 2 * radius, 2 * radius);  
            }
        }
    }
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MyForm());
    }
}

 

4.使用System.Drawing绘制一个三角形 

using System;
using System.Drawing;
using System.Windows.Forms;

public partial class MyForm : Form
{
    public MyForm()
    {
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        // 创建一个Pen对象,用于绘制三角形的边  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {
            // 设置三角形的三个顶点  
            Point point1 = new Point(50, 50);
            Point point2 = new Point(150, 50);
            Point point3 = new Point(100, 150);

            // 绘制三条线以构成三角形  
            e.Graphics.DrawLine(pen, point1, point2);
            e.Graphics.DrawLine(pen, point2, point3);
            e.Graphics.DrawLine(pen, point3, point1);
        }
    }
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MyForm());
    }
}

 

5.使用System.Drawing绘制一个五角星 

using System;
using System.Drawing;
using System.Windows.Forms;

public partial class MyForm : Form
{
    public MyForm()
    {
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        // 创建一个Pen对象,用于绘制五角星  
        using (Pen pen = new Pen(Color.Black, 2)) // 你可以更改颜色和线条宽度  
        {
            // 设定五角星的中心点  
            int centerX = 100;
            int centerY = 100;

            // 设定五角星的外接圆半径  
            int radius = 50;

            // 设定五角星的旋转角度(如果需要)  
            double rotateAngle = Math.PI / 2; // 从上顶点开始  

            // 计算五角星的五个顶点  
            PointF[] starPoints = CalculateStarPoints(centerX, centerY, radius, 5, rotateAngle);

            // 绘制五角星  
            for (int i = 0; i < starPoints.Length; i++)
            {
                int nextIndex = (i + 1) % starPoints.Length;
                e.Graphics.DrawLine(pen, starPoints[i], starPoints[nextIndex]);
            }
        }
    }

    // 计算五角星的顶点  
    private PointF[] CalculateStarPoints(float centerX, float centerY, float radius, int spikes, double rotation)
    {
        PointF[] result = new PointF[spikes];

        double outerRadius = radius; // 外接圆半径  
        double innerRadius = radius * 0.5f * Math.Sqrt(3); // 内接圆半径(五角星的特殊值)  

        double angle = Math.PI / 2 * 3 - spikes * Math.PI / spikes; // 第一个顶点的角度  

        for (int i = 0; i < spikes; i++)
        {
            result[i].X = (float)(centerX + Math.Cos(angle + rotation) * outerRadius);
            if (i % 2 == 0)
            {
                result[i].Y = (float)(centerY + Math.Sin(angle + rotation) * outerRadius);
            }
            else
            {
                result[i].Y = (float)(centerY + Math.Sin(angle + rotation) * innerRadius);
            }

            angle += Math.PI / spikes;
        }

        return result;
    }
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MyForm());
    }
}

 

6.使用System.Drawing绘制一个圆外切三角形 

using System;
using System.Drawing;
using System.Windows.Forms;

public partial class MyForm : Form
{
    public MyForm()
    {
        // 你可以在这里设置Form的双缓冲,以避免绘制时出现的闪烁  
        this.DoubleBuffered = true;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        // 定义三角形的边长  
        int sideLength = 100;

        // 计算外接圆的半径  
        double radius = sideLength / (2 * Math.Sqrt(3));

        // 设定外接圆的中心点和三角形的中心点  
        int centerX = this.ClientSize.Width / 2;
        int centerY = this.ClientSize.Height / 2;

        // 计算三角形的顶点  
        PointF[] trianglePoints = CalculateEquilateralTrianglePoints(centerX, centerY, sideLength);

        // 绘制外接圆  
        using (Pen circlePen = new Pen(Color.Blue, 2))
        {
            e.Graphics.DrawEllipse(circlePen, centerX - (int)radius, centerY - (int)radius, (int)(radius * 2), (int)(radius * 2));
        }

        // 绘制三角形  
        using (Pen trianglePen = new Pen(Color.Black, 2))
        {
            e.Graphics.DrawLines(trianglePen, trianglePoints);
        }
    }

    // 计算等边三角形的三个顶点  
    private PointF[] CalculateEquilateralTrianglePoints(int centerX, int centerY, int sideLength)
    {
        PointF[] points = new PointF[3];

        double angle = Math.PI / 3; // 等边三角形内角的一半  

        // 第一个顶点(上方)  
        points[0] = new PointF(centerX, centerY - sideLength / 2);

        // 第二个顶点(右侧)  
        points[1] = new PointF(
            (float)(centerX + sideLength / 2 * Math.Cos(angle)),
            (float)(centerY + sideLength / 2 * Math.Sin(angle))
        );

        // 第三个顶点(左侧)  
        points[2] = new PointF(
            (float)(centerX + sideLength / 2 * Math.Cos(-angle)),
            (float)(centerY + sideLength / 2 * Math.Sin(-angle))
        );

        return points;
    }
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MyForm());
    }
}

7.使用System.Drawing绘制一个圆内接三角形

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/626769.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于django医用耗材网上申领系统的实现

基于django医用耗材网上申领系统的实现 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 管理员登录 系统在安全性的验证方面究竟做了什么功能呢&#xff1f;在做之前我们也进行了思量&…

全面提升数据采集效率:亮数据产品的应用与评估详解

全面提升数据采集效率&#xff1a;亮数据产品的应用与评估详解 文章目录 全面提升数据采集效率&#xff1a;亮数据产品的应用与评估详解背景应用场景&#xff1a;平台首页信息抓取准备评测素材详细的产品使用和评测流程产品介绍亮数据的IP代理服务亮数据的爬虫工具及采集技术 注…

一个视频AI自动抠像 速度快 操作简单 - RobustVideoMattingGU

RVM的GUI版本&#xff1a; 一款基于Robust Video Matting&#xff08;RVM&#xff09;源码的图形用户界面&#xff08;GUI&#xff09;版本&#xff0c;采用先进的pyqt6框架和qdarkstyle风格设计&#xff0c;为视频编辑爱好者和二次创作者打造了一个功能丰富的工具箱。这款软件…

基于springboot实现的家具销售电商平台

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&…

JavaScript异步编程——10-async异步函数【万字长文,感谢支持】

异步函数&#xff08;用 async 声明的函数&#xff09; 异步函数的定义 使用async关键字声明的函数&#xff0c;称之为异步函数。在普通函数前面加上 async 关键字&#xff0c;就成了异步函数。语法举例&#xff1a; // 写法1&#xff1a;函数声明的写法async function foo1(…

基于SVPWM的飞轮控制系统的simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于SVPWM的飞轮控制系统的simulink建模与仿真。SVPWM的核心思想是将逆变器输出的三相电压矢量在两相静止坐标系&#xff08;αβ坐标系&#xff09;中表示&#xff0c;通过控…

基于EKF扩展卡尔曼滤波的一阶环形倒立摆控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于EKF扩展卡尔曼滤波的一阶环形倒立摆控制系统simulink建模与仿真。基于扩展卡尔曼滤波&#xff08;Extended Kalman Filter, EKF&#xff09;的一阶环形倒立摆控制系统&…

常类API(Math,System,Runtime)

1、Math 是帮助我们用于进行数学计算的工具类私有化构造方法&#xff0c;所有的方法都是静态的 方法名 说明public static int abs(int a) 获取参数绝对值 public static double ceil(int a)向上取整public static double floor(int a)向下取…

算法分析与设计复习__渐近+复杂度

算法v.s.程序: 程序 数据结构 算法&#xff1b; 1.时空复杂度T(n)/O(n)&#xff08;衡量一个算法的优劣&#xff09; 1.1最坏/最好/平均(所有输入等概出现)时间复杂度; 1.1.1 E.g.手算某算法&#xff08;冒泡排序&#xff09;程序段的T,O; 1.2算法的渐近表示&#xff1b; …

C++|多态性与虚函数(2)|虚析构函数|重载函数|纯虚函数|抽象类

前言 看这篇之前&#xff0c;可以先看多态性与虚函数&#xff08;1&#xff09;⬇️ C|多态性与虚函数&#xff08;1&#xff09;功能绑定|向上转换类型|虚函数-CSDN博客https://blog.csdn.net/weixin_74197067/article/details/138861418?spm1001.2014.3001.5501这篇文章会…

Selenium 自动化 —— 四种等待(wait)机制

更多关于Selenium的知识请访问CSND论坛“兰亭序咖啡”的专栏&#xff1a;专栏《Selenium 从入门到精通》 ​ 目录 目录 需要等待的场景 自己实现等待逻辑 Selenium 提供的三种等待机制 隐式等待&#xff08;Implicit Waits&#xff09; 隐式等待的优点 隐式等待的缺点 …

【保姆级介绍自动化的讲解】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

mysql根据字段值关联查不同表

mysql根据字段值关联查不同表&#xff1a; 实现&#xff1a; 使用left join 结合case when 判断直接取值&#xff1a; select mp.member_id ,mp.store_id, case mp.store_type when 1 then bs.store_namewhen 2 then sc.store_namewhen 3 then be.store_name end as store_na…

Windows / Linux 查看计算机支持的最大内存

该操作一般用不到&#xff0c;主要用于给计算机扩展内存用。 一、Windows 系统 以管理员身份运行 cmd 1、查看主板最大支持内存容量 wmic memphysical get maxcapacity /format:value将返回值值是以KB为单位的&#xff0c;除以 1024&#xff0c;再除以 1024&#xff0c;即…

银行核心背后的落地工程体系丨混沌测试的场景设计与实战演练

本文作者&#xff1a; 张显华、窦智浩、卢进文 与集中式架构相比&#xff0c;分布式架构的系统复杂性呈指数级增长&#xff0c;混沌工程在信创转型、分布式架构转型、小机下移等过程中有效保障了生产的稳定性。本文分享了 TiDB 分布式数据库在银行核心业务系统落地中进行混沌测…

【AI学习】对指令微调(instruction tuning)的理解

前面对微调&#xff08;Fine-tuning&#xff09;的学习中&#xff0c;提到指令微调。当时&#xff0c;不清楚何为指令微调&#xff0c;也一直没来得及仔细学习。 什么是指令微调&#xff1f;LLM经过预训练后&#xff0c;通过指令微调提升模型的指令遵循能力。所谓指令&#xf…

【微记录】dmidecode是干什么的?常用来做什么?如何查看系统支持的PCIe版本号(本质:标准,Desktop Management Interface)

是什么 dmidecode 是一个在 Linux 系统提取硬件信息的命令行工具。DMI 代表桌面管理接口&#xff08;Desktop Management Interface&#xff09;&#xff0c;是一种标准&#xff0c;收集桌面计算机的硬件信息&#xff0c;包括系统制造商、序列号、BIOS 信息、系统资产标签等。…

AI图像生成-基本步骤

模型板块 1、新建采样器&#xff1a;新建节点-》采样器-》K采样器 2、拖动模型节点后放开&#xff0c;选择checkpoint加载器&#xff08;简易&#xff09;&#xff0c;模型新建成功 提示词板块 1、拖动正面条件节点后放开&#xff0c;选择CLIP文本编码器&#xff0c;模型新建…

UV胶的应用场景有哪些?

UV胶是一种特殊的胶水&#xff0c;其固化过程需要紫外光照射。它具有快速固化、高强度、无溶剂挥发等优点&#xff0c;因此在许多应用场景中被广泛使用。UV胶的应用场景非常广泛&#xff0c;包括但不限于以下几个方面&#xff1a; 1.电子产品组装: UV胶在电子产品的组装中扮演…

SHELL-双重循环习题练习

1.99乘法表 #!/bin/bash #99乘法表for ((second1; second<9; second)) dofor ((first1; first<second; first))do echo -n -e "${first}*${second}$[first*second]\t" done echo done ######### 首先定义了一个外循环变量second&#xff0c;初始值为1&am…