欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

VC++在两个按钮之间连直线和折线

发布时间:2025/4/14 c/c++ 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 VC++在两个按钮之间连直线和折线 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在两个按钮之间连线;按钮大小都一样;如果按钮完全平行,连直线;如果按钮不平行,连的是一条折线;

对话框工程;先设计界面;

按钮大小做成一样;button1和3,2和4,左端对齐; 1和2,顶端对齐;3和4,顶端错开一个距离;

然后编写代码;最终效果如下;想要实现的效果是把线连到按钮边的中点;是按此思路写的代码,最终实现效果有些差距;下面来看一下代码,并分析原因;

对话框头文件加入如下变量;

CRect crect1;int w;int h;int top1;int top2;int top3;int top4;int left1;int left2;int left3;int left4;int wz, hz;CDC *pDC;

w,按钮宽度;h,高度;top1-4,四个按钮顶部距离父窗口顶边的距离,像素;left1-4,4个按钮的左边距,距离父窗口;wz,连的是折线时,折线第一段的长度;折线有三段,第一段和第三段长度一样;第二段指中间竖立的一小段;

第一条线的起点,x坐标是,left1加上w,y坐标是,top1 + h/2;看上去没错;x坐标,按钮1的左边距加上按钮的宽度;y坐标,按钮1的顶部边距,加上按钮高度的一半;其他计算类似;中间一小段折线的长度是,(top4 - top3)/2;

对话框OnInitDialog()函数做初始化;

GetDlgItem(IDC_BUTTON1)->GetWindowRect(crect1); w = crect1.Width();h = crect1.Height();top1 = crect1.top;left1 = crect1.left;GetDlgItem(IDC_BUTTON2)->GetWindowRect(crect1);top2 = crect1.top;left2 = crect1.left;GetDlgItem(IDC_BUTTON3)->GetWindowRect(crect1);top3 = crect1.top;left3 = crect1.left;GetDlgItem(IDC_BUTTON4)->GetWindowRect(crect1);top4 = crect1.top;left4 = crect1.left;pDC = GetDC();

    获取各变量的值,获取设备描述表指针以备绘图;

四个按钮的单击代码;运行起来,单击按钮1,再单击按钮2,绘第一条线;单击按钮3,再单击按钮4,绘第二条线;

void CzhexiandemoDlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码int x = 0,y=0;x = left1 + w;y = top1 + h / 2;pDC->MoveTo(x, y); }void CzhexiandemoDlg::OnBnClickedButton2() {// TODO: 在此添加控件通知处理程序代码int x = 0, y = 0;x = left2;y = top2 + h / 2;pDC->LineTo(x, y); }void CzhexiandemoDlg::OnBnClickedButton3() {// TODO: 在此添加控件通知处理程序代码int x = 0;x = left3 + w;int y = 0;y = top3 + h / 2;wz = (left4 - left3 - w) / 2;pDC->MoveTo(x, y);pDC->LineTo(x + wz, y); }void CzhexiandemoDlg::OnBnClickedButton4() {// TODO: 在此添加控件通知处理程序代码hz = (top4 - top3) / 2;pDC->LineTo(left3 + w + wz, top3 + h / 2 + hz);pDC->LineTo(left4, top3 + h / 2 + hz); }

但是连线的起点和终点的y坐标没有定位到按钮边的中点;

可能是VC++的窗体坐标系还未完全简化,距离窗体顶部的像素大小包含窗口标题条在内;C# winform 是什么情况有时间可以看一下;

有时间再继续;可以把连线绘制为箭头,实现终点随鼠标移动的动态提示线等;

总结

以上是生活随笔为你收集整理的VC++在两个按钮之间连直线和折线的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。