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

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

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

代码说明:

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

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

发表评论

0 个回复

  • VC++ 首字母大写自动转换
    VC++拼音首字母大写自动转换程序,获取汉字的拼音首字母,并把首字母转换成大写,这是个VC.NET程序,我电脑上暂时没有编译环境,没有抓到截图,部分代码如下:   class CUpperFirstLetterApp : public CWinAppEx   {   public:    CUpperFirstLetterApp();   // 重写    public:    virtual BOOL InitInstance();   // 实现    DECLARE_MESSAGE_MAP()   };
    2022-04-18 02:09:56下载
    积分:1
  • VC++ 使用CDib类实现显示与保存BMP文件
    VC++ 使用CDib类实现显示与保存BMP文件,可以通过文件菜单打开BMP文件,并显示,也可实现存储BMP文件!代码中涉及到了判断DIB是否为空、获取DIB宽度和高度,程序中调用ConstructPalette来创建调色板。相关设置代码如下:   m_hDIB=m_dib.LoadFile(file);//调用ReadDIBFile()读取图像   if(m_hDIB==NULL)   {   AfxMessageBox("图像格式不正确!");// 提示出错   return FALSE;   }   SetDib();// 初始化DIB   if (m_hDIB == NULL)// 判断读取文件是否成功   {   AfxMessageBox("读取图像时出错");// 提示出错   return FALSE;// 返回FALSE   }   SetPathName(lpszPathName);// 设置文件名称   SetModifiedFlag(FALSE);// 初始化脏标记为FALSE   return TRUE;// 返回TRUE
    2022-02-26 00:19:37下载
    积分: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
  • 带有服务端和客户端的VC++点对点,聊天及
    带有服务端和客户端的VC++点对点,聊天及数据传输源码,也就是大家熟悉的CS结构,一个是接收消息,一个是发送消息,在服务端和客户端都可以显示消息内容和连接状态。运行的最终效果请参见如图所示。   运行图是Server服务端的效果,客户端没有编译。   void CClientDlg::OnBottonsend()   {    UpdateData();    if (!m_strSend.IsEmpty())    m_client.Send(m_strSend,m_strSend.GetLength());    else    AfxMessageBox("发送内容不能为空!");   }
    2022-11-23 12:00:03下载
    积分:1
  • vc++windows大作业-猜数字游戏
    VC++ Windows课程设计源码作品:传统的猜数字游戏,编程学院大作业完整源代码。本游戏步骤:   分别在四个文本框内输入四个不同的四位数   按猜数字键猜测,得到结果,点答案键出答案,当4个文本框内的数字和位置都正确游戏胜利,自动进入下一轮答题,技巧:   玩家可以根据提示推断数字:   例 正确2个错误2个 说明有2个数字和位置都正确,2个数字正确但位置不正确    正确0个错误4个 说明有0个数字和位置都正确,4个数字正确但位置不正确   特色: 机器可以根据猜测的命中率不同显示不同的话   看完答案再答题会怎样呢? 试试就知道了~
    2023-06-14 23:05:04下载
    积分:1
  • VC6.0 对画图文档实行序列化处理
    VC6.0 文档序列化实例——对画图文档实行序列化处理,文挡之序列化(Serialize)读写例子,代码翻译:一剑。   // 打印带水平线的文档名字   pDC->SetTextAlign(TA_LEFT);   pDC->TextOut(0,-25, strHeader); // 1/4 inch down   // 在文档头的下面画一条直线横穿页面   TEXTMETRIC textMetric;   pDC->GetTextMetrics(&textMetric);   int y = -35 - textMetric.tmHeight; // 横线在距离文本下方1/10 英寸处   pDC->MoveTo(0, y); // 从左边空白处   pDC->LineTo(pInfo->m_rectDraw.right, y); // 到右边空白处   y -= 25;   pInfo->m_rectDraw.top += y;
    2023-04-28 14:50:03下载
    积分:1
  • VC 结合定时器隐藏进程一定时间
    VC++ 隐藏进程,这个例子结合了计时器来实现,不是永久隐藏,是隐藏进程一定时间,根据定时器返回的时间,重新显示进程。   要实现这个过程,可编写以下代码:   LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;   //加载RegisterServiceProcess函数所在的链接库   hDLL = LoadLibrary("KERNEL32");   //得到RegisterServiceProcess函数的地址   lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL, "RegisterServiceProcess");   //执行RegisterServiceProcess函数,在任务列表中隐藏程序   lpRegisterServiceProcess(GetCurrentProcessId(),1);   //卸载链接库   FreeLibrary(hDLL);   //设定定时器   SetTimer(0,m_nSeconds*1000,NULL);   //隐藏程序的同时,隐藏窗口   ShowWindow(SW_HIDE);   后续会卸载链接库,请下载源码查看源代码文件。
    2022-04-17 12:20:46下载
    积分:1
  • VC++ 6.0通过消息机制实现进程间的通信
    VC++ 6.0通过消息机制实现进程间的通信,这个实例写了两个子程序,一个是发送消息端,一个是接收消息端,接收端主要是接收其他进程向该窗口发送的消息,发送消息端获取目的窗口对象,向窗口“MYRECEIVER”发送自定义消息,若接收端没上线,则会使用AfxMessageBox弹出提示("没有找到MYRECEIVER窗口!"),更多源代码细节,请参考压缩包中的对应文件,最终的运行效果请参见截图所示。
    2022-10-26 09:30:07下载
    积分:1
  • VC++在视图中使用鼠标进行绘图操作(涂鸦)
    VC++ ——在视图中使用鼠标进行绘图操作(涂鸦),按下鼠标左键,载入"十字"光标,移动鼠标即可实现绘制图形,但窗口不能自动重绘,定义各变量及具体实现:   void CBaseDocViewDemo1View::OnLButtonDown(UINT nFlags, CPoint point)   {    SetCursor(m_Hcursor);//使用新光标    m_bDraw=TRUE;//进入绘图状态    m_pOld=point;    SetCapture();//捕捉鼠标    CRect rect;    GetClientRect(&rect);//获取客户窗口矩形区域    ClientToScreen(&rect);//转换为屏幕坐标    ClipCursor(rect);//限定鼠标不能移出客户窗口    CView::OnLButtonDown(nFlags, point);   }      void CBaseDocViewDemo1View::OnLButtonUp(UINT nFlags, CPoint point)   {    m_bDraw=FALSE;//取消绘图状态    ReleaseCapture();//释放鼠标捕捉    ClipCursor(NULL);//取消鼠标区域的限制    CView::OnLButtonUp(nFlags, point);   }
    2023-04-03 12:40:04下载
    积分:1
  • VC++ 使用IN引入子查询限定查询范围
    VC++ 使用IN引入子查询限定查询范围的方法+源代码实例,用以查询在指定条件区间中的数据,比如具体到本例子中,查询收入在1000到3000之间的员工数据,用到了子查询的方法,通过本例子源码的学习,你可学习到VC++基本的数据库连接方法和in子查询的方法,当然子查询有些高级,本源码还算简单。
    2022-10-30 06:05:03下载
    积分:1
  • 696516资源总数
  • 106752会员总数
  • 15今日下载