zoukankan      html  css  js  c++  java
  • C# GDI

    绘制实心矩形

    using (Graphics gp = Graphics.FromImage(bmBlank))
    {
    //...
       int y = (int)currentPoint.Y - 5;
       Rectangle rec = new Rectangle(87, y, 40, 30);//画一个白块,即起到擦拭的效果
       gp.FillRectangle(Brushes.White, rec);

     Brushes颜色参考

    绘图基本方法

    string backImage = GetMaterialPath(param, this.reportType) + "image_blank_1.png";
    using (Image im = Image.FromFile(backImage))
    {
        using (Bitmap bmBlank = new Bitmap(230, 60, Graphics.FromImage(im)))
        {
            using (Graphics gp = Graphics.FromImage(bmBlank))
            {
                gp.DrawImage(im, new Point(0, 0));
                int width = (int)GetWidth_1(teamScore);
                Rectangle rec = new Rectangle((int)baseX, (int)baseY, width, 29);
                gp.FillRectangle(Brushes.Gold, rec);
            }
            ImageOperation.SaveImage(bmBlank, saveImgFilePath, 100000);
        }
    }
    //自定义工具类ImageOperation
    public static void SaveImage(Bitmap myBitmap,string fileName, int quality)
    {
    
        System.Drawing.Imaging.EncoderParameters myEncoderParameters =
            new System.Drawing.Imaging.EncoderParameters(1);
    
        System.Drawing.Imaging.EncoderParameter myEncoderParameter =
            new System.Drawing.Imaging.EncoderParameter(
            System.Drawing.Imaging.Encoder.Quality, quality);
    
        myEncoderParameters.Param[0] = myEncoderParameter;
    
        System.Drawing.Imaging.ImageCodecInfo myImageCodecInfo;
        myImageCodecInfo = GetEncoderInfo("image/jpeg");
    
    
        string ext = myImageCodecInfo.FilenameExtension.Split(';')[0];
        ext = System.IO.Path.GetExtension(ext).ToLower();
    
        string saveName = System.IO.Path.ChangeExtension(fileName, ext);
    
        //保存
        myBitmap.Save(saveName, myImageCodecInfo, myEncoderParameters);
    }
    using (FileStream fs = new FileStream(saveImgFilePath, FileMode.Create))
    {
        ImageCodecInfo imageCodeInfo = ImageOperation.GetEncoderInfo("image/jpeg");
        System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
        EncoderParameters myEncoderParameters = new EncoderParameters(1);
        myEncoderParameters.Param[0] = new EncoderParameter(myEncoder, 99L);
        bmBlank.Save(fs, imageCodeInfo, myEncoderParameters);
    }

    原生自定义背景色

    Bitmap bmBlank = new Bitmap(width, height);
    using (Graphics gp = Graphics.FromImage(bmBlank))
    {
        //清空画布并以白色背景色填充 
        gp.Clear(Color.White);
        for (int i = 0; i < imagePaths.Length; i++)
        {
             //加载一个图片
            string imagePath = imagePaths[i];
            //封装成Bitmap
            Bitmap bm = new Bitmap(Image.FromFile(imagePath));
            //切割此Bitmap为了等比例缩放
            Bitmap newbm = ImageOperation.Cut(bm, 200, 0, 800, 800);
            //查找所绘制每张图的新坐标
            int x = xValue[i];
            int y = yValue[i];
            gp.DrawImage(newbm, x, y, 400, 400);
            bm.Dispose();
        }
        gp.Dispose();
        //保存为图片...  
    }    
  • 相关阅读:
    一个简单的禁止鼠标滚轮事件处理
    模仿抽奖转盘,并且用cookie记录历史次数
    学习jquery
    使用var提升变量声明
    Django 自带密码加密,自定密码加密方式 及自定义验证方式
    kindEditor使用并防止xss攻击(day88)
    python二维码生成库(qrcode)简介和实例
    js原型的区别
    js中 this与that
    python单元测试之unittest框架使用总结
  • 原文地址:https://www.cnblogs.com/zhuji/p/6296458.html
Copyright © 2011-2022 走看看