登录
首页 » VC++源码 » VC++三种直线扫描转换算法范例演示

VC++三种直线扫描转换算法范例演示

于 2022-03-19 发布 文件大小:2.88 MB
0 263
下载积分: 2 下载次数: 1

代码说明:

本源码演示了三种VC++直线扫描转换算法,这3种方式是:bresenham方法、数值微分法、中点画线法。本程序同时是一个MFC单文档程序,进行直线段扫面转换算法的算法验证。   1.使用Wizard建立单文档程序;   2.绘制20*20的网格线,格子X和Y方向间隔均为20像素,网格起始坐标在(20,20)。我们使用此网格模拟像素矩阵(),格子交叉点是像素中心。   3.输入直线段两端点,可使用以下两种方法之一:   a)对话框输入   b)鼠标在网格内以鼠标左键按下-拖动-抬起方式输入。注意:直线段两端点要自动取整到模拟的像素中心位置   4.进行直线段扫描转换,通过点击鼠标右键调用方式或者菜单调用的方式执行。计算完成后,将扫描转换结果,在模拟的像素矩阵中,使用圆形显示出来。   通过这个实验,我们可以熟悉扫描的算法,其中要注意的是判断直线的斜率,分情况处理竖直直线段、斜率绝对值大于1、斜率绝对值小于1的情况,这部分需要花费一些时间去算。总之还是对扫描算法的理解和编程基矗

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • VC++ Win32 DLL的创建:获取最大和最小数(使用导出函数关键字)
    VC++ 创建Win32 DLL的例子附源码:获取最大和最小数(使用导出函数关键字)。编译本项目源码后,将直接在Debug目录下生成Get_Max_Min.Dll文件。   Get_Max_Min_Dll文件夹下为Win32 DLL的创建:获取最大和最小数(使用.def文件)源码。
    2023-02-27 05:35:03下载
    积分:1
  • VC++ 使用用户界面线程实现软件的片头效果
    用户界面线程:使用用户界面线程实现软件的片头效果,这个效果大家都熟悉,就是软件打开的时候,显示一个静态或动态的界面,也可能是一张图片,等待软件全部加载完后进入软件主界面,本例中实现的这种软件启动画面是基于用户界面线程实现,运行效果如图所示。
    2022-10-29 11:50:03下载
    积分:1
  • VC++ 使用不同的画笔绘制图形
    VC++ 使用不同的画笔绘制图形,演示绘制矩形、绘制多段折线、绘制椭圆、弧形和饼图,使用不同的画笔类型来绘制不同的几何图形,演示了一些VC++图形绘制的基础技巧使用方法。下面的代码演示了如何绘制出这些图形:   //以实线画笔绘制矩形   pOldPen=pDC->SelectObject(&pen[0]);   pDC->Rectangle(10, 10, 110, 110);   pDC->TextOut(10, 115, "绘制矩形");   //使用虚线画笔和函数Polyline输出多段折线   pDC->SelectObject(&pen[1]); //载入虚线画笔   CPoint pts[]={CPoint(190, 20), CPoint(200, 60), CPoint(270, 40), CPoint(210, 80),   CPoint(250, 100), CPoint(300, 30), CPoint(310, 80)};   pDC->Polyline(pts, 7); //绘制多端折线   pDC->TextOut(180, 115, "绘制多段折线");   // 使用Pie和Arc输出饼图和弧形   pDC->SelectObject(&pen[2]); //载入点线画笔   pDC->Ellipse(10, 140, 160, 240);//绘制椭圆   pDC->SelectObject(&pen[3]); //载入点划线画笔   pDC->Pie(20, 150, 150, 230, 160, 160, 10, 160);   pDC->SelectObject(&pen[4]);//载入双点划线画笔   pDC->Arc(20, 150, 150, 230, 10, 220, 160, 220);   pDC->TextOut(10, 245, "绘制椭圆、弧形和饼图");   pDC->SetTextColor(RGB(0,0,255));   pDC->TextOut(220, 200, "使用不同的画笔绘制各种图形");   //恢复设备上下文的原有画笔   pDC->SelectObject(pOldPen);   //删除所创建的画笔资源   for (int i=0; i
    2022-02-13 06:16:01下载
    积分:1
  • VC6.0 使用信号量Semaphore实现线程的同步
    VC6.0 使用信号量Semaphore实现线程的同步,使用信号量实现线程同步,设置访问保护对象的最多线程数为2,确定当前已经启动运行的线程数目,可以创建线程。   CWinThread* pThread=AfxBeginThread(ThreadProc,&m_Edit);//开辟一个工作线程,   int thread=0;//全局变量记录当前运行线程的数目   CSemaphore mySemaphore(2,2);//创建CSemaphore类对象   UINT ThreadProc(LPVOID pParam)//工作线程入口函数   {    CEdit *pedit=(CEdit*)pParam;    CString str;    thread++;//线程数目加1    str.Format("%d",thread);    pedit->SetWindowText(str);//编辑框显示    CSingleLock singlelock(&mySemaphore);//创建CSingleLock类对象    singlelock.Lock();//计数器初始值减1    MessageBox(NULL,"信号量控制访问资源线程数","提示",MB_ICONWARNING);//弹出对话框    thread--;//线程数目减1    str.Format("%d",thread);    pedit->SetWindowText(str);//编辑框显示    return 0;   }
    2022-02-20 19:37:49下载
    积分:1
  • VC++ 读取SQL Server数据库结构
    VC++ 读取SQL Server数据库结构,读取指定数据库指定数据表的数据结构,演示中仅是读取出字段名、字段类型和字段类型取值大小,只是演示一种获取字段数据的方法:   m_grid.SetExtendedStyle(LVS_EX_FLATSB    |LVS_EX_FULLROWSELECT    |LVS_EX_HEADERDRAGDROP    |LVS_EX_ONECLICKACTIVATE    |LVS_EX_GRIDLINES);   m_grid.InsertColumn(0,"字段名",LVCFMT_LEFT,100,0);   m_grid.InsertColumn(1,"类型",LVCFMT_LEFT,100,1);   m_grid.InsertColumn(2,"大小",LVCFMT_LEFT,100,2);
    2022-07-17 13:15:00下载
    积分:1
  • VC++ SQL数据库提取器(备份、还原、分离数据库)
    VC++6.0编写的 SQL数据库提取器,本程序主要实现了备份和还原数据库、附加和分离数据库、提取数据表、导出数据、配置ODBC数据源等功能。   备份和还原数据库:在“选择数据库”下拉列表中选择要备份的数据库,单击工具栏中的备份数据库按钮,打开保存备份文件窗口,保存备份文件即可。还原数据库时,在“选择数据库”下拉列表中选择要还原的数据库,然后单击工具栏中的还原数据库按钮,选择备份文件,即可还原该数据库。   附加和分离数据库:单击附加数据库按钮,选择需要附加的数据库即可。   分离数据库时,在“选择数据库”下拉列表中选择要分离的数据库,然后单击分离数据库按钮即可。   提取数据表:选择要提取的数据库及相应的数据表,然后单击提取表结构按钮,打开“SQL提缺窗口,有两种提取方式,可以提取到Word或Excel中。   导出数据:选择要导出的数据表,单击“导出数据”按钮,打开“数据导出”窗口,有三种提取方式:导出到Word、导出到Excel、导出到文本,选择任意一种,单击“导出”按钮即可。
    2022-05-23 15:52:48下载
    积分:1
  • VC++ MFC DLL的创建:显示问候语信息
    VC++ MFC DLL的创建:显示问候语信息,运行效果如上图所示。
    2022-05-21 08:12:16下载
    积分:1
  • VC++ 生成Brush笔刷程序
    VC++ 生成Brush笔刷程序,使用了三种方法创建笔刷,第一种和第二种使用构造函数,第三种 创建CBrush类的一个对象myBrush3,调用CreateBrushIndirect()函数。创建了纯色、斜纹、网状方格三种形式的笔刷。   void CCreateBrushView::OnDraw(CDC* pDC)   {    CCreateBrushDoc* pDoc = GetDocument();    ASSERT_VALID(pDoc);    // TODO: add draw code for native data here    // 第一种方法创建画刷    // 定义时调用构造函数    CBrush myBrush1(RGB(0,0,255));    CBrush* pOldBrush1 = pDC->SelectObject(&myBrush1);    pDC->Rectangle(100,150,250,400);    // 恢复画刷对象    pDC->SelectObject(pOldBrush1);    // 第二种方法创建画刷    // 定义时调用构造函数    CBrush myBrush2(HS_BDIAGONAL,RGB(255,0,0));    CBrush* pOldBrush2 = pDC->SelectObject(&myBrush2);    pDC->Rectangle(300,100,450,360);    // 恢复画刷对象    pDC->SelectObject(pOldBrush2);    // 第三种方法创建画刷    // 创建CBrush类的一个对象myBrush3    CBrush myBrush3;    // 设置LOGBRUSH结构;    LOGBRUSH lb;    lb.lbStyle = BS_HATCHED;    lb.lbColor = RGB(0,255,0);    lb.lbHatch = HS_CROSS;    // 调用CreateBrushIndirect()函数    myBrush3.CreateBrushIndirect(&lb);    CBrush* pOldBrush3 = pDC->SelectObject(&myBrush
    2022-01-30 23:25:40下载
    积分:1
  • VC6.0 对联合查询后的数据结果集进行排序
    VC6.0 对联合查询后的结果进行排序,对获得的记录集进行排序,这是个同样实用的功能,特别在一些中小企业的数据库系统中,尤其实用,对数据分析很有帮助。本例子中的排序主要是两种常用形式:升序排列和降序排列。最终的排序结果绑定于Datagridview数据显示控件中显示。
    2022-07-13 07:35:09下载
    积分:1
  • VC++自绘窗体完整实例
    C++自绘窗体的完整代码,为你提供了一个对话框自绘设计方案,代码中的注释非常详细,相信会帮助大家设计好自己的个性窗体。这个自绘窗口是通过加载背景位图来实现的,对BMP位图进行平铺处理,也就是帖图的意思,定义一个位图画刷,选中画刷,然后填充客户区域。在填充的时候,需要判断位图的宽度与窗体边缘的宽度,这里对标题栏、窗体按钮、边框等窗体元素都进行填充处理,代码中有具体的实现过程。
    2022-02-22 04:29:43下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载