2012-11-13 4 views
3

코드에 System.Drawing.Bitmap이 있습니다.비트 맵 주변에 테두리를 그립니다.

너비가 고정되어 있으며 높이가 다릅니다.

내가 원하는 것은 비트 맵 주위에 약 20 픽셀의 흰색 경계선을 모든 4 가장자리에 추가하는 것입니다.

어떻게 작동합니까?

+0

난 그래픽 비트 맵 (양쪽 20)의 폭과 높이를 픽셀 +40 +40 PX 객체를 만드는 방법에 대해 생각했다. 흰색 배경을 설정하고 중간에 비트 맵을 추가하지만 실제로 어떻게해야 할지를 알 수는 없습니다 ... – 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'방법 : 여기 은 (이미지를 그릴 전용 방법을 가지고 있다면)을 구현하는 방법을 설명하는 몇 가지 실제 소스 코드 클래스를 사용하여 색상이있는 픽셀을 설정합니다. 그러나 다음과 같이 더 편리 '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

네, 맞습니다. 나는 비트 맵에 대해 생각하지 않았다. –

관련 문제