IT정보공유/C#

C# 이미지위에 사각형 반투명하게 그리는 방법

알지오™ 2020. 12. 24.

PictureBox 컨트롤 등에 이미지를 표시하기 위해서는 Image 속성에 할당을 하면됩니다.

그리고 그 이미지 위에 무엇인가 추가적으로 이미지처리를 하기 위해서는 Graphics GDI+ 개체를 구해서 

드로잉을 해주면 원하는 글자나 선, 사각형, 원형 등의 도형을 그릴 수 있게 됩니다.

 

이때, 원본이미지 위에 도형이나 선을 투명하게 그려주면 좀더 세련되 보이고 멋있는 연출을 할 수 있습니다.

도형도 보이고, 이미지도 반투명하게 보이게 되니까요.

 

FillRectangle 함수와 DrawRectangle 함수를 이용한 반투명 도형그리기

 

반투명한 사각형을 그려보도록 하겠습니다. 샘플 소스를 참고하세요.

샘플로 사용한 사진은 걸그룹 블랙핑크입니다.

블랙핑크 원본

 

위 원본 이미지에 FillRectangle, DrawRectangle을 이용해 이미지 위에 투명한 도형을 그릴겁니다.

아래 사진처럼요. (2개의 Rectangle)

블랙핑크 반투명 사각형 그리기

 

//
public static Image DrawRect(Image img, string FileFullPath)
{
    int sx = 25; //큰 사각형 좌표
    int sy = 25;
    int ex = 575;
    int ey = 375;

    int sx2 = 50; //작은 사각형 좌표
    int sy2 = 150;
    int ex2 = 527;
    int ey2 = 344;
	
    Rectangle raBig;
    Rectangle raSmall;


    try
    {
        string realFileFullPath = Path.GetFileFullPath(FileFullPath);

        string[] sRect = realFileFullPath.Split('_');

        if (sRect.Length >= 5)
        {
            raBig = new Rectangle(sx, sy, ex - sx, ey - sy);

            raSmall = new Rectangle(sx2, sy2, ex2-sx2, ey2 - sy2);

            using (Graphics grp = Graphics.FromImage(img))
            {
                Brush bigBrush = new SolidBrush(Color.FromArgb(16, 0, 0, 255));
                grp.FillRectangle(bigBrush, raBig);

                Pen pSmall = new Pen(Color.FromArgb(128, 0, 255, 0), 4);
                pSmall.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                grp.DrawRectangle(pSmall, raSmall);
            }

            return img;

        }

    }catch(Exception ex)
    {
        
    }
    return img;
}
//

 

반투명을 위한 핵심 함수

 

Brush bigBrush = new SolidBrush(Color.FromArgb(16, 0, 0, 255));

이 코드에서 브러쉬인 bigBrush를 생성할때 Color.FromArgb(16, 0, 0, 255) 를 통해 Alpha값을 지정하여 주는게 핵심포인트입니다.

 

Pen pSmall = new Pen(Color.FromArgb(128, 0, 255, 0), 4);

Pen을 생성할 때도 마찬가지고요.

 

댓글

💲 추천 글