给图片加热点是web开发中经常用到的一个功能。这方面的工具也不少。

为了更好的满足自己的需求,写了一个winform程序。

可以方便的给图片加热点,更方便灵活!

源码下载 http://download.csdn.net/download/qq_29939347/10150681

生成的代码:

 <img src = "D:\12.jpg" usemap = "#Map_2017-12-08-10-49-17" >
<map name="Map_2017-12-08-10-49-17" >
<area shape="polygon" coords="144,229,228,198,266,152,305,181,319,247,405,288,396,324,353,348,340,381,307,391,278,395,280,422,291,427,279,444,284,453,264,461,225,444,187,452,133,465,102,454,90,459,55,459,50,432,17,412,15,395,0,373,11,372,13,310,45,320,83,311,122,301,136,278" href = "http://www.sina.com.cn/" >
<area shape="polygon" coords="784,426,768,475,787,491,815,491,833,475,854,452,863,435,881,418,903,396,867,390,855,408,842,416,830,401" href = "https://www.cnblogs.com/" >
<area shape="polygon" coords="39,474,322,474,322,663,39,663" href = "" >
<area shape="polygon" coords="427,322,567,341,623,322,673,295,681,275,672,257,698,248,746,227,803,173,770,154,721,165,732,126,766,99,768,48,759,22,779,12,786,39,806,49,824,55,844,50,855,87,857,99,821,154,842,181,831,198,889,260,845,301,817,321,740,318,722,348,676,389,655,413,640,433,591,422,589,472,543,432,550,400,505,417,467,382,435,370" href = "" >
</map>

技术要点

1 画图

热点图形有 矩形,多边形,圆形等。为了统一处理,定义了接口:

 interface IDrwaShap
{
void Draw(System.Drawing.Graphics g);
string GetLink();
bool Hit(int x, int y);
bool IsChecked();
void SetChecked(bool sel);
void SetEndPoint(System.Drawing.Point end);
void SetLink(string link); void AddPoint(int x,int y); void SetStartMovePoint(int x, int y);
void SetCurMovePoint(int x, int y); int GetShapId(); List<Point> GetPoint(); }

矩形实现类为HotShapRect,多边形为HotShapPoly。

  class HotShapPoly : PicHot.IDrwaShap
{
static Pen _drawPen = new Pen(Color.Red, 2);
static Pen _checkedPen = new Pen(Color.Blue, 2); public int _shapId = 0;
private bool _checked = false;
private bool _startMove = false; private Point _moveStartPoint = new Point(0, 0);
string _linkText = string.Empty; List<Point> _listPoint = new List<Point>();
public HotShapPoly()
{
_shapId = AppNum.GetId();
}
public int GetShapId()
{
return _shapId;
} public List<Point> GetPoint()
{
return _listPoint;
}
public void AddPoint(int x, int y)
{
Point newPt = new Point(x,y);
foreach (Point p in _listPoint)
{
if (p == newPt)
return;
} _listPoint.Add(new Point(x, y));
} public void SetLink(string link)
{
_linkText = link;
}
public string GetLink()
{
return _linkText;
}
public void SetEndPoint(Point end)
{
AddPoint(end.X, end.Y);
} public void SetChecked(bool sel)
{
_checked = sel;
_startMove = _checked;
} public bool IsChecked()
{
return _checked;
} public void SetStartMovePoint(int x, int y)
{
_moveStartPoint = new Point(x, y);
}
public void SetCurMovePoint(int x, int y)
{
if (!_startMove)
return; Point moveEndPoint = new Point(x, y);
List<Point> _listPointNew = new List<Point>();
foreach (Point p in _listPoint)
{
int m = p.X + (moveEndPoint.X - _moveStartPoint.X);
int n = p.Y + (moveEndPoint.Y - _moveStartPoint.Y);
_listPointNew.Add(new Point(m,n));
}
_listPoint = _listPointNew; _moveStartPoint = moveEndPoint;
} public void Draw(Graphics g)
{
if (_listPoint.Count <= 2)
return ; Pen pen = _checked ? _checkedPen : _drawPen; g.DrawPolygon(pen, _listPoint.ToArray());
} internal bool IsValidate()
{
if (_listPoint.Count <= 2)
return false;
return true;
} }

2 生成代码

  private void buttonCreateHtml_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
MessageBox.Show(this, "代码已复制到剪贴板!");
}

技术交流联系qq 13712486

