上一篇文章寫到了自帶報表的製作,現在來談談報表水印的添加

1:水印產生代碼

using System;
using System.Data;
using System.Configuration;
using System.Drawing;
using System.Drawing.Imaging; /// <summary>
/// WatermarkCreater 的摘要描述
/// </summary>
public class WatermarkCreater
{
public WatermarkCreater()
{
//
// TODO: 在此加入建構函式的程式碼
//
} private Bitmap CreateImage(string code, string width, string height, string pLeft, string pTop, string font, string fColor, string bColor, string r)
{
Color cF = Color.FromArgb(int.Parse(fColor.Substring(, ), System.Globalization.NumberStyles.AllowHexSpecifier), int.Parse(fColor.Substring(, ), System.Globalization.NumberStyles.AllowHexSpecifier), int.Parse(fColor.Substring(, ), System.Globalization.NumberStyles.AllowHexSpecifier));
Color cB = Color.FromArgb(int.Parse(bColor.Substring(, ), System.Globalization.NumberStyles.AllowHexSpecifier), int.Parse(bColor.Substring(, ), System.Globalization.NumberStyles.AllowHexSpecifier), int.Parse(bColor.Substring(, ), System.Globalization.NumberStyles.AllowHexSpecifier)); System.Drawing.SolidBrush sb = new SolidBrush(cF);
string[] fstr = font.Split(',');
Font f = new Font(fstr[].Split('=')[], (float)Convert.ToInt32(fstr[].Split('=')[]), FontStyle.Regular, (GraphicsUnit)Convert.ToInt32(fstr[].Split('=')[]), Convert.ToByte(fstr[].Split('=')[]), Convert.ToBoolean(fstr[].Split('=')[]));
Bitmap bmp = new Bitmap(Convert.ToInt32(width), Convert.ToInt32(height));
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
g.RotateTransform((float)Convert.ToDouble(r));
g.DrawString(code, f, sb, new PointF(Convert.ToInt32(pLeft), Convert.ToInt32(pTop))); return bmp;
} public byte[] GetImageByte(string code, string config)
{
string[] configs = config.Split(';');
Bitmap im = CreateImage(code, configs[].Split(':')[], configs[].Split(':')[], configs[].Split(':')[], configs[].Split(':')[], configs[], configs[].Split(':')[], configs[].Split(':')[], configs[].Split(':')[]);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
im.Save(ms, ImageFormat.Bmp);
return ms.GetBuffer();
}
}

2:把水印保存到數據庫,數據庫類型為image

3:把水印查詢出來,作為數據源傳進報表,然後在報表的背景添加即可

Reporting Service报表水印的添加的更多相关文章

  1. Dynamic CRM 2013学习笔记(二十九)报表设计:reporting service 报表开发常见问题

    在报表开发过程中,经常会遇到各种各样的问题,比如The report cannot be displayed. (rsProcessingAborted),一点有意义的提示都没有:再就是分页问题,经常 ...

  2. Reporting Service报表项默认可见+号和-号的显示问题

    在Reporting Service里面可以设置报表项(组.tablix行.tablix列.文本框等所有SSRS报表项)的可见性,并且可以设置某个报表项的可见性由点击另外一个报表项来控制,比如报表项A ...

  3. Dynamic CRM 2013学习笔记(二十六)报表设计:Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色

    上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数 ...

  4. SQL Server性能计数器收集汇总方案(Reporting Service)

    通过收集计数器信息,并将计数器信息汇总为不同粒度存储,以Reporting Service报表服务器显示.以下是计数器收集汇总的基本架构. 笔者需要收集的SQL Server计数器包括:SQL Ser ...

  5. Reporting Service 2008 “报表服务器数据库内出错。此错误可能是因连接失败、超时或数据库中磁盘空间不足而导致的”

    今天遇到了两个关于Reporting Service的问题, 出现问题的环境为Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) .具体情况 ...

  6. SQL Server Reporting Service(SSRS) 第二篇 SSRS数据分组Parent Group

    SQL Server Reporting Service(SSRS) 第一篇 我的第一个SSRS例子默认使用Table进行简单的数据显示,有时为了进行更加直观的数据显示,我们需要按照某个字段对列表进行 ...

  7. SQL Server Reporting Service(SSRS) 第一篇 我的第一个SSRS例子

    很早就知道SQL SERVER自带的报表工具SSRS,但一直没有用过,最近终于需要在工作中一展身手了,于是我特地按照自己的理解做了以下总结: 1. 安装软件结构 SSRS全称SQL Server Re ...

  8. 【解决】SharePoint集成模式下Reporting Service—为用户授予的权限不足,无法执行此操作。 (rsAccessDenied)

    环境:Windows Server 2008 R2 SP1,SharePoint 2010 企业版,SQL Server 2008 R2 Reporting Service(SharePoint集成模 ...

  9. Reporting Service部署之访问权限

    原文:Reporting Service部署之访问权限 SQL Server Reporting Services 并非专门设计用于 Internet 报表部署方案,但是您可以成功地将 Reporti ...

随机推荐

  1. Windows系统搭建Mysql Cluster集群

    简单介绍一下MySQL集群涉及的三种节点:     管理节点(也可以称管理服务器)是整个集群环境的核心,类似于集群中起调度作用的枢纽,由它来负责管理其它节点(数据节点和SQL节点)的开启.关闭或重启某 ...

  2. 新工具填补Docker管理空白

    [TechTarget中国原创] 从事容器管理领域的IT运维专家这周需要评估一个新的工具. Docker推出了一款新产品,意在让IT运维人员能够跟上开发人员的脚步,这一产品是Docker Datace ...

  3. 实现jQuery的$.extend方法

    var o1 = { hello : 1, old : 555 }, o2 = { abc : 55555555, hello : 2, fun : function() { alert(111); ...

  4. 《Cracking the Coding Interview》——第5章:位操作——题目8

    2014-03-19 06:33 题目:用一个byte数组来模拟WxH的屏幕,每个二进制位表示一个像素.请设计一个画水平线的函数. 解法:一个点一个点地画就可以了.如果要优化的话,其实可以把中间整字节 ...

  5. Pascal小游戏 贪吃蛇

    一段未完成的Pascal贪吃蛇 说这段代码未完成其实是没有源代码格式化,FP中一行最多只有255字符宽. uses crt; const screenwidth=50; screenheight=24 ...

  6. 【Binary Search Tree Iterator 】cpp

    题目: Implement an iterator over a binary search tree (BST). Your iterator will be initialized with th ...

  7. asp.net 身份验证-Form 身份验证

    一. .net身份验证简介 1.身份验证就是检测用户是否登录及所访问的资源是否有权限.当我们在访问一个受保护网络资源时,往往需要输入用户名.密码信息,或通过其他证书.第三方身份验证等方式.验证(Aut ...

  8. os--留

    os.path.abspath(path) #返回绝对路径    绝对路径和文件路径的区别,绝对路径是当前在操作文本的路径,文件路径是当前文本的文件的路径 os.path.basename(path) ...

  9. REMIX与LOCALHOST相连

    REMIX与LOCALHOST相连 让Remix与本地文件系统进行交互,点击connect同时找到localhost下的Remix文件管理器的共享目录.在开始之前,参考网址: https://remi ...

  10. 转: jsp之c标签

    http://www.gbsou.com/2009/10/12/1028.htmljsp标签之c标签 核心标签库 它是JSTL中的核心库,为日常任务提供通用支持,如显示和设置变量.重复使用一组项目.测 ...