Coodinate in stampa GDI+

mercoledì 11 febbraio 2009 - 17.03

Teech Profilo | Expert

Vorrei stampare dei dati presenti su una mia collection di classi con GDI+ (PrintDocument per intenderci).
Quando stampo (nell'evento PrintPage) uso questo genere di comando:
e.Graphics.DrawString("Stringa", font, Brushes.Black, x, y)
Il problema sono le coordinate X e Y.
Considerando che ho un foglio A4 di dimensioni 21x29.7 vorrei stampare dati anche affiancati a delle distanze definite: Codice con coordinate x=1 e descrizione con coordinata x=5 dove i valori sono espressi in centimetri... Ma le coordinate, che recupero con il seguente codice
Dim x As Single = e.MarginBounds.Left Dim y As Single = e.MarginBounds.Top
mi vengono restituite in pixel (almeno credo) ma non trovo una funzione per convertirle.

Ho provato ad usare questo genere di conversione
e.Graphics.PageUnit = GraphicsUnit.Millimeter
ma i dati restituiti sono sempre in pixel, mentre i dati inputati vengono convertiti (e questo è un grosso problema...)

Come posso fare?
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

alexmed Profilo | Guru

Ciao
Prova così:

Dim x As Single = e.MarginBounds.Left * 0.0254 (per i cm , 0.254 per i millimetri)
Dim y As Single = e.MarginBounds.Top ...come sopra

Una pagina in formato A4 è larga 210 mm oppure 827 (centesimi di pollice, se non ricordo male)

Ciao

alexmed

Teech Profilo | Expert

Valutando che la conversione deve essere fatta manualmente ho cambiato approccio: nell'evento PrintPage gestisco le costanti in centimetri e le converto in pollici lasciando la gestione dell'unità di misura invariata
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5