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();
        //保存为图片...  
    }    
  • 相关阅读:
    jbpm入门样例
    MinGW 介绍
    Linux守护进程的编程实现
    完毕port(CompletionPort)具体解释
    Linux makefile 教程 很具体,且易懂
    mysql数据文件迁移到新的硬盘分区的方法
    winform正在使用dsoframer迅速&quot;Unable to display the inactive document.Click here to reacitive the document.&quot;
    Android学习路径(七)建立Action Bar
    FreeBSD包管理
    BZOJ 1096 ZJOI2007 仓库建设 边坡优化
  • 原文地址:https://www.cnblogs.com/zhuji/p/6296458.html
Copyright © 2011-2022 走看看