社区
界面
帖子详情
VC++画直线
machiatto_Job
2010-02-04 09:41:38
不是《VC++深入详解》第四章讲的那种画法
书上讲的是松开鼠标左键之后才显示一条直线。
我想问的是按下鼠标左键就开始画 松开鼠标左键之后形成一条直线
就是开始-附件-画图里的画直线或WORD绘图里的画直线一样的功能。
...全文
589
16
打赏
收藏
VC++画直线
不是《VC++深入详解》第四章讲的那种画法 书上讲的是松开鼠标左键之后才显示一条直线。 我想问的是按下鼠标左键就开始画 松开鼠标左键之后形成一条直线 就是开始-附件-画图里的画直线或WORD绘图里的画直线一样的功能。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
loderunner
2010-02-04
打赏
举报
回复
橡皮筋技术,网上资料很多
Sou2012
2010-02-04
打赏
举报
回复
WM_LBUTTONDOWN 记录起点
WM_LBUTTONUP 记录终点
UP的时候,画一条直线!
m_nNightmire
2010-02-04
打赏
举报
回复
楼主的意思是,根据鼠标移动,实时显示直线最终形状?
那样你每次移动鼠标都要擦除原有背景
admirxue
2010-02-04
打赏
举报
回复
WM_MOUSEMOVE
向立天
2010-02-04
打赏
举报
回复
设置一个标志变量
鼠标左键按下时将其职为真
同时保存鼠标落点作为线段起点
SetCapture
在OnMouseMoving里
当标志变量为真时就绘制一条从起点到当前点的直线
这里注意要擦除先前绘制的直线
鼠标左键抬起的消息中
标志变量置甲
ReleaseCapture
当然具体编程的时候还有一些细节需要处理
不过大概思路就是这样了
hufen2740
2010-02-04
打赏
举报
回复
//WM_MOUSEMOVING中调用这个函数 m_bReDraw DOWN的时候置成TRUE UP的时候为FALSE 你吧矩形画法换成直线画法就可以了
void XXX::DrawDashRectangle(CPoint point)
{
CDC *pDc = GetWindowDC();
CPen pen(PS_DASH,1,(COLORREF)0x0);
CPen* pOldPen = pDc->SelectObject(&pen);
pDc->SetROP2(R2_NOTXORPEN);
if (m_bReDraw)
{
pDc->Rectangle(m_ptTemp.x, m_ptTemp.y, m_nWidth, m_nHeight);
}
m_ptTemp = point;
pDc->Rectangle(m_ptTemp.x, m_ptTemp.y, m_nWidth, m_nHeight);
pDc->SelectObject(&pOldPen);
ReleaseDC(pDc);
}
Eleven
2010-02-04
打赏
举报
回复
WM_MOUSEMOVE
hufen2740
2010-02-04
打赏
举报
回复
你要的不就是弹簧线呗
jianghandaxue
2010-02-04
打赏
举报
回复
把这个消息加上去:WM_MOUSEMOVE事件中先删除前一条线,再画新的线
vclongking
2010-02-04
打赏
举报
回复
开始一样 在WM_LBUTTONDOWN消息里面记录起始坐标 然后直接在WM_MOUSEMOVE里面添加画直线函数
magic7004
2010-02-04
打赏
举报
回复
在WM_LBUTTONDOWN事件中记录起点坐标,然后做一个开始画线的标志
在WM_MOUSEMOVE事件中先删除前一条线,再画新的线
在WM_LBUTTONUP事件中,取消开始画线的标志就可以了。
jianghandaxue
2010-02-04
打赏
举报
回复
你需要的是windows自带的画图工具画直线那样是吧?
如果是这样的话,那么光一个鼠标左键写实现是不够的,你还必须加一个鼠标响应移动的实现,也就是说,当你的鼠标在视图中不断在移动时,直线实时的现实绘画!
machiatto_Job
2010-02-04
打赏
举报
回复
自己做沙发
「已注销」
2010-02-04
打赏
举报
回复
橡皮筋线嘛,用异或笔
wwgddx
2010-02-04
打赏
举报
回复
void CMyDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
static int a=0;
static int x=0;
static int y=0;
if(GetKeyState(VK_LBUTTON) & 0x80000000)
{
CDC* pDC=GetDC();
if(a == 1)
{
pDC->MoveTo(x, y);
pDC->LineTo(point.x, point.y);
}
a=1;
x=point.x;
y=point.y;
}
else
a=0;
CDialog::OnMouseMove(nFlags, point);
}
这个可以
天下第一好大人
2010-02-04
打赏
举报
回复
橡皮条,SetRop2
ListExam v
c++
画
直线
这是用V
c++
画
直线
的一个最简单的方法,不仅可以
画
直线
,还可以改变
画
笔的颜色,也有很多的语法知识。
v
c++
画
直线
,圆等图形,有选择,移动,删除等功能
v
c++
画
直线
,圆,多边形等多种图形,有选择,移动,删除,填充等功能
V
C++
期货CTP量化交易
基于V
C++
环境下,利用上期CTP系统,开启期货量化交易之旅。 V
C++
开发环境的搭建、项目目录文件命名规范。通过登录界面学习MFC向导,按钮文本复选框搭建登录界面。CTP接口的介绍认识、CTP接口实现。 进度函数分层架构...
windows V
C++
画
直线
1.以鼠标左键的按下为"起点",保持按下状态,移动鼠标,直到放开鼠标键作为"终点",
画
一条静态
直线
. 2.在鼠标移动过程中应该从"起点"向鼠标的"当前位置"
画
一条动态的
直线
.绘制动态
直线
的方法是,先删除前一条
直线
,然后
画
...
v
c++
画
直线
、圆等图形
简单的v
c++
运用,
画
直线
和圆等图形,能够设置
画
图的一些属性
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章