title: Photo printing in C#
body: <p>I have the following <code>C#</code> code to print <code>8x6</code> photos in a desktop application. </p>
  
  <p>It works on regular printer with regular letter size paper.<br>
  But my client is using kodak printer with <code>8x6</code> paper, the photos are printing but their size is different, they are not printing in full <code>8x6</code> size, I'm doing something wrong. </p>
  
  <p>Can someone please guide me in right direction. </p>
  
  <pre><code>public void Print(List ListToBePrinted)
  {
      PrintDialog SelectedPrinter = new PrintDialog();
      if (SelectedPrinter.ShowDialog() == true)
      {
          PrintCapabilities printerCapabilities = SelectedPrinter.PrintQueue.GetPrintCapabilities();
          Size PageSize = new Size(printerCapabilities.PageImageableArea.ExtentWidth, printerCapabilities.PageImageableArea.ExtentHeight);
          Size PrintableImageSize = new Size();
          foreach (Uri aUri in ListToBePrinted)
          {
              DrawingVisual drawVisual = new DrawingVisual();
              ImageBrush imageBrush = new ImageBrush();
              imageBrush.ImageSource = new BitmapImage(aUri);
              imageBrush.Stretch = Stretch.Fill;
              imageBrush.TileMode = TileMode.None;
              imageBrush.AlignmentX = AlignmentX.Center;
              imageBrush.AlignmentY = AlignmentY.Center;
              if (imageBrush.ImageSource.Width &gt; imageBrush.ImageSource.Height)
                  PrintableImageSize = new Size(768, 576); //8x6
              else PrintableImageSize = new Size(576, 768); //6x8 
              double xcor = 0; double ycor = 0;
              if (imageBrush.ImageSource.Width &gt; imageBrush.ImageSource.Height)
              {
                  if ((PageSize.Width - PrintableImageSize.Height) &gt; 0)
                      xcor = (PageSize.Width - PrintableImageSize.Height) / 2;
                  if ((PageSize.Height - PrintableImageSize.Width) &gt; 0)
                      ycor = (PageSize.Height - PrintableImageSize.Width) / 2;
              }
              else
              {
                  if ((PageSize.Width - PrintableImageSize.Width) &gt; 0)
                      xcor = (PageSize.Width - PrintableImageSize.Width) / 2;
                  if ((PageSize.Height - PrintableImageSize.Height) &gt; 0)
                      ycor = (PageSize.Height - PrintableImageSize.Height) / 2;
              }
              using (DrawingContext drawingContext = drawVisual.RenderOpen())
              {
                  if (imageBrush.ImageSource.Width &gt; imageBrush.ImageSource.Height)
                  {
                      drawingContext.PushTransform(new RotateTransform(90, PrintableImageSize.Width / 2, PrintableImageSize.Height / 2));
                  }
                  drawingContext.DrawRectangle(imageBrush, null, new Rect(xcor, ycor, PrintableImageSize.Width, PrintableImageSize.Height));
              }
              SelectedPrinter.PrintVisual(drawVisual, "Print");
          }
      }
  }
  </code></pre>