C# 生成 bmp 格式的图片
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Net.NetworkInformation;
using System.Runtime.ExceptionServices;
using System.Security;
using System.Threading;
namespace Utility
{
///
/// 绘制一张图片,图片内容为标题+表格数据
///
public class CSharpDraw
{
public int _pageSize = 5; //每张图片显示多少条数据
public int _picWidth = 100; //图片宽度
public int _picHeight = 100; //图片高度
public int _tableStartX = 10; //画笔起始点相对画布的水平位置
public int _tableStartY = 10; //画笔起始点相对画布的垂直位置
public string _fontStyle = "宋体"; //默认字体
public int _fontSize = 10; //默认字体大小
public string _title = "公告"; //表格标题
public int _rowHeight = 20; //表格行高(假设每行高度一样)
public int _columnWidth = 30; //表格列宽(假设每列宽度一样)
public int _rowDataSartX = 3; //表格数据相对表格的水平位置
public int _rowDataSartY = 3; //表格数据相对表格的垂直位置
private void CreateTablePicture(List dataList, int startRowNo, string picSavePath)
{
int nEnd = (startRowNo + _pageSize > dataList.Count) ? dataList.Count : (startRowNo + _pageSize);
//新建一个默认大小的图片
Bitmap bmp = new Bitmap(_picWidth, _picHeight);
//利用该图片对象生成画板
Graphics graphic = Graphics.FromImage(bmp);
//设置黑色背景
graphic.Clear(Color.Black);
//画刷用来绘制表格线条,画笔用来绘制文字内容
//新建一个画刷
SolidBrush brush = new SolidBrush(Color.Red);
//定义一个红色、线条宽度为1的画笔
Pen pen = new Pen(Color.Red, 1);
//设置内容字体
Font font = new Font(_fontStyle, _fontSize);
//绘制表格标题
graphic.DrawString(_title, font, brush, _tableStartX, _tableStartY);
int row = 0;
string studentName = string.Empty;
//画表格并添加显示文字内容
for (int i = startRowNo; i < nEnd; i++)
{
//当前绘制行号
row = i - startRowNo;
//绘制表格第一列,在画板上画矩形
_tableStartX = 10;
_tableStartY = _rowDataSartX + _rowHeight * row;
graphic.DrawRectangle(pen, _tableStartX, _tableStartY, _columnWidth, _rowHeight);
//填充表格内容(第一列)
_tableStartX = 10;
_tableStartY = _rowDataSartX + _rowHeight * row;
studentName = dataList[i].StudentName.Length < 5 ? dataList[i].StudentName : (dataList[i].StudentName.Substring(0, 4) + "..");
graphic.DrawString(studentName, font, brush, _tableStartX, _tableStartY);
//绘制第二列,在画板上画矩形
_tableStartX += _columnWidth;
graphic.DrawRectangle(pen, _tableStartX, _tableStartY, _columnWidth, _rowHeight);
//填充表格内容(第二列)
_tableStartX += _columnWidth;
graphic.DrawString(dataList[i].Count.ToString(), font, brush, _tableStartX, _tableStartY);
}
//释放资源
graphic.Dispose();
//注意:程序要有该目录下该文件的访问权限
bmp.Save(picSavePath, ImageFormat.Bmp);
}
public List ManagePictureGenerate(List dataList, string picPath)
{
List templist = new List();
string strPicPath = string.Empty;
int page = (int)Math.Ceiling((double)dataList.Count / _perPageCount);
for (int i = 0; i < page; i++)
{
strPicPath = string.Format("{0}\\{1}{2}.bmp", picPath, DateTime.Now.ToString("HHmmss"), i);//采用公共的绘图方法
SaveDrawPicForPosition(dataList, _perPageCount * i, strPicPath, picType);
tempList.Add(strPicPath);
}
return lst;
}
public bool PingIp()
{
Ping pingSender = new Ping();
PingReply reply = pingSender.Send("127.0.0.1", 120);//第一个参数为ip地址,第二个参数为ping的时间
if (reply.Status == IPStatus.Success)
{
return true;
}
else
{
return false;
}
}
}
}
using System.IO;
using System.Windows.Media.Imaging;
namespace Utility
{
public class ImageHelper
{
public static BitmapImage StreamBitmapImage(Stream stream)
{
BitmapImage bmp = null;
try
{
bmp = new BitmapImage();
bmp.BeginInit();
bmp.StreamSource = stream;
bmp.EndInit();
}
catch
{
bmp = null;
}
return bmp;
}
///
/// byte[]转换为BitmapImage
///
///
///
public static BitmapImage ByteArrayToBitmapImage(byte[] byteArray)
{
BitmapImage bmp = null;
try
{
bmp = new BitmapImage();
bmp.BeginInit();
bmp.StreamSource = new MemoryStream(byteArray);
bmp.EndInit();
}
catch
{
bmp = null;
}
return bmp;
}
///
/// BitmapImage转换为byte[]
///
///
///
public static byte[] BitmapImageToByteArray(BitmapImage bmp)
{
byte[] byteArray = null;
try
{
Stream sMarket = bmp.StreamSource;
if (sMarket != null && sMarket.Length > 0)
{
//很重要,因为Position经常位于Stream的末尾,导致下面读取到的长度为0。
sMarket.Position = 0;
using (BinaryReader br = new BinaryReader(sMarket))
{
byteArray = br.ReadBytes((int)sMarket.Length);
}
}
}
catch
{
//other exception handling
}
return byteArray;
}
}
}
posted on
2018-05-22 15:12
wangzhiliang
阅读(9056)
评论(0)
编辑
收藏
举报
|