简易绘图软件(水一期)

哈哈!

1、编写代码:

        代码:

                main:

#include <graphics.h>
#include <music.h>
#include <heker.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )

using namespace std;
class Point
{
protected:
    int x;
    int y;
    int r;
    int x1;
    int y1;
public:
    Point()
    {
        x = 0;
        y = 0;
        r = 0;
        x1= 0;
        y1= 0;
    }
     virtual void set(int a, int b)=0;
     virtual void setstart(int a,int b)=0;
     virtual void draw()=0;
     virtual void drawf()=0;
     int getx() const
    {
        return x;
    }

     int gety() const
    {
        return y;
    }
};
class MyCircle:public Point
{
     virtual void set(int a, int b)
    {
        int dx = getx() - a;
        int dy = gety() -b;
        r = (int)sqrt(dx * dx + dy * dy);
        x1=a;
        y1=b;
    }

     virtual void setstart(int a,int b)
    {
        x = a;
        y = b;
        r = 0;
        x1=a;
        y1=b;
    }

     virtual void draw()
    {
        circle(x, y, r);
    }

     virtual void drawf()
    {
       setfillstyle(SOLID_FILL,getcolor());
       pieslicef(x,y,0,360,r);
    }

};
class rcircle:public Point
{
public:
    virtual void set(int a,int b)
    {
        x1=getx() - a;
        y1=gety() - b;
    }

    virtual void setstart(int a,int b)
    {
        x = a;
        y = b;
        r = 0;
        x1= 0;
        y1= 0;
    }
    
    virtual  void draw()
    {
        ellipsef(x,y,0,360,x1,y1);
    }

    virtual   void drawf()
    {
        setfillstyle(SOLID_FILL,getcolor());
    fillellipse(x,y,x1,y1);
    }
};
class Myline:public MyCircle
{
public:
    virtual  void draw()
    {
        line(x,y,x1,y1);
    }

    virtual  void drawf()
    {
        line(x,y,x1,y1);
    }
};
class Ju:public MyCircle
{
public:
   virtual  void draw()
    {
        rectangle(x,y,x1,y1);
    }

