c#画平行线和垂线的代码
参考如下绘制平行线的代码
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#画平行线和垂线的代码相关推荐
- 6种不同画法画平行线_平行线的画法
以下是小编为大家搜集提供出来的关于平行线的画法教学设计,欢迎大家阅读参考学习哈!希望对大家有所帮助哦,更多相关信息内容请关注大学网平行线的画法:师:我们上一节课学习了垂直并且会画垂直线,这节课我们来认 ...
- 6种不同画法画平行线_平行线的画法教学反思(通用3篇)
平行线的画法教学反思(通用3篇) 作为一名优秀的人民教师,我们的任务之一就是课堂教学,教学的心得体会可以总结在教学反思中,来参考自己需要的教学反思吧!下面是小编整理的平行线的画法教学反思(通用3篇), ...
- python 画三维函数图-如何用Matplotlib 画三维图的示例代码
最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散 ...
- python画三维立体图-如何用Matplotlib 画三维图的示例代码
用Matplotlib画三维图 最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平 ...
- python怎样画立体图-如何用Matplotlib 画三维图的示例代码
用Matplotlib画三维图 最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平 ...
- css3半圆弧线,css3实现画半圆弧线的示例代码
本文介绍了css3实现画半圆弧线的示例代码,分享给大家,具体如下: css代码 .circle1 { width: 100px; height: 200px; border: 1px solid bl ...
- python画三维立体图完整代码_如何用Matplotlib 画三维图的示例代码
最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散 ...
- 6种不同画法画平行线_[平行线的画法]平行线的画法
篇一 : 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎么画 平行线的画法 平行线怎 ...
- 6种不同画法画平行线_活动《平行线的画法》
数学活动<平行线的画法> 活动目标: 1 . 通过活动探究巩固熟悉平行线的判定方法, 能正确地画出已知直线的平行线, 并能用 平行线的判定方法说明依据. 2 . 采用多种方法画平行线, 让 ...
最新文章
- 完胜BERT!谷歌NLP预训练利器:小模型也有高精度,单个GPU就能训练 | 代码开源...
- CenterNet 读书笔记
- 线性表实现一元多项式的表示及相加(C语言实现)【线性表】
- Java集合之ArrayList
- 如何通过outlet在SAP Spartacus的产品明细页面插入自定义UI
- 自控matlab设计,自动控制原理课程设计--基于MATLAB软件的自动控制系统仿真
- vim插件之cscope的安装与配置
- 分数的拆分原理和方法_常见的节税原理你知道吗?
- UIControl IOS控件编程
- ★LeetCode(39)——组合总和(JavaScript)
- CCF201412-2 Z字形扫描(100分)
- 图论复习(各类习题)
- mysql rm-rf_rm-rf误操作的恢复过程
- 向flume发送消息出现Client sent event exceeding the maximum length
- Selenium中的隐式等待和显式等待
- 【OpenMMLab AI实战营 学习笔记 DAY(四)-- 目标检测基础知识及评估方法】
- 理财入门之萌萌赚钱观
- 张兴华:云端架构助力企业快速成长
- win10右键创建md文件
- ubuntu安装androidstudio
热门文章
- Android 圆形头像/有外边框的圆形头像CircleImageView自定义控件使用详解
- 【C语言】之实现简易的学生信息管理系统
- Python爬虫-从pixabay网站爬取并下载图片
- Delete Contacts——滑动删除或批量删除通讯录中联系人的收费越狱插件
- 保弘实业|个人理财如何树立正确的理财观念
- 梦幻模拟战手游最新服务器,《梦幻模拟战手游》新手开服必读,五分钟教你成为高端玩家...
- ios判断字符串里面是否有分号,逗号,破折号,句号,省略号
- 电容笔和Apple pencil的区别有哪些?十大电容笔知名品牌
- 学生/上班族摸鱼好选择
- 通过爬虫等手段,免费获取非小号和coinmarket的实时汇率等行情数据