c# 创建斜着写字图片

复制代码
void Main()
{
    using (var bitmap = new Bitmap(3094, 2136,PixelFormat.Format32bppArgb))
    {
        using (Graphics g = Graphics.FromImage(bitmap))
        {
            var msg = "在线考试模板图片(勿删)";
            var font = new Font("微软雅黑", 100);
            var brush = new SolidBrush(Color.FromArgb(30, Color.Black));
            var size = g.MeasureString(msg,font );
            g.ResetTransform();    //重置图像
            g.TranslateTransform(bitmap.Width / 2, bitmap.Height / 2);     //设置旋转中心
            g.RotateTransform(53);    //旋转53度 顺时针
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;     //指定文本呈现的质量 解决文字锯齿问题
            g.Clear(Color.White);
            g.DrawString(msg, font , brush, 0 - size.Width /2 , 0- size.Height/2);     //设置文字、字体、大小、颜色、起始位置
            bitmap.Save(@"E:\Desktop\test.TIF", ImageFormat.Tiff);
        }
    }
}
复制代码

 自动根据图像尺寸倾斜文字:

复制代码
private Bitmap createEmptyImage(int width, int height)
        {
            var bitmap = new Bitmap(width, height);

            using (Graphics g = Graphics.FromImage(bitmap))
            {
                var msg = "此区域考生未作答";
                var brush = new SolidBrush(Color.FromArgb(30, Color.Black));
                var fontSize = 100;
                var font = new Font("微软雅黑", fontSize);
                var size = g.MeasureString(msg, font);

                while (size.Width > width && fontSize > 1)
                {
                    fontSize--;
                    font = new Font("微软雅黑", fontSize);
                    size = g.MeasureString(msg, font);
                }

                while (size.Height > height && fontSize > 1)
                {
                    fontSize--;
                    font = new Font("微软雅黑", fontSize);
                    size = g.MeasureString(msg, font);
                }

                g.ResetTransform();
                g.TranslateTransform(bitmap.Width / 2, bitmap.Height / 2);
                g.RotateTransform((int)(Math.Asin(height / Math.Sqrt(Math.Pow(width, 2) + Math.Pow(height, 2))) * 180 / Math.PI));
                g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
                g.Clear(Color.White);
                g.DrawString(msg, font, brush, 0 - size.Width / 2, 0 - size.Height / 2);

            }

            return bitmap;
        }
复制代码

 

posted on   空明流光  阅读(481)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示