mfc经典程序,c++本程序包括两个算法的实现:DDA和Brensenham,分别用红色和蓝色来表示,如果用户能明确分辨现在已选的算法,还可以改变线条的颜色。
另外,如果用户不想用鼠标来画线,本程序提供对话框来确认起点和终点坐标,通过点“坐标设置”来实现。
本程序还考虑到屏幕的重画情况,当对界面最大化或最小化后恢复正常时系统会对进行重画,如果不对这一情况进行处理的话。
当界面大小改变时所画的线会不见。
具体的解决方法是:每次鼠标按下时,即选中起点,把这个起点加进起点链表的开头,鼠标弹起时,即选中线段的终点,此时把这个起点保存在终点链表的开头。
重画会调用函数OnDraw,在这个函数中每次画一条直线便从起点链表取一个起点,从终点链表中取一个终点,调用对应的画线算法。
为了使操作更直观,在画线过程中,线的终点还能跟着鼠标的移动而移动,直到用户选定一个确定的终点。
本程序还附带了解说视频,以补充之前展视过程的不足。
2023/9/7 19:17:52 62KB mfc,c++
1
计算机图形学,MFC,Bresenham画线,DDA画线,中点画线,画点,画圆。
验证成功
2023/9/1 19:07:42 1.93MB Bresenham,DDA
1
源代码:#include#include#include#include#definePI3.1415926/*定义常量*/#defineUP0x4800/*上移↑键:修改时间*/#defineDOWN0x5000/*下移↓键:修改时间*/#defineESC0x11b/*ESC键:退出系统*/#defineTAB0xf09/*TAB键:移动光标*//*函数声明*/intkeyhandle(int,int);/*键盘按键判断,并调用相关函数处理*/inttimeupchange(int);/*处理上移按键*/inttimedownchange(int);/*处理下移按键*/intdigithour(double);/*将double型的小时数转换成int型*/intdigitmin(double);/*将double型的分钟数转换成int型*/intdigitsec(double);/*将double型的秒钟数转换成int型*/voiddigitclock(int,int,int);/*在指定位置显示时钟或分钟或秒钟数*/voiddrawcursor(int);/*绘制一个光标*/voidclearcursor(int);/*消除前一个光标*/voidclockhandle();/*时钟处理*/doubleh,m,s;/*全局变量:小时,分,秒*/doublex,x1,x2,y,y1,y2;/*全局变量:坐标值*/structtimet[1];/*定义一个time结构类型的数组*/main(){intdriver,mode=0,i,j;driver=DETECT;/*自动检测显示设备*/initgraph(&driver,&mode,"");/*初始化图形系统*/setlinestyle(0,0,3);/*设置当前画线宽度和类型:设置三点宽实线*/setbkcolor(0);/*用调色板设置当前背景颜色*/setcolor(9);/*设置当前画线颜色*/line(82,430,558,430);line(70,62,70,418);line(82,50,558,50);line(570,62,570,418);line(70,62,570,62);line(76,56,297,56);line(340,56,564,56);/*画主体框架的边直线*//*arc(intx,inty,intstangle,intendangle,intradius)*/arc(82,62,90,180,12);arc(558,62,0,90,12);setlinestyle(0,0,3);arc(82,418,180,279,12);setlinestyle(0,0,3);arc(558,418,270,360,12);/*画主体框架的边角弧线*/setcolor(15);outtextxy(300,53,"CLOCK");/*显示标题*/setcolor(7);rectangle(342,72,560,360);/*画一个矩形,作为时钟的框架*/setwritemode(0);/*规定画线的方式。
mode=0,则表示画线时将所画位置的原来信息覆盖*/setcolor(15);outtextxy(433,75,"CLOCK");/*时钟的标题*/setcolor(7);line(392,310,510,310);line(392,330,510,330);arc(392,320,90,270,10);arc(510,320,270,90,10);/*绘制电子动画时钟下的数字时钟的边框架*//*绘制数字时钟的时分秒的分隔符*/setcolor(5);for(i=431;i<=470;i+=39)for(j=317;j<=324;j+=7){setlinestyle(0,0,3);circle(i,j,1);/*以(i,y)为圆心,1为半径画圆*/}setcolor(15);line(424,315,424,325);/*在运行电子时钟前先画一个光标*//*绘制表示小时的圆点*/for(i=0,m=0,h=0;i<=11;i++,h++){x=100*sin(
2023/8/25 8:11:27 142KB c语言实现电子时钟 课程设计
1
用的是delphi7+fastreport4.9编写的。
向fastreport报表传递变量总是不成功,利用网上的信息,一个一个地试,弄了个通宵都没有成功,后来终于成功了,利用delphi的表单中的edit,向fastreport报表传递变量终于成功。
与大家一起分享。
fastreport做报表画线,做表,和word一样的方便,在这个报表中,精确地画了个表,在这里顺便赞一个。
2023/8/4 3:18:38 526KB fastreport 变量
1
关于计算机图形学代码!画线,画圆,扫面线填充,扫描线的种子填充算法!
2023/8/1 4:32:56 4MB MFC 计算计图形学
1
可集成到任何js框架,导出cad格式数据dxf,提供画点、画线、画圆、画面或者添加注记等基本功能
2023/7/11 23:35:33 53KB js angular dxf cad
1
用VC编写的一个简单的画图软件,画线、点、矩形等。
可以调颜色、线型和线宽等功能。
2023/7/8 2:56:28 115KB VC画图程序
1
三种算法java实现画线,java没有自带画点函数,所以用drawline画点,主要是图形学算法实现。
1
MFC利用Bresenham算法实现画点连线,利用扫描线填充算法对所画多边形进行填充
2023/6/8 21:10:14 391KB MFC Bresenham 多边形填充 扫描线填充
1
画线、圆算法自己实现,不调库,界面是代码实现的,能够不合粗细、色调;
另有一些下场,这个当成第一版吧,能够当成Qt图形学入门的底子框架
2023/5/10 8:57:36 71KB 图形学,Qt
1
共 78 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