资源简介
左单击添加点
左双击完成图形闭合
右双击删除图形
右单击撤回一个点
鼠标靠进点可以修改图形
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DrawPolygon
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Setstyle(Controlstyles.UserPaint true);
Setstyle(Controlstyles.AllPaintingInWmPaint true); // 禁止擦除背景.
Setstyle(Controlstyles.DoubleBuffer true); // 双缓冲
}
List ListPolyon = new List();
List _tempPolyon = new List();
Point _tempPoint = new Point();
bool IsDrawPolyonstart = false;
bool IsEdit = false;
int SelectListIndex = 0;
int SelectRc = 0;
public float isLeft1(Point P0 Point P1 Point P2)
{
float abc = ((P1.X - P0.X) * (P2.Y - P0.Y) - (P2.X - P0.X) * (P1.Y - P0.Y));
return abc;
}
private bool PointInFences(Point pnt1 Point[] fencePnts)
{
int wn = 0 j = 0; //wn 计数器 j第二个点指针
for (int i = 0; i < fencePnts.Length; i++)
{//开始循环
if (i == fencePnts.Length - 1)
j = 0;//如果 循环到最后一点 第二个指针指向第一点
else
j = j + 1; //如果不是 ,则找下一点
if (fencePnts[i].Y <= pnt1.Y) // 如果多边形的点 小于等于 选定点的 Y 坐标
{
if (fencePnts[j].Y > pnt1.Y) // 如果多边形的下一点 大于于 选定点的 Y 坐标
{
if (isLeft1(fencePnts[i] fencePnts[j] pnt1) > 0)
{
wn++;
}
}
}
else
{
if (fencePnts[j].Y <= pnt1.Y)
{
if (isLeft1(fencePnts[i] fencePnts[j] pnt1) < 0)
{
wn--;
}
}
}
}
if (wn == 0)
return false;
else
return true;
}
private void pictureBox1_MouseDoubleClick(object sender MouseEventArgs e)
{
if (!IsDrawPolyonstart)
{
if (_tempPolyon.Count <= 2)
{
MessageBox.Show(“多边形至少三个点“);
return;
}
IsDrawPolyonstart = true;
_tempPolyon.Add(new Point(e.X e.Y));
_tempPolyon.Add(_tempPolyon[0]);
ListPolyon.Add(_tempPolyon.ToArray());
_tempPolyon = new List();
}
if (IsDrawPolyonstart && e.Button == MouseButtons.Right)
{
for (int i =
相关资源
- C# OCR数字识别实例,采用TessnetOcr,对
- 考试管理系统 - C#源码
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
- 基于c#的实验室设备管理系统621530
评论
共有 条评论