Tisk ve VB2008 panel   otázka

VB.NET

Dobrý den!

K tisku používam nasledujíci kod:

imports System.Windows.Forms
Imports System.Runtime.InteropServices

Public Class MDIParent1
    Private Enum DrawingOptions
        PRF_CHECKVISIBLE = &H1
        PRF_NONCLIENT = &H2
        PRF_CLIENT = &H4
        PRF_ERASEBKGND = &H8
        PRF_CHILDREN = &H10
        PRF_OWNED = &H20

    End Enum
    Private Const WM_PRINT As Integer = &H317
    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
    Private Shared Function SendMessage(ByVal handle As IntPtr, ByVal msg As Integer, ByVal wparam As IntPtr, ByVal lparam As Integer) As IntPtr
    End Function
    Private bmp As Bitmap

    Private Sub PrintPreviewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewToolStripMenuItem.Click
        bmp = New Bitmap(Panel1.DisplayRectangle.Width, Panel1.DisplayRectangle.Height)
        Dim g As Graphics = Graphics.FromImage(bmp)
        Dim hdc As IntPtr = g.GetHdc()
        SendMessage(Panel1.Handle, WM_PRINT, hdc, DrawingOptions.PRF_OWNED Or DrawingOptions.PRF_CHILDREN Or DrawingOptions.PRF_CLIENT Or DrawingOptions.PRF_NONCLIENT)
        g.ReleaseHdc(hdc)
        g.Dispose()
        PrintPreviewDialog1.document = Printdocument1
        PrintPreviewDialog1.showdialog()
    End Sub

    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        e.Graphics.DrawImage(bmp, 0, 0)

    End Sub

Problem je v kvalite tisku dat z formularu resp. panelu.

Jak se da docílit zlešení kvality tisku obsahu prvku "panel"

Dik Peter

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proč proboha používáte k tisku P/Invoke, když to vůbec není potřeba?! Tisk formuláře se zde řešil už mnohokrát a vždy byla odpověď, že přímý tisk formuláře je hovadina a má se použít ruční tisk pomocí PrintDocument.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nechcete o tom napsat článek? Ptá se na to poslední dobou hodně lidí a nic podrobnějšího než "použijte PrintDocument" tady nemáme. Já bych ho klidně napsal, bohužel nemám čas.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

pokud by to bolo možné bolo by to super lebo je to dosť zakerná vec na nete je vela riešení ale na pochopenie pre začiatočnika komplikované

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdá se mi to zbytečné, pracuje se s tím uplně stejně jako kreslení pomocí Graphics a s tím už se setkalo asi většina lidí, navíc i kdybych článek napsal, tak stejně budou všichni používat hovadské tisknutí formuláře, protože to je jednodušší.

nahlásit spamnahlásit spam -3 / 3 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback