RenderTargetBitmap отображает изображение неправильного размера

Моя задача - показать пользователю эскиз каждой страницы своего XPS-документа. Мне нужно, чтобы все изображения были маленькими, поэтому я рендерил ихточек на дюйм установить 72,0 (я гуглил, что размер листа А4 с dpi 72,0 составляет 635x896). В основном я делаю следующее:

        List<BitmapImage> thumbnails = new List<BitmapImage>();
        documentPaginator.ComputePag,eCount();
        int pageCount = documentPaginator.PageCount;
        for (int i = 0; i < pageCount; i++)
        {
            DocumentPage documentPage = documentPaginator.GetPage(i);
            bool isLandscape = documentPage.Size.Width > documentPage.Size.Height;
            Visual pageVisual = documentPage.Visual;
            //I want all the documents to be less or equals to A4
            //private const double A4_SHEET_WIDTH = 635;
            //private const double A4_SHEET_HEIGHT = 896;
            //A4 sheet size in px, considering 72 dpi
            RenderTargetBitmap targetBitmap = new RenderTargetBitmap(
            (int)(System.Math.Min(documentPage.Size.Width, A4_SHEET_WIDTH)),
            (int)(System.Math.Min(documentPage.Size.Height, A4_SHEET_HEIGHT)),
            72.0, 72.0,
            PixelFormats.Pbgra32);
            targetBitmap.Render(pageVisual);
            BitmapFrame frame = BitmapFrame.Create(targetBitmap);
            PngBitmapEncoder encoder = new PngBitmapEncoder();
            encoder.Frames.Add(frame);
            BitmapImage image = new BitmapImage();
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                encoder.Save(ms);
                image.BeginInit();
                image.CacheOption = BitmapCacheOption.OnLoad;
                image.StreamSource = ms;
                if (isLandscape)
                {
                    image.Rotation = Rotation.Rotate270;
                }
                image.EndInit();
            }
            thumbnails.Add(image);
        }

Но когда я отрисовываю страницу документа (A4), ее размер на самом деле846x1194 вместо того, что я ожидал. Я попытался сделать dpi ниже (48.0), а размер изображения увеличился (я думаю, я просто не совсем понимаю, что такое dpi и как оно влияет на документ). Я пытался сделатьдюйм = 96,0и размер стал меньше. Я установил одно из изображений из коллекции экземпляров классаBitmapImage сгенерированный кодом выше в качестве источника дляImage control (я создаю приложение WPF), и если dpi установлен на 96.0, моя программа выглядит следующим образом:


Как видите, часть страницы вообще не отображается, она не помещается внутриImage контроль, даже если размер элемента управления установлен на635x896 поэтому, согласно приведенному выше коду, изображение должно отображаться правильно и весь текст должен соответствовать.
Какой результат я ожидаю в двух словах: я пытаюсь создать миниатюры страниц документа, но я хочу, чтобы они были меньше по сравнению с некоторым числом (извините, я не совсем уверен, как я могу сказать такие вещи на английском языке, в основном, если ширина страницы документа составляет 1200 пикселей, я хочу, чтобы это было1200/n, гдеn это «некоторое число», которое я упоминал ранее), но если размер сжатого изображения все еще больше, чем635x896 Я хочу чтобы размер был635x896.
Заранее спасибо. А также я прошу прощения за мой плохой английский.

Ответы на вопрос(1)

Ваш ответ на вопрос