//设置图片资源

  1. private Image imgAgo;
  2. public override void SetParam()
  3. {
  4. base.SetParam();
  5.  
  6. // 读取前背景
  7. string _imagePath = Environment.CurrentDirectory + @"\QrCodeModel\Images\Angry_Birds\boom.png";
  8. imgAgo = Image.FromFile(_imagePath);
  9. }

//在生成二维码之后,加入前背景图层

  1. //TODO:一系列个性二维码生成方案
  2. public override Bitmap Encode(string content)
  3. {
  4. try
  5. {
  6. matrix = QrCodeEncoder.calQrcode(EnCoding.GetBytes(content));
  7. }
  8. catch { throw new Exception("内容超出范围,请选择更高版本或者降低容错率"); }
  9.  
  10. this.SetParam();
  11.  
  12. SolidBrush Backbrush = new SolidBrush(QrCodeEncoder.QRCodeBackgroundColor);
  13. //SolidBrush Backbrush = new SolidBrush(Color.Transparent);//背景透明
  14. SolidBrush Forebrush = new SolidBrush(QrCodeEncoder.QRCodeForegroundColor);
  15.  
  16. Bitmap image = new Bitmap(this.QrCodeW, this.QrCodeH);
  17. Graphics g = Graphics.FromImage(image);
  18.  
  19. Rectangle rect = new Rectangle();
  20.  
  21. g.FillRectangle(Backbrush, new Rectangle(, , image.Width, image.Height));
  22.  
  23. for (int i = ; i < matrix.Length; i++)
  24. {
  25. for (int j = ; j < matrix.Length; j++)
  26. {
  27. rect = new Rectangle((j + this.SpacingW) * QrCodeEncoder.QRCodeScale, (i + this.SpacingH) * QrCodeEncoder.QRCodeScale, QrCodeEncoder.QRCodeScale, QrCodeEncoder.QRCodeScale);
  28. if (matrix[j][i])
  29. {
  30. ChangeFillShape(g, Forebrush, rect, EN_FillShape.FillRectangle, new FillShape(), Backbrush);
  31. }
  32. else
  33. ChangeFillShape(g, Backbrush, rect, EN_FillShape.FillRectangle, new FillShape(), Backbrush);
  34. }
  35. }
  36.  
  37. //前背景
  38. GraphicsPath _path = ImageFix.GetWindowRegion(image, QrCodeEncoder.QRCodeForegroundColor);
  39. TextureBrush texture1 = new TextureBrush(new Bitmap(imgAgo, new Size(image.Width, image.Height)));
  40. g.FillPath(texture1, _path);
  41. return image;
  42. }

//还可以设置,LOGO,头像等等

  1. //TODO:一系列个性二维码生成方案
  2. public override Bitmap Encode(string content)
  3. {
  4. try
  5. {
  6. matrix = QrCodeEncoder.calQrcode(EnCoding.GetBytes(content));
  7. }
  8. catch { throw new Exception("内容超出范围,请选择更高版本或者降低容错率"); }
  9.  
  10. this.SetParam();
  11.  
  12. SolidBrush Backbrush = new SolidBrush(QrCodeEncoder.QRCodeBackgroundColor);
  13. //SolidBrush Backbrush = new SolidBrush(Color.Transparent);//背景透明
  14. SolidBrush Forebrush = new SolidBrush(QrCodeEncoder.QRCodeForegroundColor);
  15.  
  16. Bitmap image = new Bitmap(this.QrCodeW, this.QrCodeH);
  17. Graphics g = Graphics.FromImage(image);
  18.  
  19. Rectangle rect = new Rectangle();
  20.  
  21. g.FillRectangle(Backbrush, new Rectangle(, , image.Width, image.Height));
  22.  
  23. for (int i = ; i < matrix.Length; i++)
  24. {
  25. for (int j = ; j < matrix.Length; j++)
  26. {
  27. rect = new Rectangle((j + this.SpacingW) * QrCodeEncoder.QRCodeScale, (i + this.SpacingH) * QrCodeEncoder.QRCodeScale, QrCodeEncoder.QRCodeScale, QrCodeEncoder.QRCodeScale);
  28. if (matrix[j][i])
  29. {
  30. ChangeFillShape(g, Forebrush, rect, EN_FillShape.FillRectangle, new FillShape(), Backbrush);
  31. }
  32. else
  33. ChangeFillShape(g, Backbrush, rect, EN_FillShape.FillRectangle, new FillShape(), Backbrush);
  34. }
  35. }
  36.  
  37. //Logo
  38. Image _logoImg = imgAgo;
  39. g.DrawImage(_logoImg, (this.QrCodeW - this.QrCodeW / ) / , (this.QrCodeH - this.QrCodeH / ) / , this.QrCodeW / , this.QrCodeH / );//插入头像
  40.  
  41. return image;
  42. }

//为了可印刷名片、图册,可以去色

  1. //Logo
  2. Image _logoImg = imgAgo;
  3. _logoImg = ImageFix.Blocks((Bitmap)_logoImg);
  4. _logoImg = ImageFix.ColorReplace((Bitmap)_logoImg, Color.Black, QrCodeEncoder.QRCodeForegroundColor);
  5.  
  6. g.DrawImage(_logoImg, (this.QrCodeW - this.QrCodeW / ) / , (this.QrCodeH - this.QrCodeH / ) / , this.QrCodeW / , this.QrCodeH / );//插入头像
  7.  
  8. return image;

