2012-11-13 158 views
3

我的代碼中有System.Drawing.Bitmap圍繞位圖繪製邊框

寬度固定,高度不等。

我想要做的是在位圖周圍添加一個白色邊框,大約20像素,全部4條邊。

這將如何工作?

+0

我認爲有關創建的圖形與寬度40像素和高度40像素位圖(各20側)的對象。我設置了白色背景,並在中間添加了位圖,但是我無法真正弄清楚如何做... – Karl

+0

而且......你試過了嗎?或者至少開始爲此編寫代碼? – LightStriker

回答

5

你可以在位圖後面畫一個矩形。矩形的寬度爲(Bitmap.Width + BorderWidth * 2),位置爲(Bitmap.Position - new Point(BorderWidth,BorderWidth))。或者至少我是這樣想的。

編輯: 下面是一些實際的源代碼,說明如何實現它(如果你有一個專門的方法來繪製圖像):位圖的

private void DrawBitmapWithBorder(Bitmap bmp, Point pos, Graphics g) { 
    const int borderSize = 20; 

    using (Brush border = new SolidBrush(Color.White /* Change it to whichever color you want. */)) { 
     g.FillRectangle(border, pos.X - borderSize, pos.Y - borderSize, 
      bmp.Width + borderSize, bmp.Height + borderSize); 
    } 

    g.DrawImage(bmp, pos); 
} 
+2

+1。這就是我要這麼做的方式,但OP可能需要一些代碼才能收回答案。 – jp2code

3

您可以使用「SetPixel」的方法類,用顏色設置nesessary像素。但更方便的是使用'Graphics'類,如下所示:

  bmp = new Bitmap(FileName); 
      //bmp = new Bitmap(bmp, new System.Drawing.Size(40, 40)); 

      System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp); 

      gr.DrawLine(new Pen(Brushes.White, 20), new Point(0, 0), new Point(0, 40)); 
      gr.DrawLine(new Pen(Brushes.White, 20), new Point(0, 0), new Point(40, 0)); 
      gr.DrawLine(new Pen(Brushes.White, 20), new Point(0, 40), new Point(40, 40)); 
      gr.DrawLine(new Pen(Brushes.White, 20), new Point(40, 0), new Point(40, 40)); 
+0

但是,此方法對位圖具有破壞性,只適用於插入邊框(儘管我會授予它,但我的方法僅適用於起始邊框)。 – antonijn

+0

是的,你是對的。我沒有考慮過位圖 –