资源简介
左单击添加点
左双击完成图形闭合
右双击删除图形
右单击撤回一个点
鼠标靠进点可以修改图形
代码片段和文件信息
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# socket通信允许发送消息,图片,与
- c# 导出oracle数据库下所有表结构
- c# winform wia 调用扫描仪
- C#软件注册试用期限代码.zip
- C# 获取图片某像素点RGB565值
- 火币网REST API C#版
- 五子棋对战用C#编写的
- C#串口调试助手_VS2010()
- C# 软件注册期限验证代码
- C# 敏感字过滤 内含敏感字字典两个字
- Skyline开发入门C#
- C# 流数据旋转 90度 图像旋转 90度
- c# rgb565 转 rgb24
- c# 学生成绩管理系统
- C#实现USB设备通信
- C#使用NI-VISA控制仪器
- MODBUS TCP C# 源码 -- 测试过信捷PLC
- C# 增量式PID控制
- c# 动态编译代码 执行脚本代码 关键字
- C# 新手:在窗体上显示图片和文字
- 常用的7种 C# 遗传算法源码集
- C#设置和获取输入法一例 一个简单的
- c# icon 图标 特效 WINDOWS任务栏 动态生
- c# MJPEG STREAM SERVER AND CLIENT
- 基于控制台实现的贪吃蛇
- 学生成绩管理系统 c#+Access
- C#淘宝秒杀源码
- C#WEB上传控件多附件上传
- 深圳明华URF-R330读卡器 M1卡读写程序(
- C#透明窗体画图电子尺
评论
共有 条评论