   virtual void drawf()
    {
       setfillstyle(SOLID_FILL,getcolor());
       int poly[8]={x,y,x1,y,x1,y1,x,y1};
       fillpoly(4,poly);
    }
};
int main()
{
	Hide();
    int b=0;
	MyCircle r;
	rcircle nr;
	Myline l;
	Ju ju;
    Point *p=&r;
	bool bDraw = false;	
    initgraph(800, 600, INIT_RENDERMANUAL);
	setfillstyle(SOLID_FILL,BLUE);  
    bar(10,20,40,50);
    setfillstyle(SOLID_FILL,YELLOW);
    bar(40,20,70,50);
    setfillstyle(SOLID_FILL,RED);
    bar(70,20,100,50);
    setfillstyle(SOLID_FILL,GREEN);
    bar(100,20,130,50);
    setfillstyle(SOLID_FILL,WHITE);
    bar(130,20,160,50);
    setfillstyle(SOLID_FILL,0xFF6100);
    bar(160,20,190,50);
    setfillstyle(SOLID_FILL,0xA020E0);
    bar(190,20,220,50);

    setfillstyle(SOLID_FILL,WHITE);       
    bar(10,51,40,81);
    setfillstyle(SOLID_FILL,BLACK);
    line(15,66,35,66);
    setfillstyle(SOLID_FILL,WHITE);
    bar(10,82,40,112);
    setfillstyle(SOLID_FILL,BLACK);
    circle(25,97,10);
    setfillstyle(SOLID_FILL,WHITE);
    bar(10,113,40,143);
    setfillstyle(SOLID_FILL,BLACK);
    rectangle(15,120,35,136);
    setfillstyle(SOLID_FILL,WHITE);
    bar(10,144,40,174);
    setfillstyle(SOLID_FILL,BLACK);
    ellipsef(25,159,0,360,10,6);


    setfillstyle(SOLID_FILL,WHITE);  
    bar(10,175,40,205);
    outtextxy(15,180,"实心");
    setfillstyle(SOLID_FILL,WHITE);
    bar(10,206,40,236);
    outtextxy(10,210,"空心");

    outtextxy(335,35,"粗细");      
    setfillstyle(SOLID_FILL,WHITE);
    bar(400,20,430,50);
    setfillstyle(SOLID_FILL,BLACK);
    bar(405,35,425,36);
    setfillstyle(SOLID_FILL,WHITE);
    bar(435,20,465,50);
    setfillstyle(SOLID_FILL,BLACK);
    bar(440,35,460,38);
    setfillstyle(SOLID_FILL,WHITE);
    bar(470,20,500,50);
    setfillstyle(SOLID_FILL,BLACK);
    bar(475,35,495,40);

    outtextxy(565,35,"线条形状");   
    setfillstyle(SOLID_FILL,WHITE);
    bar(630,20,660,50);
    setcolor(BLACK);
    setlinestyle(PS_SOLID, 0, 1, NULL);
    line(632,35,657,35);
    setfillstyle(SOLID_FILL,WHITE);
    bar(665,20,695,50);
    setcolor(WHITE);
    setlinestyle(PS_DOT, 0, 1, NULL);
    line(667,35,690,35);

    setlinewidth(3);                 
    setcolor(WHITE);
    line(45,55,45,595);
    line(45,55,795,55);
    line(45,595,795,595);
    line(795,55,795,595);
    setlinewidth(1);

    setfillstyle(SOLID_FILL,WHITE);  
    bar(10,300,40,330);
    outtextxy(10,305,"清屏");

	setfont(16, 0, "宋体");
	setcolor(0x00F000F0);
	setbkcolor(BLACK);
	setlinestyle(PS_SOLID);
    mouse_msg msg = {0};

	for ( ; is_run();delay_fps(60))	
	{
   		while (mousemsg())
		{
			msg = getmouse();
		}

		if (msg.is_down())					
        {
            if (msg.is_left())				
            {  BeepMusic("SNA.wav");
               if(msg.x>9&msg.x<41&msg.y>19&msg.y<51)
                {
                setcolor(0x0000FF);
                }
               else if(msg.x>39&msg.x<71&msg.y>19&msg.y<51)
                {
                setcolor(0xFFFF00);
                }
               else if(msg.x>69&msg.x<101&msg.y>19&msg.y<51)
                {
                setcolor(0xFF0000);
                }
               else if(msg.x>99&msg.x<131&msg.y>19&msg.y<51)
                {
                setcolor(0x00FF00);
                }
               else if(msg.x>129&msg.x<161&msg.y>19&msg.y<51)
                {
                setcolor(0xFFFFFF);
                }
               else if(msg.x>159&msg.x<191&msg.y>19&msg.y<51)
                {
                setcolor(0xFF6100);
                }
               else if(msg.x>189&msg.x<211&msg.y>19&msg.y<51)
                {
                setcolor(0xA020E0);
                }
               else if(msg.x>399&msg.x<431&msg.y>19&msg.y<51)
                {
                setlinewidth(1);
                setcolor(getcolor());
                }
               else if(msg.x>434&msg.x<466&msg.y>19&msg.y<51)
                {
                setlinewidth(3);
                setcolor(getcolor());
                }
               else if(msg.x>469&msg.x<501&msg.y>19&msg.y<51)
                {
                setlinewidth(9);
                setcolor(getcolor());
                }
               else if(msg.x>9&msg.x<41&msg.y>299&msg.y<331)
                {
                setfillstyle(SOLID_FILL,BLACK);
                bar(48,58,792,592);
                }

               else if(msg.x>630&msg.x<650&msg.y>20&msg.y<50)
                {
                setlinestyle(PS_SOLID, 0, 1, NULL);
                setcolor(getcolor());
                }

               else if(msg.x>665&msg.x<695&msg.y>20&msg.y<50)
                {
                setlinestyle(PS_DOT, 0, 1, NULL);
                setcolor(getcolor());
                }

               else if(msg.x>9&msg.x<41&msg.y>50&msg.y<82)
                {
                p=&l;
                }
                else if(msg.x>9&msg.x<41&msg.y>81&msg.y<113)
                {
                p=&r;
                }
                else if(msg.x>9&msg.x<41&msg.y>112&msg.y<144)
                {
                p=&ju;
                }
                else if(msg.x>9&msg.x<41&msg.y>143&msg.y<175)
                {
                p=&nr;
                }
                else if(msg.x>9&msg.x<41&msg.y>174&msg.y<206)//设置一个选择实心空心的开关
                {
                b=1;
                }
                else if(msg.x>9&msg.x<41&msg.y>205&msg.y<237)
                {
                b=0;
                }
else {
 p->setstart(msg.x,msg.y);
 setwritemode(R2_XORPEN);	
 bDraw = true;                  
     }
}
}
                if (msg.is_right())		
            {
                if (bDraw)
                {   BeepMusic("WIN.wav");
                if(b==0)
              {
               p->draw();
                }
            else p->drawf();					
                    setwritemode(R2_COPYPEN);
                    bDraw = false;

            }
        }
        else if (msg.is_move())				
        {
            if (bDraw)
            {
            if(b==0)
              {
               p->draw();
                }
            else p->drawf();			
            p->set(msg.x,msg.y);
            if(b==0)
              {
             p->draw();
                }			
            else p->drawf();

            }
        }
        else if (msg.is_up())			
        {
            if (bDraw)
            {
                setwritemode(R2_COPYPEN);	
               p->set(msg.x,msg.y);
                if(b==0)
              {
               p->draw();
               }			
               else p->drawf();
                bDraw = false;
            }
        }
		xyprintf(0, 0, "x=%4d y=%4d", msg.x, msg.y);
	}
closegraph();
return 0;
}

        效果:

 

 

