2013-07-16 32 views
0

我想把图像放在一个更大的图像上。但内部图像在drawImage()后被裁剪。这里是我的代码:C#graphics.drawImage()裁剪我的图像

Bitmap im = new Bitmap("D:\\Steffen\\New folder\\I1\\I1\\" + filename + ".png"); 
int sizeX = im.Width; 
int sizeY = im.Height; 
int size = 0; 
bool isWidth = false; 
if (sizeX > sizeY) 
{ 
    size = sizeX; isWidth = true; 
} 
else if(sizeY > sizeX) 
{ 
    size = sizeY; isWidth = false; 
} 

filename = filename + "New"; 
Bitmap bg = new Bitmap(size,size); 
SolidBrush brush = new SolidBrush(Color.Aqua); 

using (Graphics g = Graphics.FromImage(bg)) 
{ 
    g.FillRectangle(brush, 0, 0, size, size); 
    if (isWidth==true) 
    { 
     g.DrawImage(im, 0, (size - sizeY)/2); 
    } 
    else if(isWidth==false) 
    { 
     g.DrawImage(im, (size-sizeX)/2, 0); 
    } 
} 

在此先感谢

+2

没有摄制。顺便说一句,如果'sizeX == sizeY',你没有'size'的值。 – LarsTech

+0

谢谢你,但它仍然不会影响到这个问题,因为我正在测试不成熟的图像 – user2588535

+0

第一个bitmap'im'有24位深度的365x500像素 – user2588535

回答

0

我的猜测是图像的分辨率问题:

试试这样说:

Bitmap im = new Bitmap("D:\\Steffen\\New folder\\I1\\I1\\" + filename + ".png"); 
im.SetResolution(96F, 96F); 
+0

是啊!你的权利。感谢这个想法。我已经通过将第一个位图的“位深度”转换为与第二个“公共静态位图ConvertTo16bpp(Image img)”相同的方式来解决此问题(图片img.wid,新的位图(img.Width,img.Height,System.Drawing.Imaging.PixelFormat。 Format16bppRgb555); (DWG = Graphics.FromImage(bmp)) return bmp; }' – user2588535

+0

请注意96 dpi不保证是正确的。它会越来越不正确:) Graphics.DpiX/Y很重要。使用DrawImage(图像,矩形)过载更容易,所以这没关系。 –