条件: 1、从屏幕上通过鼠标随机输入一条线,至少3个线段。
2、通过对话框输入2个垂距(A和B)。
结果: 生成与输入线平行的二条线(两侧各一条) 与输入线的距离分别为已输入的垂距。、
、
各位大侠最好能给个源代码。小弟在此叩谢了
2、通过对话框输入2个垂距(A和B)。
结果: 生成与输入线平行的二条线(两侧各一条) 与输入线的距离分别为已输入的垂距。、
、
各位大侠最好能给个源代码。小弟在此叩谢了
解决方案 »
- 删除RichTextBox中的超过100行的日志信息,并保持各行已有的颜色
- 请教linq to xml 绑定datagrid的问题(wpf)
- MDI子窗体
- c#里调用js函数
- 关于窗口获取焦点的问题(C/S)
- 问个很老的问题,但我不会:在vs2005里,一个文件夹下的类访问另一个文件夹下的类!
- DataGrid绑定数据源中类型为DateTime的数据,为什么显示出来后时间没了。
- 这么用PB下的这个dll文件(很多人看过了,不知道怎么来用.请高手帮忙)
- 有关联合的问题(自觉问题很深刻,懂不懂的都可以近来看看,相互学习)
- 控制台使用HttpClient服务器无法获取到数据
- 修改自动重启后程序的相关属性
- datagridview
类型: 招聘应试题目/试用期考核题/实习期练习题
等级: C
语言: 自选
条件: 1、从屏幕上通过鼠标随机输入一条线,至少3个线段。(如下图 黑色 部分)
2、通过对话框输入2个垂距(A和B)。
结果: 生成与输入线平行的二条线(如下图 红色和蓝色 部分);
与输入线的距离分别为已输入的垂距。
示例:
我只能做到画平行线。public partial class UserControl1 : UserControl {
const int POINTCOUNT = 3;
public UserControl1() {
InitializeComponent(); Init();
} int _verticalDistance1 = 30;
/// <summary>
/// 垂距1
/// </summary>
public int VerticalDistance1 {
get { return _verticalDistance1; }
set { _verticalDistance1 = value; }
} int _verticalDistance2 = 10;
/// <summary>
/// 垂距2
/// </summary>
public int VerticalDistance2 {
get { return _verticalDistance2; }
set { _verticalDistance2 = value; }
} List<Point> _pointList; void Init() {
_pointList = new List<Point>();
} protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics; for (int i = 0; i < _pointList.Count - 1; i++) {
Point item1 = _pointList[i];
Point item2 = _pointList[i + 1]; g.DrawLine(new Pen(Color.Red, 3), item1, item2); double aaa = Math.Sqrt(Math.Pow(item1.X - item2.X, 2) + Math.Pow(item1.Y - item2.Y, 2)); int x = (int)(_verticalDistance1 * Math.Abs(item1.Y - item2.Y) / aaa);
int y = (int)(_verticalDistance1 * Math.Abs(item1.X - item2.X) / aaa); g.DrawLine(new Pen(Color.Blue, 3), item1.X + x, item1.Y + y, item2.X + x, item2.Y + y);
}
base.OnPaint(e);
} protected override void OnMouseDown(MouseEventArgs e) {
if (_pointList.Count > POINTCOUNT) {
_pointList.Clear();
goto PAINT;
} Point temp = _pointList.SingleOrDefault(f => f.X == e.X && f.Y == e.Y);
if (temp.X != 0) {
goto PAINT;
}
_pointList.Add(e.Location); PAINT:
Invalidate(); base.OnMouseDown(e);
} protected override void OnMouseUp(MouseEventArgs e) { Point temp = _pointList.SingleOrDefault(f => f.X == e.X && f.Y == e.Y);
if (temp.X != 0) {
goto PAINT;
} _pointList.Add(e.Location); PAINT:
base.OnMouseUp(e);
} }
#7楼谢的真快,一看就知道没分辨能力,CSDN上什么是自己用心的回复,什么是随便搜索答案复制来的,有点能力的就能分辨出来。(这里的论坛标兵就是复制大王)。最后如果已经超过有效期了,我就不管了,虽然这题很简单,不过要做也得花费不少时间啊。