哈希表存放要绘制的图片
private int _width;
private int _height;
private string _fontFamily;
private int _fontSize;
private bool _adaptable;
private FontStyle _fontStyle;
private bool _shadow;
private string _backgroundImage;
private Color _bgColor;
private int _left;
private string _resultImage;
private string _text;
private int _top;
private int _alpha;
private int _red;
private int _green;
private int _blue;
private long _quality;
workflow.Watermark watermark = new Watermark();
Hashtable ht1 = new Hashtable();//通过哈希表来存储图片
private void dataGridViewX1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.ColumnIndex == 0 && e.Value != null && e.RowIndex != -1 && e.ColumnIndex != -1)
{
_fontFamily = "华文行楷";
_fontSize = 20;
_fontStyle = FontStyle.Regular;
_adaptable = true;
_shadow = false;
_left = 0;
_top = 0;
_alpha = 255;
_red = 0;
_green = 0;
_blue = 0;
_backgroundImage = "";
_quality = 100;
_text = e.Value.ToString();
_bgColor = Color.FromArgb(255, 229, 229, 229);
Graphics g;
StringFormat StrFormat = new StringFormat();
Brush b2 = new SolidBrush(Color.FromArgb(90, 0, 0, 0));
Brush b = new SolidBrush(Color.FromArgb(_alpha, _red, _green, _blue));
Font f = new Font(_fontFamily, _fontSize, _fontStyle);
Bitmap bitmap;
for (int i = 0; i < dataGridViewX1.Rows[0].Cells.Count; i++)
{
_width += this.dataGridViewX1.Rows[e.RowIndex].Cells[i].Size.Width;//每一行单元格宽度
_height = this.dataGridViewX1.Rows[e.RowIndex].Cells[i].Size.Height;
}
if (this._backgroundImage.Trim() == "")
{
bitmap = new Bitmap(this._width, this._height, PixelFormat.Format64bppArgb);
g = Graphics.FromImage(bitmap);
g.Clear(this._bgColor);
}
else
{
bitmap = new Bitmap(Image.FromFile(this._backgroundImage));
g = Graphics.FromImage(bitmap);
}
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.CompositingQuality = CompositingQuality.HighQuality;
g = Graphics.FromImage(bitmap);
g.DrawString(_text, f, b2, _left + 2, _top + 1);
// }
g.DrawString(_text, f, b, new PointF(_left, _top), StrFormat);
SizeF size = g.MeasureString(_text, f);
while (_adaptable == true && size.Width > bitmap.Width)
{
_fontSize--;
f = new Font(_fontFamily, _fontSize, _fontStyle);
size = g.MeasureString(_text, f);
}
StrFormat.Alignment = StringAlignment.Near;
// bitmap.Save(strtest, ImageFormat.Gif);//将添加水印的图片输入到当前流中
if (ht1[e.RowIndex + 1] == null)
{
ht1.Add(e.RowIndex + 1, bitmap);
}
}
if (ht1[e.RowIndex + 1] != null && e.ColumnIndex != -1 && e.RowIndex != -1)
{
Bitmap bitmap = new Bitmap((Image)ht1[e.RowIndex + 1]);
Graphics g = Graphics.FromImage(bitmap);
int width = 0;
int heigh = this.dataGridViewX1.Rows[e.RowIndex].Cells[e.ColumnIndex].Size.Height;
int portionHeight = this.dataGridViewX1.Rows[e.RowIndex].Cells[e.ColumnIndex].Size.Height;
int portionWidth = this.dataGridViewX1.Rows[e.RowIndex].Cells[e.ColumnIndex].Size.Width;
for (int d2 = 0; d2 < e.ColumnIndex; d2++)
{
int width1 = this.dataGridViewX1.Rows[e.RowIndex].Cells[d2].Size.Width;
width += width1;
}
e.Graphics.DrawImage((Image)ht1[e.RowIndex + 1], e.CellBounds.X, e.CellBounds.Y, new Rectangle(width, 0, portionWidth, portionHeight), GraphicsUnit.Pixel);
e.Handled = true;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述