2015-02-20 1 views
0

Привет Я довольно новыми для C# GDI + графики,центр изображения на другое изображение C#

Я хочу, чтобы нарисовать образ над другим, который должен быть по центру по горизонтали и по вертикали в фиксированной высоте и ширине контейнера на изображении,

Я пытался сделать это с помощью горизонтального центрирования и выход странно ..

Я делюсь комментируемой код, как я пытаюсь сделать это, дайте мне знать, если есть более простой способ сделать это , Я просто хочу масштабировать и центрировать изображение.

  //The parent image resolution is 4143x2330 
      //the container for child image is 2957x1456 
       Image childImage = Image.FromFile(path.Text.Trim()); 
       Image ParentImage = (Image)EC_Automation.Properties.Resources.t1; 
       Bitmap bmp2 = (Bitmap)ParentImage; 
       Graphics graphic = Graphics.FromImage(ParentImage); 
      graphic.InterpolationMode = InterpolationMode.HighQualityBicubic; 
      double posX = (2957/2.0d) - (childImage.Width/2.0d); 
      //HAlf of the container size - Half of the image size 
      //should make it center in container 
      graphic.DrawImage((Image)childImage, 
       new Rectangle(new Point((int)posX, 420), new Size(2957, 1456))); //Drawing image 
+0

его трудно устранить странно, вы можете быть немного более описательный на то, что встречающийся ??? – Sorceri

+0

'ScaleImage'is что? «графический» - это что? (созданный как?) - Также: попробуйте отформатировать строки кода, чтобы они вписывались в область кода без прокрутки! – TaW

+0

Я попытался воспроизвести проблему, но это работает правильно. Убедитесь, что содержимое, которое вы используете в качестве изображений, правильно загружено (как «ParentImage», так и «childImage»). –

ответ

-1

решаемые, я рисовал образ фиксированной ширины, в то время как оно должно было быть с новой шириной на основе соотношения сторон и новой высоту,

Также я принимал пытаюсь найти центр изображение из контейнера, который должен был быть центром всего родительского изображения

3
public Image ScaleImage(Image image, int maxWidth, int maxHeight) 
{ 
     var ratioX = (double)maxWidth/image.Width; 
     var ratioY = (double)maxHeight/image.Height; 
     var ratio = Math.Min(ratioX, ratioY); 

     var newWidth = (int)(image.Width * ratio); 
     var newHeight = (int)(image.Height * ratio); 

     var newImage = new Bitmap(maxWidth, maxWidth); 
     using (var graphics = Graphics.FromImage(newImage)) 
     { 
      // Calculate x and y which center the image 
      int y = (maxHeight/2) - newHeight/2; 
      int x = (maxWidth/2) - newWidth/2; 

      // Draw image on x and y with newWidth and newHeight 
      graphics.DrawImage(image, x, y, newWidth, newHeight); 
     } 

     return newImage; 
}