c#使用GDI进行简单的绘图

https://www.2cto.com/database/201805/749421.html

https://zhidao.baidu.com/question/107832895.html

 

private void button2_Click(object sender, EventArgs e)
      {
          Bitmap image = new Bitmap(200, 200);
          Graphics g = Graphics.FromImage(image);
          //使绘图质量最高,即消除锯齿
          g.SmoothingMode = SmoothingMode.AntiAlias;
          g.InterpolationMode = InterpolationMode.HighQualityBicubic;
          g.CompositingQuality = CompositingQuality.HighQuality;
          Pen p = new Pen(Color.Blue, 2);//定义了一个蓝色,宽度为的画笔 
          g.DrawString("字符串", new Font("宋体", 10),  new SolidBrush(Color.Blue), new PointF(10, 10));
          g.DrawLine(p, 0, 0, 200, 200);//在画板上画直线
          g.DrawRectangle(p, 0, 0, 200, 200);//在画板上画矩形
          g.DrawEllipse(p, 0, 0, 200, 200);//在画板上画椭圆
          //保存图片
          image.Save(@"c:\1.jpg");
          #region 显示
          //pictureBox1.Image = (Image)image;
          //pictureBox1.Image.Save(@"c:\1.jpg");
          #endregion
      }
 
 
 
你在绘制字符串之前可以使用Graphics的MeasureString方法测量它的尺寸再绘制一个相应大小的矩形就行了,如下
Graphics g = this.CreateGraphics();
Font font = new Font("宋体", 9f);
PointF pointF = new PointF(10, 10);
SizeF sizeF = g.MeasureString("Hello World!", font);
g.FillRectangle(Brushes.White, new RectangleF(pointF, sizeF));
g.DrawString("Hello World!", font, Brushes.Black, pointF);
g.Dispose();
font.Dispose();
 
 
//自己整合后写的,画正方形,中间写字
 
 Bitmap image = new Bitmap(100, 50);
                                    Graphics g = Graphics.FromImage(image);
                                    Font font = new Font("黑体", 26.25f, FontStyle.Bold);
                                    SizeF sizeF = g.MeasureString(lxtmStr, font);
                                    //sizeF.Width, sizeF.Height
                                    image = new Bitmap(Convert.ToInt32(sizeF.Width), Convert.ToInt32(sizeF.Height));
                                    g = Graphics.FromImage(image);
                                    //使绘图质量最高,即消除锯齿
                                    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                                    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                                    g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

                                    PointF pointF = new PointF(0, 0);

                                    if ((dsShoptemp.Tables[0].Rows[0]["STEP"].ObjToInt() % 2) == 1)
                                    {
                                        g.FillRectangle(Brushes.White, new RectangleF(pointF, sizeF));
                                        g.DrawString(lxtmStr, font, Brushes.Black, pointF);
                                    }
                                    else
                                    {
                                        g.FillRectangle(Brushes.Black, new RectangleF(pointF, sizeF));
                                        g.DrawString(lxtmStr, font, Brushes.White, pointF);
                                    }
                                    item["路线条码"] = image;
posted @   LuoCore  阅读(606)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示