protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ string path = Server.MapPath(@"/Content/images/bg/index_01.jpg");
AddToImg(path, "图片测试pictureBox在图片上绘制文本_百度知道pictureBox在图片上绘制文本_百度知道", Guid.NewGuid().ToString("N"));
}
}

using System.IO;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;

绘制图片和文字

        /// <summary>
/// 指定图片添加指定文字
/// </summary>
/// <param name="fileName">指定文件路径</param>
/// <param name="text">添加的文字</param>
/// <param name="picname">生成文件名</param> private void AddToImg(string file, string text, string picname)
{
//判断指定图片是否存在
//if (!File.Exists(MapPath(fileName)))
//{
// throw new FileNotFoundException("The file don't exist!");
//} if (text == string.Empty)
{
return;
} System.Drawing.Image image = System.Drawing.Image.FromFile(file);
Bitmap bitmap = new Bitmap(image, image.Width, image.Height);
Graphics g = Graphics.FromImage(bitmap); float fontSize = 40.0f; //字体大小
float textWidth = text.Length * fontSize; //文本的长度
//下面定义一个矩形区域,以后在这个矩形里画上白底黑字
float rectX = ;
float rectY = ;
float rectWidth = ; // text.Length * (fontSize + 40);
float rectHeight = fontSize + ;
//声明矩形域
RectangleF textArea = new RectangleF(rectX, rectY, , ); Font font = new Font("华文隶书", fontSize, FontStyle.Bold); //定义字体
Font font2 = new Font("楷体", fontSize, FontStyle.Bold); //定义字体
//font.Bold = true; Brush whiteBrush = new SolidBrush(Color.DodgerBlue); //白笔刷,画文字用
//Brush blackBrush = new SolidBrush(Color.Black); //黑笔刷,画背景用 //g.FillRectangle(blackBrush, rectX, rectY, rectWidth, rectHeight); g.DrawString(text, font, whiteBrush, textArea, StringFormat.GenericDefault); g.DrawString(text, font, whiteBrush, new RectangleF(rectX, image.Height/, , )); g.DrawString("168元", font2, new SolidBrush(Color.Firebrick), new RectangleF(rectX, image.Height - , rectWidth, rectHeight)); ////------------------- 绘制高质量 -------------------------------------------
//设置 System.Drawing.Graphics对象的SmoothingMode属性为HighQuality
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//下面这个也设成高质量
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
//下面这个设成High
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //画专属推广二维码
System.Drawing.Image qrCodeImage = System.Drawing.Image.FromFile(Server.MapPath(@"/Content/images/money-cards.png"));
g.DrawImage(qrCodeImage, new Rectangle(image.Width - qrCodeImage.Width - ,
image.Height - qrCodeImage.Height - ,
qrCodeImage.Width,
qrCodeImage.Height),
, , qrCodeImage.Width, qrCodeImage.Height, GraphicsUnit.Pixel);
//画微信昵称
g.DrawString("小马快跑", font, new SolidBrush(Color.Red), new Rectangle(image.Width - qrCodeImage.Width - ,
image.Height - qrCodeImage.Height - ,
qrCodeImage.Width + ,
)); MemoryStream ms = new MemoryStream(); //输出方法一:将文件生成并保存到C盘
string path = "D:\\test\\" + picname + ".png";
bitmap.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg); //输出方法二,显示在网页中,保存为Jpg类型
//bitmap.Save(ms, ImageFormat.Jpeg);
//Response.Clear();
//Response.ContentType = "image/jpeg";
//Response.BinaryWrite(ms.ToArray()); g.Dispose();
bitmap.Dispose();
image.Dispose();
}

