绘制线条基本代码:

变量:

CPoint m_ptOrigin;//起点坐标
bool m_bTrue;//检查鼠标左键是否按下
CPoint m_ptOldOrigin;//记录上一次绘制终点坐标,用于绘制边界线

初始化:

m_ptOrigin = 0;
m_bTrue = false;
m_ptOldOrigin = 0;

代码实现:

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
  // TODO: Add your message handler code here and/or call default

m_ptOrigin = point;//每一次鼠标按下时都将当前位置设置为起点

m_bTrue = true;

CView::OnLButtonDown(nFlags, point)

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
  // TODO: Add your message handler code here and/or call default
  m_bTrue = false;

  CView::OnLButtonUp(nFlags, point);
}

void CDrawView::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
//创建一个红色的、宽度为1的实线画笔
CPen pen(PS_SOLID,1,RGB(255,0,0));
//把创建的画笔选入设备描述表
CPen *pOldPen = dc.SelectObject(&pen);
if(m_bTrue == true)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.LineTo(m_ptOldOrigin);
//m_ptOrigin = point;
m_ptOldOrigin = point;
}
//恢复设备描述表
dc.SelectObject(pOldPen);

  CView::OnMouseMove(nFlags, point);
}

效果如图所示:

       问题在于:绘制扇形前总是会绘制一条线,如果我想绘制两个扇形,当前扇形总是会在绘制新的扇形前绘制一条线,如第一个扇形与坐标原点之间就有一条线,问题出在哪里呢?

      运行效果表明,我用于绘制边界线的起点坐标变量保留了原始坐标值(或上一次绘制结束时的坐标),因此,我们在每次绘制之前需要初始化鼠标按下时的坐标为绘制边界线的起点坐标。

      这样当我绘制一个多个扇形时就不会出现线条了。

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
  // TODO: Add your message handler code here and/or call default

m_ptOrigin = point;//每一次鼠标按下时都将当前位置设置为起点
// m_ptOldOrigin = point;
m_bTrue = true;

  CView::OnLButtonDown(nFlags, point)

}

 

如果有疑问,可以联系giserdev@163.com,更多内容请参考:http://www.cnblogs.com/mxbs/,技术交流请加QQ群:586571286。

绘制扇形效果线条小Bug解决的更多相关文章

  1. 20150203一些移动端H5小bug解决

    都是一些我也不知道为什么会有的bug. 1. 在三星note2,小米2,页面加载后,页面有黑块. 那么提高被盖住的部分z-index. 2. iphone5 ,ios7.0.4,上文字显示不出 那么就 ...

  2. ECMall——安装时的小bug解决办法

    第一次安装ECmall,安装了好多遍,总是出现Strict Standards: Non-static method这样的错误,折腾了五六遍,还是安装不上,仍然是类似的错误.气愤!于是上百度查:Ecm ...

  3. MDK5.01百度云下载,安装微软雅黑混合字体,字体效果很棒,解决显示中文的BUG

    微软雅黑字体http://pan.baidu.com/s/1nt9Epuh 初步尝试,以前的小BUG都已经解决了.下面是安装雅黑字体后的字体效果,很爽.第一步:安装雅黑字体.第二步:选择Edit--- ...

  4. 解决JqueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug

    前些日子不是在做 使用Jquery-UI实现一次拖拽多个选中的元素操作嘛,在持续完善这个组件时遇到了一个关于拖放排序的bug.今天就着图片和代码重现一下,也顺便告诉大家如何解决这个问题. 首先先上图描 ...

  5. Android较低版本(<5.2) 页面默认Select选择框效果的BUG解决

    Bug描述: 使用低版本安卓(<5.2),在微信上打开网页,点击下拉框,会出现如下图所示的用来展示select选项的弹出框: 在选项较少的时候,可以向下滑动,将选项滑到底部 滑动前: 滑动后: ...

  6. 用 parseInt()解决的 小 bug

    在做轮播模块的时候遇到问题是:你在 连续指示小按钮 时候再去 只有 点击 下一张按钮,出现bug: 指示小按钮的 className 当前显示的 calssName 为 undefined ! // ...

  7. 浏览器css bug及bug解决方法

    Bugs及解决方案列表(以下实例默认运行环境都为Standard mode): 如何在IE6及更早浏览器中定义小高度的容器? 方法: #test{overflow:hidden;height:1px; ...

  8. Flutter实战视频-移动电商-34.列表页_小BUG的修复

    34.列表页_小BUG的修复 当高粱酒的子类没有数据返回的时候就会报错. 解决接口空数据报错的问题 没有数据的时候,给用户一个友好的提示, 我们没有数据的时候还要告诉用户,提示一下他没有数据,在我们的 ...

  9. SlidingMenu addIgnoreView() 无效的bug解决方法

    ## 感谢大佬:https://blog.csdn.net/fuchaosz/article/details/51513288 1 简介 最近在做侧滑的时候用到了SlidingMenu,在MainAc ...

随机推荐

  1. 日常css技巧小结(1)--背景透明度改变对内容无影响

    刚开始出现的错误,内容会受到背景透明度改变的影响:如图: 代码: <!DOCTYPE html> <html lang="en"> <head> ...

  2. C语言之链表list

    #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h& ...

  3. 用VS Code写Python程序

    安装python 常见的Linux发行版本中已经安装了python,而且可能不止一个版本,以Ubuntu14.04为例,预装的python有2个版本,分别是2.7.6和3.4.3,python2和py ...

  4. 福利到!Rafy(原OEA)领域实体框架 2.22.2067 发布!

    距离“上次框架完整发布”已经过去了一年半了,应群中的朋友要求,决定在国庆放假之际,把最新的框架发布出来,并把帮助文档整理出来,这样可以方便大家快速上手.   发布内容 注意,本次发布,只包含 Rafy ...

  5. Github Pages和Hexo创建静态博客网站

    Github Pages和Hexo创建静态博客网站 安装Node.js 本人是window环境,所以下载window版. 下载地址:https://nodejs.org/en/download/ 下载 ...

  6. php中实现的一个curl批处理的实例

    curl是利用URL语法在命令行方式下工作的开源文件传输工具 本文在php中实现了的一个curl批处理的实例. 代码如下: header("Content-Type:text/html;ch ...

  7. 2016年最新mac下vscode配置golang开发环境支持debug

    网上目前还找不到完整的mac下golang环境配置支持,本人配置成功,现在整理分享出来. mac最好装下xcode,好像有依赖关系安装Homebrew打开终端窗口, 粘贴脚本执行/usr/bin/ru ...

  8. quartz定时+log4net日志+exchangeservice发邮件

    main using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...

  9. jdk顺序表笔记

    一.AbstractCollection 提供了集合的最大实现 继承该类,必须实现size()和iterator(),因为该类操作集合都是通过iterator 二.fail-fast策略 该策略在集合 ...

  10. 浅谈Hybrid技术的设计与实现第二弹

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...