C#中Bitmap類實現對圖像操做的一些方法

導入如下兩個包:函數

    System.Drawing;字體

      System.Drawing.Imaging;this

建產對象:spa

     Bitmap bm = new Bitmap("c:/1.bmp");.net

縮放:orm

     Bitmap bm1 = new Bitmap(bm,width,height);對象

格式轉換:圖片

     bm.save("c:/1.jpg",ImageFromat.Jpeg);內存

     bm1.Save("c:/1.gif", ImageFormat.Gif);圖片處理

剪切一個區域:

     //剪切大小

    int cutwidth;

      int cutheight;

     Graphics g;

     //以大小爲剪切大小,像素格式爲32位RGB建立一個位圖對像

     Bitmap bm1 = new Bitmap(width,height,PixelFormat.Format32bppRgb) ;

    //定義一個區域

     Rectangle rg = new Rectangle(0,0,cutwidth,cutheight);

     //要繪製到的位圖

     g = Graphics.FromImage(bm1);

     //將bm內rg所指定的區域繪製到bm1

     g.DrawImage(bm,rg)

============================================
C#Bitmap代替另外一個Bitmap的某部分
Bitmap bm = new Bitmap(寬度, 高度);// 新建一個 Bitmap 位圖 
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bm); // 根據新建的 Bitmap 位圖,建立畫布 
g.Clear(System.Drawing.Color.Black);// 使用黑色重置畫布 
g.DrawImage(源位圖, ......); // 繪製「源位圖」,後面有若干參數控制大小、座標等等功能。
==================================================
C# 圖片處理之:旋轉圖片任意角度
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客 C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客     ///<summary>
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客        /// 任意角度旋轉
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客        ///</summary>
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客        ///<param name="bmp">原始圖Bitmap</param>
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客        ///<param name="angle">旋轉角度</param>
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客        ///<param name="bkColor">背景色</param>
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客        ///<returns>輸出Bitmap</returns>
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客        publicstatic Bitmap KiRotate(Bitmap bmp, float angle, Color bkColor)
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客 C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客       {
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客            int w = bmp.Width +2;
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客            int h = bmp.Height +2;
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             PixelFormat pf;
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客            if (bkColor == Color.Transparent)
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客 C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客           {
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客                 pf = PixelFormat.Format32bppArgb;
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             }
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客            else
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客 C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客           {
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客                 pf = bmp.PixelFormat;
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             }
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             Bitmap tmp =new Bitmap(w, h, pf);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             Graphics g = Graphics.FromImage(tmp);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             g.Clear(bkColor);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             g.DrawImageUnscaled(bmp, 1, 1);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             g.Dispose();
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             GraphicsPath path =new GraphicsPath();
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             path.AddRectangle(new RectangleF(0f, 0f, w, h));
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             Matrix mtrx =new Matrix();
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             mtrx.Rotate(angle);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             RectangleF rct = path.GetBounds(mtrx);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             Bitmap dst =new Bitmap((int)rct.Width, (int)rct.Height, pf);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             g = Graphics.FromImage(dst);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             g.Clear(bkColor);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             g.TranslateTransform(-rct.X, -rct.Y);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             g.RotateTransform(angle);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             g.InterpolationMode = InterpolationMode.HighQualityBilinear;
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             g.DrawImageUnscaled(tmp, 0, 0);
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             g.Dispose();
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客             tmp.Dispose();
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客            return dst;
C中Bitmap類實現對圖像操做的一些方法 - yishimengying - yishimengying的博客         }
-------------------------
這張圖由如下代碼產生。左面的是用DrawString函數直接繪製在Form上的,右面的是在Bitmap對象中繪製好後,DrawImage到窗體上的。能夠看到文本顯示效果很是不一樣。由於我想使用雙緩衝,把大量文本先繪製在BitMap上,再讓它顯示出來,可是兩種顯示效果不同是沒法容忍的。請問,這是爲何?怎樣讓兩種方法繪製的文本顯示效果如出一轍即便換了字體,兩種方法的顯示效果仍然不一致。
private void Form1_Paint(object sender, PaintEventArgs e) {          bmp = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);     Graphics gBmp = Graphics.FromImage(bmp);//內存位圖     Graphics gForm = e.Graphics;//Form     for (int i = 1; i < 20; i++)     {         System.Drawing.Font f = new Font("宋體", i, FontStyle.Regular);         gForm.DrawString("this is a test", f, Brushes.Black, new PointF(10f, i*Font.Height));         gBmp.DrawString("this is a test", f, Brushes.Black, new PointF(0f, i * Font.Height));     }     gForm.DrawImage(bmp, new Point(200, 0));
相關文章
相關標籤/搜索