//还可以自由配色

  1. //Logo
  2. Image _logoImg = imgAgo;
  3. _logoImg = ImageFix.Blocks((Bitmap)_logoImg);
  4. _logoImg = ImageFix.ColorReplace((Bitmap)_logoImg, Color.Black, Color.Blue);
  5.  
  6. g.DrawImage(_logoImg, (this.QrCodeW - this.QrCodeW / ) / , (this.QrCodeH - this.QrCodeH / ) / , this.QrCodeW / , this.QrCodeH / );//插入头像

以下是开源地址,国外github,国内oschina.net

oschina.net:

http://git.oschina.net/cheng5x/Yc.QrCode

github:

https://github.com/cheng5x/YcQrCode

官方网站:
http://original-ad.com

码晒客讨论QQ群:
28629273

个性二维码开源专题<前背景>的更多相关文章

  1. 个性二维码开源专题<后背景>

    //设置图片资源 private Image img1; public override void SetParam() { base.SetParam(); //读取图片 string _image ...

  2. 个性二维码开源专题<液化/圆角/效果>

    基础方法: ChangeFillShape //修改填充形状 ChangeFillShape(...) // 摘要: // 修改填充形状 // // 参数: // g: // 图形画板 // // F ...

  3. 个性二维码开源专题<替换元素点>

    基础方法:ChangeFillShape //修改填充形状 ChangeFillShape(...) // 摘要: // 修改填充形状 // // 参数: // g: // 图形画板 // // Fo ...

  4. 个性二维码开源专题<替换定位点>

    基础方法: ChangeFillShape //修改填充形状 ChangeFillShape(...) // 摘要: // 修改填充形状 // // 参数: // g: // 图形画板 // // F ...

  5. 个性二维码开源专题<介绍篇>

    由C#编写的个性二维码底层,已应用到 码晒客/疯狂创意二维码等项目上,并获得多项软件著作专利. 疯狂创意二维码 疯狂创意二维码是可用于生成风格独特的个性化二维码生成器,用户可以将目标信息输入到二维码生 ...

  6. 个性二维码开源专题<基础篇>

    二维码原理介绍: 二维码为什么是黑白相间的?黑色表示二进制的“1”,白色表示二进制的“0” “我们之所以对二维码进行扫描能读出那么多信息,就是因为这些信息被编入了二维码之中.”黄海平说,“制作二维码输 ...

  7. Android二维码开源项目zxing用例简化和生成二维码、条形码

    上一篇讲到:Android二维码开源项目zxing编译,编译出来后有一个自带的測试程序:CaptureActivity比較复杂,我仅仅要是把一些不用的东西去掉,用看起来更方便,二维码和条形码的流行性自 ...

  8. 你只要5行代码,拥有你的个性二维码,用Python生成动态二维码

    如果想了解更多关于python的应用,可以私信我,或者点击下方链接自行获取,里面到资料都是免费的(http://t.cn/A6Zvjdun) 二维码满天飞,但是有没有想过Python也能制作出专属于自 ...

  9. 二维码开源库ZBar-吐槽篇

    前不久在网上看到一篇文章<QR-Decoder-OV5640 二维码识别> ,是某开发板的教程.记得对应的开发板以前购买过,当初只是为了看OV5640的JPG的输出效果,结果由于公司奇葩的 ...

随机推荐

  1. NHibernate系列文章四:NHibernate运行时监控

    摘要 有三种方式可以实现NHibernate运行时监控,监控的信息包括:执行了的SQL语句.NHibernate执行过程.数据库性能分析.这对我们学习NHibernate有很大的帮助,在工作中也能快速 ...

  2. newCachedThreadPool线程池

    public static ExecutorService newCachedThreadPool()创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们.对于执行很多短期异步任 ...

  3. 一段防盗连的PHP代码

    $ADMIN[defaulturl] = http://www.163.com/404.htm;  //盗链返回的地址  $okaysites = array("http://www.163 ...

  4. linux 下文件节点索引

    最近发现一个奇怪的问题,就是一个pyhton 后台的服务一直打印日志文件,在中间我用vim看日志文件,关闭时习惯性的:wq退出,在此之后日志文件就不输出了. 1 对于这个现象我开始认为是python ...

  5. 修改Tomcat根目录

    在server.xml文件中找到</Host>标签,在之前加入这样一行:<Context path="" docBase="F:/MyWeb" ...

  6. CF(协同过滤算法)

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  7. K.O. ----- bat文件的中文乱码

    -------siwuxie095 bat文件在保存时如果没有选择正确的格式,中文部分就会出现乱码 1.记事本 用记事本编写如下代码:        另存为:测试.bat,编码设置为:UTF-8,就会 ...

  8. 理解GC日志

    每一种收集器的日志形式都是由它们自身的实现所决定的,换而言之,每个收集器的日志格式都可以不一样.但虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性,例如以下两段典型的GC日志: 33. ...

  9. Amr and Chemistry CodeForces 558C(BFS)

    http://codeforces.com/problemset/problem/558/C 分析:将每一个数在给定范围内(10^5)可变成的数(*2或者/2)都按照广搜的方式生成访问一遍,标记上访问 ...

  10. shell脚本批量处理字符串

    上周五运营那边给了一份手机号码的excle,要求查询出所有对应于用户编号的用户的信息.这个时候遇到了一个问题就是,需要查询的用户数量很多,不可能一个一个去查,而excle中的格式又不符合sqlquer ...