给图片加热点是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. 白夜追凶 :手 Q 图片的显示和发送逻辑

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:陈舜尧 导语: "这张图片在快捷发图栏背景是黑色的,为啥发到AIO(会话窗口)里背景就变成白的了?" 通过一个bug ...

  2. mysql 中翻页

    万变不离其中 select * from tableName where 条件 limit 当前页码*页面容量-1 , 页面容量

  3. Judge Route Circle --判断圆路线

    Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot m ...

  4. 【20171025早】alert(1) to win 练习

    本人黑绝楼,自称老黑,男,25岁,曾经在BAT工作过两年,但是一直都是底层人员,整天做重复性工作,甚敢无趣,曾和工作十年之久的同事聊天,发现对方回首过往,生活是寡淡如水,只有机械性工作.旋即老黑毅然决 ...

  5. go 代码的调试---打印调用堆栈

    本文介绍如何打印调用堆栈进行go代码的调试. 打印堆栈使用的runtime package中的Stack()函数 func Stack(buf []byte, all bool) int Stack ...

  6. VUE 源码学习01 源码入口

    VUE[version:2.4.1] Vue项目做了不少,最近在学习设计模式与Vue源码,记录一下自己的脚印!共勉!注:此处源码学习方式为先了解其大模块,从宏观再去到微观学习,以免一开始就研究细节然后 ...

  7. MySQL(十六)之MySQL用户管理

    一.MySQL用户管理概述 MySQL是一个多用户的数据库,MYSQL的用户可以分为两大类: 超级管理员用户(root),拥有全部权限 普通用户,由root创建,普通用户只拥有root所分配的权限 二 ...

  8. CentOS 7 校对时间 修改时区

    在 CentOS 7 中, 引入了一个叫 timedatectl 的设置设置程序. 用法很简单: timedatectl # 查看系统时间方面的各种状态 Local time: 四 2014-12-2 ...

  9. YYHS-分数(二分+容斥)

    题目描述 KJDH是个十分善于探索的孩子,有一天他把分子分母小于等于n的最简分数列在了纸上,他想找到这些分数里第k小的数,这对于KJDH来说当然是非常轻易,但是KJDH最近多了很多妹子,他还要去找妹子 ...

  10. Day1作业-模拟登录

    # /usr/bin/env python# -*- coding: utf-8 -*-# Author:jenvid.yangimport getpassimport shutiluserspwd ...