2012-10-25 5 views
4

.png 이미지가 있습니다. 기본 이미지에 오버레이하고 싶습니다..NET에서 이미지를 오버레이하는 방법

내 오버레이 이미지에는 빨간색 사선이 포함되어 있습니다. 기본 이미지에 오버레이 이미지와 같은 좌표로 빨간색 선을 겹쳐서 표시해야합니다.

문제는 내가 좌표 위치가 없다는 것입니다.

C#을 사용하여 프로그래밍 방식으로 찾을 필요가 있습니다. 오버레이 이미지는 항상 투명하거나 흰색 배경입니다. 오버레이 이미지에서 라인 좌표를 찾는 코드는 무엇입니까?

+1

"동일한 좌표"란 무엇입니까? 아마 몇몇 삽화는 그것을 명확하게 할 것이다. –

+0

오버레이 이미지에서 내 라인이 20,20에서 시작하여 120,50에서 끝나면 내베이스 이미지에 20,20에서 끝나고 120,50에서 끝나는 라인이 필요합니다. – Gayatri

답변

0

WPF를 사용하는 경우 이미지가 단순한 선인 경우 오버레이 대신 path을 사용하지 않는 이유는 무엇입니까? 이렇게하면 크기에 관계없이 크기를 조정할 수 있으며 치수를 조작 할 수있는 방법이 있습니다.

Winforms를 사용하는 경우 활용할 수있는 일부 similar graphics drawing capabilities이 있습니다. 이미지의 크기를 얻기 당신이있는 PictureBox를 사용하는 가정, 쉽게해야합니다, 다음과 같은 속성이 충분해야 마찬가지로

myPictureBox.Top 
myPictureBox.Bottom 
myPictureBox.Left 
myPictureBox.Right 

을하는 WPF 이미지를 위해 :

myImage.Margin 
10

당신은 새로운 이미지를 만들 수 있습니다 배경 이미지를 먼저 렌더링 한 다음 오버레이 이미지를 렌더링합니다. 오버레이에는 알파 채널이 있고 선은 어디에 있어야하는지 (즉, 선의 왼쪽과 왼쪽에 불투명 한 공간이 있음을 의미) 좌표가 필요하지 않습니다. 그림 코드 :

Image imageBackground = Image.FromFile("bitmap1.png"); 
Image imageOverlay = Image.FromFile("bitmap2.png"); 

Image img = new Bitmap(imageBackground.Width, imageBackground.Height); 
using (Graphics gr = Graphics.FromImage(img)) 
{ 
    gr.DrawImage(imageBackground, new Point(0, 0)); 
    gr.DrawImage(imageOverlay, new Point(0, 0)); 
} 
img.Save("output.png", ImageFormat.Png); 
+0

감사 합니다만 위의 코드를 사용하면 두 번째 이미지가 배경 이미지와 겹치고 있습니다. 예를 들어 내 배경 이미지가 얼굴이고 사용자가 얼굴에 귀를 추가하기 위해 편집했다고 말한 경우 두 이미지는 다르게 저장됩니다. 얼굴이 사용자가 추가 한 정확한 위치에 귀가 있어야하는 방식으로 이미지를 병합하고 싶습니다. – Gayatri

+0

생성 된 이미지가 내 스크린 크기보다 크기 때문에 처음에는 코드에 약간의 문제가있었습니다. 이로 인해 이미지의 일부가 잘립니다. gr.DrawImage (imageBackground, new System.Drawing.Rectangle (0, 0, imageBackground.Width, imageBackground.Height))를 사용하여 문제를 해결했습니다. gr.DrawImage (imageOverlay, new System.Drawing.Rectangle (0, 0, imageBackground.Width, imageBackground.Height)); gr.DrawImage (imageBackground, new Point (0, 0)) 대신; gr.DrawImage (imageOverlay, new Point (0, 0)); – Rockney

관련 문제