一个web图片热点生成工具(winform开发) 附源码的更多相关文章

  1. 我用 Python 撸了一个 plist 图集拆图工具!附上github源码

    这些年,我一直在使用 JavaScript .CocosCreator 做开发,只要是他们不能解决的,我都不太愿意去弄,或者说是不太情愿去做.真的是手中有把锤子,看什么都是钉子,越是熟悉一样东西,越容 ...

  2. 免费美女视频聊天,多人视频会议功能加强版本(Fms3和Flex开发(附源码))

    Flex,Fms3系列文章导航 Flex,Fms3相关文章索引 本篇是视频聊天,会议开发实例系列文章的第4篇,该系列所有文章链接如下: http://www.cnblogs.com/aierong/a ...

  3. Android 音视频深入 九 FFmpeg解码视频生成yuv文件(附源码下载)

    项目地址,求star https://github.com/979451341/Audio-and-video-learning-materials/tree/master/FFmpeg(MP4%E8 ...

  4. 用Python生成组织机构代码,附源码

    #!/usr/bin/python import random def haoma(): ww = [3,7,9,10,5,8,4,2]#suan fa yin zi cc = [] dd=0 for ...

  5. 【C#附源码】数据库文档生成工具支持(Excel+Html)

    [2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...

  6. Web 开发中很实用的10个效果【附源码下载】

    在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...

  7. 转:Web 开发中很实用的10个效果【附源码下载】

    原文地址:http://www.cnblogs.com/lhb25/p/10-useful-web-effect.html 在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多 ...

  8. VopSdk一个高逼格微信公众号开发SDK(源码下载)

    看之前回复很多说明大家很有热情&文章被误删掉了,不想让有的朋友错失这个高逼格的东西,现在重新发布,这次就直接放出源码,文章最末下载地址. 看之前回复很多说明大家很有热情&文章被误删掉了 ...

  9. 在网站开发中很有用的8个 jQuery 效果【附源码】

    jQuery 作为最优秀 JavaScript 库之一,改变了很多人编写 JavaScript 的方式.它简化了 HTML 文档遍历,事件处理,动画和 Ajax 交互,而且有成千上万的成熟 jQuer ...

随机推荐

  1. Java基础总结--多线程总结2

    ----多线程通信-----1.概述:多个线程处理同一个资源,但是各自的任务不相同eg:线程1负责存储数据,线程2负责处理该数据.数据--就是同一个资源怎样用java语言描述上面的例子:* 资源是变化 ...

  2. JavaScript--我发现,原来你是这样的JS(再说引用类型,基本包装类型与个体内置对象)

    一.介绍 本篇是续上一篇的,引用类型的后篇,本篇主要是说基本包装类型和个体内置对象.如果你能收获一些知识,那我很高兴,很满足,哈哈哈,希望大家能愉快看完.如果你想学好一门技术,要不忘初心,方得始终. ...

  3. Ionic3 创建应用(Android)

    打开CMD 通过命令行进入项目目录 创建一个App项目 ionic start myApp blank 空白App ionic start myApp tabs 导航条 ionic start myA ...

  4. Java 设计模式原则

    1.    找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起. 换句话说,如果每次新的需求一来,都会使某方面的代码发生变化,那么你就可以确定,这部分的代码需要抽出来,和其 ...

  5. R学习笔记 第五篇:数据变换和清理

    在使用R的分组操作之前,首先要了解R语言包,包实质上是实现特定功能的,预先写好的代码库(library),R拥有大量的软件包,许多包都是由某一领域的专家编写的,但并不是所有的包都有很高的质量的,在使用 ...

  6. hdu 1011 Starship Troopers(树形DP入门)

    Starship Troopers Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  7. 理解Java包

    本质上,包是一个唯一命名的类的集合,将类集合到包里面的主要原因,是为了当在应用程序中使用预先编写的类时避免与类自身可能引起的明明冲突.用于包中的类名不会妨碍另一个包或程序中的类名,因为此时,包中的类名 ...

  8. hbase的HQuorumPeer和QuorumPeerMain

    hbase是列式数据库,既可以单机也可以以集群的方式搭建,以集群的方式搭建一般建立在hdfs之上. 分布式的hbase如何启动? 首先启动hadoop,然后就来问题了:zookeeper和hbase的 ...

  9. PTA 数据结构 银行业务队列简单模拟

    仅供参考,请勿粘贴 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完 ...

  10. linux-more

    more 这个命令可以用来分页查看大篇幅的文件内容非常有效 命令参数: -num  : 这里的num 是一个数字,用来指定分页显示时每页的行数 +num  : 指定从文件的第几行num开始显示 ... ...