2、更改名称:

编译运行之后,得到文件如图:

更改名称为"Coco绘图软件"。

3、更改图标:

详情请见C++:如何更改程序图标?-CSDN博客

4、下载音乐

有两个音乐,下载地址:CSDN2.0云服务器

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

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

相关文章

【python】python入门(输出)

本篇文章将会介绍关于python的常见输出&#xff0c;希望对您有帮助&#xff01; 输出 用到print函数 print(oh mygod)##或者 print("oh mygod")##或者 print("oh"" ""mygod") 输出结果&#xff1a; 用单引号、双引号都可以 ,引号中可…

单片机学习笔记---LCD1602

LCD1602介绍 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是一种字符型液晶显示模块&#xff0c;可以显示ASCII码的标准字符和其它的一些内置特殊字符&#xff08;比如日文的片假名&#xff09;&#xff0c;还可以有8个自定义字符 显示容量&#xff1a;…

Linux 幻兽帕鲁服务器怎么上传存档文件?

通过控制台远程连接到 Linux 服务器后&#xff0c;你可以打开文件树&#xff0c;然后找到幻兽帕鲁存档位置&#xff0c;将存档压缩包上传到 Pal 目录中。 记得替换存档前要先停止服务。 2. 然后将 Saved.tar 文件解压&#xff0c;并完全替换新服务器上的 Saved 存档目录即可。 …

蓝桥杯:C++排序

排序 排序和排列是算法题目常见的基本算法。几乎每次蓝桥杯软件类大赛都有题目会用到排序或排列。常见的排序算法如下。 第(3)种排序算法不是基于比较的&#xff0c;而是对数值按位划分&#xff0c;按照以空间换取时间的思路来排序。看起来它们的复杂度更好&#xff0c;但实际…

真假难辨 - Sora(OpenAI)/世界模拟器的技术报告

目录 引言技术报告汉译版英文原版 引言 Sora是OpenAI在2024年2月15日发布的世界模拟器&#xff0c;功能是通过文本可以生成一分钟的高保真视频。由于较高的视频质量&#xff0c;引起了巨大关注。下面是三个示例&#xff0c;在示例之后给出了其技术报告&#xff1a; tokyo-wal…

博途PLC While指令编程应用(SCL代码)

FOR循环和While指令都可以实现循环控制。在循环体内部&#xff0c;你可以编写需要重复执行的代码。WhIile在每次循环开始之前&#xff0c;都会检查条件是否为真。如果条件为真&#xff0c;则执行循环体内的代码&#xff1b;如果条件为假&#xff0c;则跳出循环&#xff0c;继续…

Android Studio 实现图书借阅(管理)系统

&#x1f345;文章末尾有获取完整项目源码方式&#x1f345; 目录 前言 一、任务介绍 1.1 背景 1.2目的和意义 二、 实现介绍 视频演示 2.1 启动页实现 2.2 注册页面实现 2.3 登陆页面实现 2.4 图书列表的实现 2.5 当前借阅页面实现 2.6 我的页面实现…

你知道.NET的字符串在内存中是如何存储的吗?

一、字符串对象的内存布局 从“值类型”和“引用类型”来划分&#xff0c;字符串自然属于引用类型的范畴&#xff0c;所以一个字符串对象自然采用引用类型的内存布局。引用类型实例的内存布局总的来说整个内存布局分三块&#xff1a;ObjHeader TypeHandle Payload。对于一般…

如何在Windows中配置多个显示器?这里提供详细步骤

Windows可以通过多种方式使用多个显示器,扩展或复制主显示器。你甚至可以关闭主显示器。以下是如何使用简单的键盘快捷键更改辅助显示设置。 使用Windows+P投影菜单 要快速更改Windows 10处理多个显示器的方式,请按Windows+P。屏幕右侧会弹出一个名为“投影”的深灰色菜单。…

