Как улучшить качество печати, когда я печатаю Win Form в C # - PullRequest
3 голосов
/ 22 июня 2011

Я пытаюсь распечатать свою форму, используя GDI, но когда я ее распечатываю, качество печати не так уж и хорошее (не знаете, получило ли изображение псевдоним?), Размер формы - 700x700, также есть один параметр, который понятен-raster op code-, вот код использую ...

  private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
    {
        Graphics g1 = this.CreateGraphics();
        System.Drawing.Image MyImage = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height, g1);
        Graphics g2 = Graphics.FromImage(MyImage);
        IntPtr dc1 = g1.GetHdc();
        IntPtr dc2 = g2.GetHdc();
        BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, 13369376);
        g1.ReleaseHdc(dc1);
        g2.ReleaseHdc(dc2);
        Bitmap bmp = new Bitmap(MyImage);

        int x = e.MarginBounds.X;
        int y = e.MarginBounds.Y;
        int width = bmp.Width;
        int height = bmp.Height;
        if ((width / e.MarginBounds.Width) > (height / e.MarginBounds.Height))
        {
            width = e.MarginBounds.Width;
            height = bmp.Height * e.MarginBounds.Width / bmp.Width;
        }
        else
        {
            height = e.MarginBounds.Height;
            width = bmp.Width * e.MarginBounds.Height / bmp.Height;
        }
        System.Drawing.Rectangle destRect = new System.Drawing.Rectangle(x, y, width, height);
        e.Graphics.DrawImage(bmp, destRect, 0, 0, bmp.Width, bmp.Height, System.Drawing.GraphicsUnit.Pixel);
    }

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Возможно, у вас проблема с исходным изображением. Дайте мне ссылку на изображение. Проверьте размер изображения.

Попробуйте вставить строку g2.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

Удачи!

0 голосов
/ 22 июня 2011

Это нормально, что результат будет масштабирован и наложен. В источнике слишком мало пикселей по сравнению с разрешением современного принтера. Подумайте об использовании WPF, который использует векторную визуализацию, поэтому при масштабировании нет потерь / искажений. Приветствия

...