参考如下绘制平行线的代码
private Point downPoint = Point.Empty; // 鼠标按下的坐标
private Point movePoint = Point.Empty; // 鼠标移动的坐标
private double lineSpace = 12.0f; // 线条之间的距离
private Point offsetPointA = Point.Empty; // 偏移坐标A
private Point offsetPointB = Point.Empty; // 偏移坐标B
private double PointToAngle(Point AOrigin, Point APoint)
{if (APoint.X == AOrigin.X)if (APoint.Y > AOrigin.Y)return Math.PI * 0.5f;else return Math.PI * 1.5f;else if (APoint.Y == AOrigin.Y)if (APoint.X > AOrigin.X)return 0;else return Math.PI;else{double Result = Math.Atan((double)(AOrigin.Y - APoint.Y) /(AOrigin.X - APoint.X));if ((APoint.X < AOrigin.X) && (APoint.Y > AOrigin.Y))return Result + Math.PI;else if ((APoint.X < AOrigin.X) && (APoint.Y < AOrigin.Y))return Result + Math.PI;else if ((APoint.X > AOrigin.X) && (APoint.Y < AOrigin.Y))return Result + 2 * Math.PI;else return Result;}
} /* PointToAngle */
private void Form1_MouseDown(object sender, MouseEventArgs e)
{downPoint = e.Location;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{if (downPoint != Point.Empty){Graphics vGraphics = CreateGraphics();if (movePoint != Point.Empty){vGraphics.DrawLine(new Pen(BackColor), offsetPointA,new Point(movePoint.X + offsetPointA.X - downPoint.X,movePoint.Y + offsetPointA.Y - downPoint.Y));vGraphics.DrawLine(new Pen(BackColor), offsetPointB,new Point(movePoint.X + offsetPointB.X - downPoint.X,movePoint.Y + offsetPointB.Y - downPoint.Y));vGraphics.DrawLine(new Pen(BackColor), downPoint, movePoint);}movePoint = e.Location;double angle = PointToAngle(downPoint, movePoint);offsetPointA.X = (int)(Math.Cos(angle + 0.5f * Math.PI) * lineSpace + downPoint.X);offsetPointA.Y = (int)(Math.Sin(angle + 0.5f * Math.PI) * lineSpace + downPoint.Y);offsetPointB.X = (int)(Math.Cos(angle - 0.5f * Math.PI) * lineSpace + downPoint.X);offsetPointB.Y = (int)(Math.Sin(angle - 0.5f * Math.PI) * lineSpace + downPoint.Y);vGraphics.DrawLine(Pens.Red, offsetPointA, new Point(movePoint.X + offsetPointA.X - downPoint.X,movePoint.Y + offsetPointA.Y - downPoint.Y));vGraphics.DrawLine(Pens.Red, offsetPointB,new Point(movePoint.X + offsetPointB.X - downPoint.X,movePoint.Y + offsetPointB.Y - downPoint.Y));        vGraphics.DrawLine(Pens.Blue, downPoint, movePoint);vGraphics.Dispose();}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{downPoint = Point.Empty;
}
垂线的代码只要参照如上代码将角度旋转90度即可

c#画平行线和垂线的代码相关推荐

  1. 6种不同画法画平行线_平行线的画法

    以下是小编为大家搜集提供出来的关于平行线的画法教学设计,欢迎大家阅读参考学习哈!希望对大家有所帮助哦,更多相关信息内容请关注大学网平行线的画法:师:我们上一节课学习了垂直并且会画垂直线,这节课我们来认 ...

  2. 6种不同画法画平行线_平行线的画法教学反思(通用3篇)

    平行线的画法教学反思(通用3篇) 作为一名优秀的人民教师,我们的任务之一就是课堂教学,教学的心得体会可以总结在教学反思中,来参考自己需要的教学反思吧!下面是小编整理的平行线的画法教学反思(通用3篇), ...

  3. python 画三维函数图-如何用Matplotlib 画三维图的示例代码

    最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散 ...

  4. python画三维立体图-如何用Matplotlib 画三维图的示例代码

    用Matplotlib画三维图 最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平 ...

  5. python怎样画立体图-如何用Matplotlib 画三维图的示例代码

    用Matplotlib画三维图 最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平 ...

  6. css3半圆弧线,css3实现画半圆弧线的示例代码

    本文介绍了css3实现画半圆弧线的示例代码,分享给大家,具体如下: css代码 .circle1 { width: 100px; height: 200px; border: 1px solid bl ...

  7. python画三维立体图完整代码_如何用Matplotlib 画三维图的示例代码

    最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散 ...

  8. 6种不同画法画平行线_[平行线的画法]平行线的画法

    篇一 : 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎 ...

  9. 6种不同画法画平行线_活动《平行线的画法》

    数学活动<平行线的画法> 活动目标: 1 . 通过活动探究巩固熟悉平行线的判定方法, 能正确地画出已知直线的平行线, 并能用 平行线的判定方法说明依据. 2 . 采用多种方法画平行线, 让 ...

最新文章

  1. 完胜BERT!谷歌NLP预训练利器:小模型也有高精度,单个GPU就能训练 | 代码开源...
  2. CenterNet 读书笔记
  3. 线性表实现一元多项式的表示及相加(C语言实现)【线性表】
  4. Java集合之ArrayList
  5. 如何通过outlet在SAP Spartacus的产品明细页面插入自定义UI
  6. 自控matlab设计,自动控制原理课程设计--基于MATLAB软件的自动控制系统仿真
  7. vim插件之cscope的安装与配置
  8. 分数的拆分原理和方法_常见的节税原理你知道吗?
  9. UIControl IOS控件编程
  10. ★LeetCode(39)——组合总和(JavaScript)
  11. CCF201412-2 Z字形扫描(100分)
  12. 图论复习(各类习题)
  13. mysql rm-rf_rm-rf误操作的恢复过程
  14. 向flume发送消息出现Client sent event exceeding the maximum length
  15. Selenium中的隐式等待和显式等待
  16. 【OpenMMLab AI实战营 学习笔记 DAY(四)-- 目标检测基础知识及评估方法】
  17. 理财入门之萌萌赚钱观
  18. 张兴华:云端架构助力企业快速成长
  19. win10右键创建md文件
  20. ubuntu安装androidstudio

热门文章

  1. Android 圆形头像/有外边框的圆形头像CircleImageView自定义控件使用详解
  2. 【C语言】之实现简易的学生信息管理系统
  3. Python爬虫-从pixabay网站爬取并下载图片
  4. Delete Contacts——滑动删除或批量删除通讯录中联系人的收费越狱插件
  5. 保弘实业|个人理财如何树立正确的理财观念
  6. 梦幻模拟战手游最新服务器,《梦幻模拟战手游》新手开服必读,五分钟教你成为高端玩家...
  7. ios判断字符串里面是否有分号,逗号,破折号,句号,省略号
  8. 电容笔和Apple pencil的区别有哪些?十大电容笔知名品牌
  9. 学生/上班族摸鱼好选择
  10. 通过爬虫等手段,免费获取非小号和coinmarket的实时汇率等行情数据