Vb 2005 - Picture BOX in Centimetri

mercoledì 17 giugno 2009 - 11.15

dream Profilo | Newbie

Ciao a tutti.
Ho la necessità di visualizzare su un form una picture box in cm.
Dovendo stampare su delle tesserine, vorrei che nella picture box venga visualizzata l'immagine con le dimenzioni effettive (praticamente se la tessera è di 8 cm X 4 cm, vorrei che la picture box sia di 8x4 cm).

Il mio problema è che non riesco a fare la conversione in cm in modo che in ogni schermo la picture box sia sempre della stessa dimkenzione in cm.

Grazie

Jeremy Profilo | Guru

http://lmgtfy.com/?q=convertire+cm+in+pixel

dream Profilo | Newbie

Seguendo il tuo link ho trovato questo:

i dpi sono punti per pollici, quindi 300 dpi significa che ogni pollice (2,54 cm) contiene 300 pixel.
A questo punto per sapere quanti pixel stanno in un 70x100 cm basta che trasformi la misura in pollici (27.6x39.4 in) e la moltiplichi per 300 (che è il numero di pixel contenuto in ogni pollice).

27.6x300=8280 pixel
39.4x300=11820 pixel


Quindi ho ricavato i dpi del mio monitor così:

Dim g As Graphics = Me.CreateGraphics
PPIX = g.DpiX 'Pixels per Inch
PPIY = g.DpiY

Ho ottenuto il valore 96 che corrisponde con il valore indicato dal pannello di controllo della scheda video.

Ora volendo avere una picture box di 8x5 cm ho fatto così:
PICTUREbOX.Width = 8 /2.54 * 96
PICTUREbOX.Height = 5/2.54 * 96

ma la picture box mi viene molto più larga e molto più alta.
Ho ottenuto dei valori migliori considerandi i dpi a 72 invece che i reali 96 ma solo migliori e non precisi.

Devo tenere conto anche della risoluzione o solo dei DPI?

Inoltre dovrei stampare su una stampante di CARD ( cim k300 vista da win come eltron p310 collegata con cavo parallelo) mediante il driver di windows.
La comunicazione avviene giustamente e riesco a stampare delle stringhe. il problema è che non riesco a mandare l'immagine alla stampante con le giuste dimenzioni.

Questo è il mio codice:

Private Sub cmdStampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStampa.Click
If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Print.PrinterSettings = PrintDialog1.PrinterSettings
MyPrint.Print()
End If
End Sub

Private Sub MyPrint_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles MyPrint.PrintPage
e.Graphics.DrawImage(Me.pbTessera.Image, 2, 5, Me.pbTessera.Image.Width, me.pbTessera.Image.Height)

end sub

La tessera ha un formato di 8.4 x 5.5 cm.
Scusate se non mi sono spiegato bene.

Grazie ancora per l'aiuto

dream Profilo | Newbie

C'è qualcuno che sa aiutarmi per favore?

alexmed Profilo | Guru

Ciao
Questo ti dà le dimensioni del foglio preimpostato, in questo caso un A4

MsgBox(Me.PrintDocument1.DefaultPageSettings.PaperSize.Width)
MsgBox(Me.PrintDocument1.DefaultPageSettings.PaperSize.Height)

ora prova a dividere per 0.254 le dimensioni di prima

MsgBox(Me.PrintDocument1.DefaultPageSettings.PaperSize.Width * 0.254)
MsgBox(Me.PrintDocument1.DefaultPageSettings.PaperSize.Height * 0.254)

otteniamo i millimetri. Giusto?

Ora se vuoi stampare con quelle dimensioni non ti resta che fare la trasformazione:


Dim tesseraW As Integer = 84 / 0.254
Dim tesseraH As Integer = 55 / 0.254

e.Graphics.DrawImage(Me.pbTessera.Image, 2, 5, tesseraW, tesseraH)

Questo per la stampa.

Su monitor non mi preoccuperei troppo ed andrei a impostare delle dimensioni di:

Width (84 * 0.254) = 331
Height (55 *0.254) = 216

Ciao

alexmed
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5