首页 > 编程语言 >c# 自绘图标

c# 自绘图标

时间:2024-04-01 13:11:21浏览次数:20  
标签:picture Point c# Bitmap Width 绘图 Graphics new

//绘制一个下拉菜单按钮
private void drawMenuFlag(int lineWidth, PictureBox picture)
{
    // 创建一个与 PictureBox 大小相同的 Bitmap
    Bitmap bmp = new Bitmap(picture.Width, picture.Height);

    // 创建一个 Graphics 对象,用于在 Bitmap 上绘制图形
    using (Graphics g = Graphics.FromImage(bmp))
    {
        // 启用抗锯齿
        g.SmoothingMode = SmoothingMode.AntiAlias;

        // 设置线条的颜色和宽度
        Pen pen = new Pen(Color.White, lineWidth);

        // 绘制横线
        g.DrawLine(pen, 0, 1, picture.Width, 1);

        // 定义三角形的三个顶点
        Point point1 = new Point(0, 5);
        Point point2 = new Point(picture.Width /2, picture.Height -1);
        Point point3 = new Point(picture.Width, 5);

        // 构建三角形的顶点数组
        Point[] trianglePoints = { point1, point2, point3 };

        // 使用绘图对象绘制三角形
        g.DrawPolygon(pen, trianglePoints);
    }

    // 将绘制好的 Bitmap 显示在 PictureBox 中
    picture.Image = bmp;
}

//绘制关闭按钮
private void drawCloseFlag(int lineWidth, PictureBox picture)
{
    // 创建一个与 PictureBox 大小相同的 Bitmap
    Bitmap bmp = new Bitmap(picture.Width, picture.Height);

    // 创建一个 Graphics 对象,用于在 Bitmap 上绘制图形
    using (Graphics g = Graphics.FromImage(bmp))
    {
        // 启用抗锯齿
        g.SmoothingMode = SmoothingMode.AntiAlias;

        // 设置线条的颜色和宽度
        Pen pen = new Pen(Color.White, lineWidth);

        // 计算叉的四个点
        Point topLeft = new Point(1, 1);
        Point bottomRight = new Point(picture.Width, picture.Height);
        Point topRight = new Point(picture.Width, 0);
        Point bottomLeft = new Point(0, picture.Height);

        // 绘制叉
        g.DrawLine(pen, topLeft, bottomRight);
        g.DrawLine(pen, topRight, bottomLeft);
    }

    // 将绘制好的 Bitmap 显示在 PictureBox 中
    picture.Image = bmp;
}


//绘制最小化按钮
private void drawMinimizeFlag(int lineWidth, PictureBox picture)
{
    // 创建一个与 PictureBox 大小相同的 Bitmap
    Bitmap bmp = new Bitmap(picture.Width, picture.Height);

    // 创建一个 Graphics 对象,用于在 Bitmap 上绘制图形
    using (Graphics g = Graphics.FromImage(bmp))
    {
        // 启用抗锯齿
        g.SmoothingMode = SmoothingMode.AntiAlias;

        // 设置线条的颜色和宽度
        Pen pen = new Pen(Color.White, lineWidth);

        // 绘制横线
        g.DrawLine(pen, 0, picture.Height  / 2 + lineWidth / 2, picture.Width, picture.Height  / 2 + lineWidth / 2);
    }

    // 将绘制好的 Bitmap 显示在 PictureBox 中
    picture.Image = bmp;
}

 

标签:picture,Point,c#,Bitmap,Width,绘图,Graphics,new
From: https://www.cnblogs.com/nanfei/p/18108187

相关文章

  • 时序预测 | Python实现VMD-CNN-LSTM时间序列预测
    时序预测|Python实现VMD-CNN-LSTM时间序列预测目录时序预测|Python实现VMD-CNN-LSTM时间序列预测预测效果基本介绍模型描述代码设计预测效果基本介绍VMD-CNN-LSTM是一种混合深度学习模型,结合了变分模态分解(VMD)、卷积神经网络(CNN)和长短期记忆......
  • 云容器引擎CCE弹性伸缩
    CCE弹性伸缩介绍CCE的弹性伸缩能力分为如下两个维度:工作负载弹性伸缩:即调度层弹性,主要是负责修改负载的调度容量变化。例如,HPA是典型的调度层弹性组件,通过HPA可以调整应用的副本数,调整的副本数会改变当前负载占用的调度容量,从而实现调度层的伸缩。节点弹性伸缩:即资源层弹......
  • Android+Fragment与Activity之间的信息传递——笔记3
    通过Bundle,Fragment与Activity之间的信息传递protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn2=findViewById(R.id.btn2);btn3=findViewById(R.......
  • 文件操作(1)【文件打开和关闭】【文件的顺序读写(各种函数)】【sprintf和sscanf的理解】
    一.什么是文件?在程序设计中我们一般谈的文件有两种:程序文件和数据文件1.程序文件程序文件是包含计算机程序代码的文件。它通常包含一系列指令和算法,用于执行特定的任务或实现特定的功能。程序文件可以由不同的编程语言编写,如C、Java、Python等。程序文件通过编译或解释等过......
  • 动态内存管理【malloc,calloc,realloc和free的理解】【柔性数组的概念】
    一.为什么要有动态内存分配我们知道,当我们创建变量的时候,我们会向系统申请一定大小的空间内存。比如inta=10或者intarr[10];我就向内存申请了4或者40个字节的大小来存放数据。但是当我们一旦申请好这个空间,大小就无法调整了。但是对于空间的需求,不仅仅就只有上面的情况。有时......
  • 初识编译和链接(C语言)
    文章目录编译和链接翻译环境预处理编译汇编链接运行环境编译和链接编译和链接这两个大的过程构成了翻译环境。其实,在ANSIC的任何一种实现中,存在两个不同的环境。一个环境是翻译环境,另一个是执行环境。翻译环境中,源代码被转换为可执行的机器指令。执行环境中,代......
  • 下载 DirectX 最终用户运行时(来自 Microsoft 官方下载中心)
    DirectXEnd-UserRuntime对于某些使用D3DX9、D3DX10、D3DX11、XAudio2.7、XInput1.3、XACT和/或ManagedDirectX1.1的游戏,MicrosoftDirectX®End-UserRuntime会安装许多来自旧版DirectXSDK的运行时库。重要事项!在下方选择语言会自动将整个页......
  • ABC347F 题解
    我们考虑这三个正方形的相对位置有多少种情况。我们把正方形的顶点设为\((x_i,y_i)\)。容易发现,放置合法当且仅当\(\foralli\neqj,|\x_i-x_j\|\geqd\\text{or}|\y_i-y_j\|\geqd\)。发现这只有可能是以下两种情况。于是便可以开始写了。/***********......
  • C#中的负载均衡(Nginx )
    负载均衡在C#和WPF日常开发中可能不太常见,因为负载均衡通常与网络服务器、Web应用程序等领域更相关。但是,如果你的WPF应用程序涉及到与远程服务器进行通信或者使用了分布式架构,那么负载均衡可能会成为一个重要的话题。以下是关于负载均衡的知识点,以及可能会在面试中被问到......
  • C#中的缓存处理方案 (MemoryCache,Redis)
    缓存处理在C#和WPF日常开发中非常重要,可以提高应用程序的性能和响应速度。以下是关于缓存处理方案的知识点,以及可能会在面试中被问到的一些问题和答案:缓存处理方案的知识点:内存缓存:内存缓存是最常见的一种缓存处理方案,它将数据存储在应用程序的内存中,以提高数据的访问速......