C# 生成海报,文本区域指定和换行,图片合成的更多相关文章

  1. CSS控制文本超出指定宽度显示省略号和文本不换行

    一般的文字截断(适用于内联与块): .text-overflow { display:block;/*内联对象需加 */ width:31em;/* 何问起 hovertree.com */ word ...

  2. CSS控制文本超出指定宽度后用省略号代替,CSS控制文本不换行

    CSS控制文本超出指定宽度后用省略号代替,CSS控制文本不换行. 一般的文字截断(适用于内联与块): .text-overflow {     display:block;/*内联对象需加*/     ...

  3. java操作txt文本(一):遇到指定字符换行

    想法由来:有时查看网页源代码的css文件内容,竟是恼人的压缩后代码(不换行),如下图所示-- 它的可读性很差,所以写了下面这个简单的程序,实现自动换行. 适用条件:遇到指定字符换行(本例中遇到'}'换 ...

  4. 微信小程序分享之生成海报--canvas

    首先看文档 了解知识点~~(https://developers.weixin.qq.com/miniprogram/dev/component/) githup:https://github.com ...

  5. ZeroMQ接口函数之 :zmq_z85_decode – 从一个用Z85算法生成的文本中解析出二进制密码

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_z85_decode zmq_z85_decode(3)         ØMQ Manual - ØMQ/4.1 ...

  6. cocos2dx 富文本框,支持换行,支持神情(支持汉字截断无乱码)

    cocos2dx 富文本框,支持换行,支持表情(支持汉字截断无乱码) 小工在做了一个游戏聊天功能,里面用到插入表情的富文本和换行的问题: 先看效果,不是你要的效果,可return:(截图由于:输入的问 ...

  7. 微信小程序利用canvas生成海报分享图片

    一 . 效果 这是借用女神照生成的分享的海报,图片来自网络. 新增了poster组件和更新图片自适应 二 . 准备 准备两张图片连接,最好是自己开发账号验证的https图片链接. 三 . 实现思路 其 ...

  8. 复制图片链接和标题生成Markdown文本

    写Markdown的时候常常会需要复制图片链接和标题以插入图片,不借助其他工具的话,一般需要先在Markdown文件中输入插入图片的格式,然后在浏览器中复制图片链接和标题将其依次粘贴到Markdown ...

  9. PHP 生成指定大小随机图片

    PHP 生成指定大小随机图片 <?php $image_width = 100; $image_height = 100; $image_str = ''; if (isset($_GET['w ...

随机推荐

  1. hdu4003详解(树形dp+多组背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4003 Find Metal Mineral Time Limit: 2000/1000 MS (Jav ...

  2. P3957 跳房子

    题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一条直线上.每个格子内 ...

  3. Apache配置对外访问默认路径(域名默认访问路径)

    摘抄.同以下博主遇到同样问题,故此记录. 作者:ChasingdreamLY 原文:https://blog.csdn.net/qq_26591517/article/details/80414073 ...

  4. 深圳奥特迅现金流量——RESSET数据库

    现金流不好,很多年都是负数.到公司官方网站上收集信息,拳头产品有矩阵柔性充电堆,主要盈利产品有电源和电源管理系统.还承担了深圳市的充电桩交钥匙项目. 下面是它这些年的股价,在大牛市的时候也上升至五十几 ...

  5. url_encode和base64

    在用一个某开源插件做封装,想要传一些参数进去. 多数字段都是普通字符串参数,但是有一个字段传的是json,结果发现这个插件一看到大括号和双引号就识别错误了. 不想改这个插件的源码,考虑自己传进去的时候 ...

  6. linux之特殊字符

    特殊字符: 与路径和位置有关的特殊字符: ~  用户的家目录,超级用户为/root _  用户(-) 代表上一次用户所在路径 .代表当前目录(. 还有很多其他含义) ..代表上一级目录 通配符 *匹配 ...

  7. 学习小片段——springboot 错误处理

    一:先看看springboot默认的错误处理机制 springboot默认会判断是否是浏览器(http请求头Accept是否含有 text/html)来选择返回html错误页面或json错误信息 原因 ...

  8. XShell转发数据库端口

    隧道添加 源主机为本地 目标主机为需要转发的主机

  9. Ubuntu如何百度云盘下载

    我使用Firefox浏览器下载. (1)先为浏览器下载一个插件:网盘助手 (2)通过终端安装aria2: sudo apt-get install python-apt sudo apt-get in ...

  10. Visual C++ 6.0中互换两个数字

    就好比如两杯水,需要三个杯子将这两杯水互换.互换数字就要用一个中间变量. # include <stdio.h> int main(void) { int i; int j; int k; ...