2012-10-25 87 views
4

我想要在基礎圖像上疊加一個.png圖像。如何在.NET中疊加圖像

我的疊加圖像只包含一條紅色的斜線。我需要在疊加圖像上以相同的座標疊加在基礎圖像上的紅線。

問題是我沒有座標位置。

我需要用C#編程查找它。疊加圖像將始終爲透明或白色背景。從疊加圖像找到線座標的代碼是什麼?

+1

什麼是「同一座標」?也許一些插圖會使它更清晰。 –

+0

如果在疊加圖像中我的行從20,20開始到120,50結束,那麼我需要該行出現在我的基本圖像20,20和結束於120,50。 – Gayatri

回答

0

如果您使用的是WPF,那麼爲什麼不使用path代替圖像,如果它是簡單的線條?這將允許它縮放到任意大小,並且具有操縱其尺寸的方法。

如果您使用的是Winforms,那麼您可能會利用一些similar graphics drawing capabilities。獲取圖像的尺寸應該是容易的,假設你使用一個圖片,下面的屬性應該足夠了:

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

同樣,對於一個WPF圖片:

myImage.Margin 
10

您可以創建新的圖像,先渲染背景圖像,然後在其上渲染覆蓋圖像。由於覆蓋有alpha通道和線放置在它應該是(我的意思是有不透明的空間上線和左側),你不需要座標。插圖代碼:

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,新的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)); grdrawImage(imageOverlay,new Point(0,0)); – Rockney