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

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. CSS的z-index & 绝对定位与相对定位

    1.在有些情况下,需要仔细地控制元素在网页中堆叠顺序.z-index样式属性让你能够设置元素的堆叠顺序. 堆叠元素时,z-index值较大的元素在z-index值较小的下面. 2.z-index值仅在 ...

  2. Tomcat详解及SNS系统的部署实现

    Tomcat详解及SNS系统的部署实现   http://jungege.blog.51cto.com/4102814/1409290

  3. MyEclipse - MyEclipse优化

    1.去除不需要的启动加载项 选择菜单:Window --> Preferences -->General --> Startup and Shutdown, 可以关掉的启动项有: J ...

  4. 18、bootStap JavaScript插件

    1.模态框 <!--模态框经过了优化,更加灵活,以弹出对话框的形式出现,具有最小和最实用的功能集.--> <button type="button" class= ...

  5. 深copy和浅copy

    浅copy:其实就是将容器中的内存地址存放进另一个容器中,所以两个容器本身的内存地址不相同,但容器里面的内存地址相同 代码如下: 深copy:就是从里到外完完全全复制了所有值,存进另外的内存空间,并赋 ...

  6. 二、vue响应式对象

    Object.defineProperty Object.defineProperty 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象,先来看一下它的语法: Obj ...

  7. SQLAlchemy技术文档(中文版)(中)

    10.建立联系(外键) 是时候考虑怎样映射和查询一个和Users表关联的第二张表了.假设我们系统的用户可以存储任意数量的email地址.我们需要定义一个新表Address与User相关联. from ...

  8. java链接数据库--Mysql

    /************************************************************************* > File Name: Mysql.jav ...

  9. BZOJ1800 [Ahoi2009]fly 飞行棋 【枚举】

    题目 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. 输入格式 第一行为正整数N,表示点的个 ...

  10. CF995E Number Clicker 解题报告

    CF995E Number Clicker 题目描述 Allen is playing Number Clicker on his phone. He starts with an integer u ...