C#实现在图片上动态写内容
之前在项目上遇到这么一个需求,就是要在图片上写内容,而且要求是动态,我所谓的动态就是在图片上写的内容是动态的。网上找了找,很多人实现了网图片上写内容的功能,但是,并没有实现动态。所以在这里把我的解决办法跟大家分享一下。
要实现这个功能,我分了两步来完成:
一、在图片上放添加一个TextBox,输入框,而且这个输入框的位置是可以随意指定的。下边给大家上源码:
/// <summary>
/// 打开写字板
/// </summary>
private void Write()
{
try
{
textBox1.Location = new Point(startPoint.X, startPoint.Y);//startPoint为鼠标当前点击的位置
textBox1.BorderColor = SystemColors.Highlight;//设置textBox1的边框颜色
textBox1.BorderStyle = BorderStyle.FixedSingle;//设置textBox1的边框样式。在这里需要注意,
//这个textBox是我自定义的一个控件,可以修改它的边框颜色,为了效果,我加载的textBox1的边框是透明的
textBox1.Font = new Font("宋体", 14.25F);//设置textBox1的默认字体跟大小
textBox1.Multiline = true;//允许textBox1可以输入多行数据,这样设置textBox1的宽度才有效
textBox1.Size = new Size(100, 50);//设置textBox1的大小
picImage.Controls.Add(textBox1);//把它添加到一个pictrueBox上边
textBox1.Focus();//让其获得焦点,可以直接输入。
// textBox1.BringToFront();
}
catch (Exception)
{
throw;
}
}
首先,我在程序里定义了一个TextBox并且初始化了。然后,我在这里对textBox1进行了一系列的设置,把它添加到pictrueBox上边。这样,实现这个功能的第一步就算完成了。加载textBox的目的就是为了实现动态写内容。
二、读取textBox1的内容写到图片上边:
/// <summary>
/// 当按下回车键时,往图片上写字
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void WriteText()
{
if (textBox1.Text != null)
{
Graphics g = Graphics.FromImage(picImage.Image);//定义一个GDI+
SolidBrush drawBrush = new SolidBrush(textBox1.ForeColor);//定义一个画笔,在这里我读取了textBox1的字体颜色
Font drawFont = new Font(textBox1.Font.FontFamily, textBox1.Font.Size);//定义一个font,设置字的样式,大小,都是读取textBox1的值
//往图片上写字。这里需要注意的是Point,因为在图片加载的时候你可能采取了一定的压缩或者放大,所以要乘以压缩比例scaling
g.DrawString(textBox1.Text, drawFont, drawBrush, new Point(startPoint.X * scaling, startPoint.Y * scaling));
picImage.Image.Save(fileName, ImageFormat.Jpeg);//最后就是图片保存了
picImage.Controls.Remove(textBox1);//然后移除添加的那个textBox1
} }
在这里还有一点需要注意,有些人可能是定义了一个Bitmap,然后把图片转换成Bitmap再往上写字的,这样其实没有必要,而且如果你这样做的话可能会改变图片原有的色彩模式。还有我这里是在输入文字后,按一下“Enter”键,完成了写字,在这里看不到因为我的程序是支持快捷键自定义的,所以这些功能我都写在快捷键注册那一块了。
好了,一个简单的功能就算介绍完了。如果各位有什么不同的建议,欢迎留言!
C#实现在图片上动态写内容的更多相关文章
- java实现在图片上编辑文本内容
package com.yin.text; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; impor ...
- winform PictureBox图片上动态添加Label或其他控件
效果图: 代码: //分页或者多次加载时,需要删除之前产生的lable等控件 ; tabID < ; tabID++) { foreach (Control control in this.ta ...
- C#实现在图片上斜着写字
最近公司要搞微信活动页面,要实现图片上可以写自己名字的功能,于是就查了一下怎么实现,下面贴一下代码备忘,希望大家也能用到: 我是在控制台应用程序里进行试验的. using (Image bitmap ...
- 函数putText()在图片上写文字
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace c ...
- 【咸鱼教程】本地图片上传。动态GIF表情图生成
本案例参考:http://emoji.decathlon.trustingme.cn/但是实现方式不一样. 教程目录一 head first二 打开本地图片功能三 拖拽和缩放手势,调整图片四 gifj ...
- thinkphp 利用GD库在图片上写文字
<?php /** * Created by PhpStorm. * User: Administrator */ namespace Home\Event; use \Think\Image; ...
- ASP.NET MVC应用程序把文字写在图片上
原文:ASP.NET MVC应用程序把文字写在图片上 Insus.NET实现这篇<MVC把随机产生的字符串转换为图片>http://www.cnblogs.com/insus/p/3624 ...
- 1.关于QT中的Graphics绘图,定时器,动画,将窗口中的内容打印到图片上,打印机,打印预览
1 新建项目 A 修改pro中的内容如下: HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets prints ...
- 使用Qpaint在图片上写文字
开发过程中需要实现在图片上叠加文字,可以采用Qpaint在图片上写文字,然后将图片显示在上面.再将Qlabel加到Qwidget中.效果如下 //创建对象,加载图片 QPixmap pix; pix. ...
随机推荐
- 对象导航查询和OID查询(补)
----------------siwuxie095 对象导航查询 以客户和联系人为例(一对多) 1.应用场景 ...
- Winform关于OpenFileDialog的使用方法
1.OpenFileDialog控件有以下基本属性InitialDirectory 对话框的初始目录Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所 ...
- python笔记之str常用方法
#Auther Bob#--*--conding:utf-8 --*--# s1 = 'aBcdE1d'# ============================================== ...
- 重哈希 · rehashing
[抄题]: [思维问题]: [一句话思路]: [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入): [画图]: newindex = (hashTable[ ...
- java POI创建Excel示例(xslx和xsl区别 )
Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...
- C# 发送电子邮件(含附件)用到的类 system.web.mail
主要是用到了System.Web.Mail命名空间,用到了此空间的三个类,分别是: ●MailMessage类,用于构造电子邮件●MailAttachment类,用于构造电子邮件附件●SmtpMail ...
- 帧动画布局文件 animation-list
<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android=&qu ...
- 201621123008《Java程序设计》第七周学习总结
1. 本周学习总结 1.1 思维导图:Java图形界面总结 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 监听,事件源,事件,注册. 1.2 任意编写事件处理 ...
- Vagrant WinNFSd
Vagrant WinNFSd Manage and adds support for NFS on Windows. Supported Platforms As of version 1.0.6 ...
- maven 编译的时候总是报一些奇怪的错误 比如 surefire-boot 2.10 .jar 可是私服里查看本来就没有这个高的版本。
或者私服总是 报 read time out , 或者 io 错误, 或者 gzip 解压错误,或者总是尝试下载一些高版本的jar , 而这些jar 可能是不存在的 .. 尝试 重新下载 apac ...