Codeforces Round 926 F. Sasha and the Wedding Binary Search Tree

F. Sasha and the Wedding Binary Search Tree 题意 给定一颗二叉搜索树&#xff0c;规定树上的所有点的点权都在范围 [ 1 , C ] [1, C] [1,C] 内&#xff0c;树上的某些节点点权已知&#xff0c;某些节点点权未知&#xff0c;求出合法的二叉搜索树的数量 思路 由于是二叉搜…

Web项目利用MybatisPlus进行分页查询

之前在写博客系统前台页面的时候&#xff0c;遇到了利用mp进行分页查询的情况&#xff0c;由于涉及到的知识点相对较为重要&#xff0c;固写一篇博客以此巩固。 一、功能需求 在首页和分类页面都需要查询文章列表。 首页&#xff1a;查询所有的文章分类页面&#xff1a;查询…

隐函数的求导【高数笔记】

1. 什么是隐函数&#xff1f; 2. 隐函数的做题步骤&#xff1f; 3. 隐函数中的复合函数求解法&#xff0c;与求导中复合函数求解法有什么不同&#xff1f; 4. 隐函数求导的过程中需要注意什么&#xff1f;

透光力之珠——光耦固态继电器的独特特点解析

光耦固态继电器作为现代电子控制领域中的重要组件&#xff0c;以其独特的特点在工业、通信、医疗等多个领域得到广泛应用。本文将深入剖析光耦固态继电器的特点&#xff0c;揭示其在电子控制中的卓越性能。 光耦固态继电器的光电隔离技术 光耦固态继电器以其光电隔离技术而脱颖…

深入了解社区店:定义、模式与优势

在当今的商业环境中&#xff0c;社区店正逐渐成为创业者们关注的热点。本文将以我的鲜奶吧店铺为例&#xff0c;深入探讨社区店的定义、模式和优势&#xff0c;为您提供最有价值的干货信息。 1、社区店的定义 社区店是指位于社区内或周边&#xff0c;以服务社区居民为主要目标…

Diffusion Transformer U-Net for MedicalImage Segmentation

用于医学图像分割的扩散变压器U-Net 摘要&#xff1a; 扩散模型在各种发电任务中显示出其强大的功能。在将扩散模型应用于医学图像分割时&#xff0c;存在一些需要克服的障碍:扩散过程调节所需的语义特征与噪声嵌入没有很好地对齐;这些扩散模型中使用的U-Net骨干网对上下文信…

2.15学习总结

2.15 1.聪明的质监员&#xff08;二分前缀和&#xff09; 2.村村通&#xff08;并查集&#xff09; 3.玉蟾宫(悬线法DP) 4.随机排列&#xff08;树状数组逆序对问题&#xff09; 5.增进感情&#xff08;DFS&#xff09; 6.医院设置&#xff08;floyd&#xff09; 聪明的质监员…

P1010 [NOIP1998 普及组] 幂次方题解

题目 任何一个正整数都可以用2的幂次方表示。例如137。 同时约定次方用括号来表示&#xff0c;即ab可表示为a(b)。 由此可知&#xff0c;137可表示为2(7)2(3)2(0)&#xff0c;进一步&#xff1a;72 ( 用2表示)&#xff0c;并且32。 所以137可表示为2(2(2)22(0))2(22(0))2(0…

ESP32学习(4)——电脑远程控制LED灯

1.思路梳理 首先需要让ESP32连接上WIFI 然后创建udp socket 接着接收udp数据 最后解析数据&#xff0c;控制LED 2.代码实现 import network from socket import * from machine import Pin p2Pin(2,Pin.OUT)def do_connect(): #连接wifi wlan network.WLAN(network.STA_IF)…

optee imx8mm

总仓库 git clone https://github.com/Xsyin/imx8mqevk.git -b container_region 替换imx8mqevk中的optee-client git clone https://github.com/nxp-imx/imx-optee-client.git -b lf-5.15.32_2.0.0 用 5.15.32 kernel 会有如下报错&#xff0c;需要将optee os升级到分支 lf-…

MySQL容器的数据挂载

挂载本地目录或文件 可以发现&#xff0c;数据卷的目录结构较深&#xff0c;如果我们去操作数据卷目录会不太方便。在很多情况下&#xff0c;我们会直接将容器目录与宿主机指定目录挂载。挂载语法与数据卷类似&#xff1a; # 挂载本地目录 -v 本地目录:容器内目录 # 挂载本地…
最新文章