La risoluzione del monitor non devi considerarla, quello su cui devi lavorare e la risoluzione del sistema e dell' immagine.
Basta ottenere dei dati e applicare delle formule di conversione.
Con il codice di seguito imposto le dimensioni in millimetri tramite due NumericUpDown e ridimensiono una PictureBox in base alla risoluzione del sistema in uso. Aldilà di cosa si vede sul monitor la dimensione reale corrisponde a quella impostata con i NumericUpDown.
Vedi tu se può esserti utile come "ispirazione":
codice:
Dim dpi_sistema As Integer
Dim rettangolo_X As Integer
Dim rettangolo_Y As Integer
'mmXp = rapporto millimetri per pollice (1 pollice = 2,54 centimetri)
Dim mmXp As Integer = 25.4
'ottengo i dpi del sistama
Dim g As Graphics = Me.CreateGraphics
dpi_sistema = g.DpiX
g.Dispose()
'conversione (millimetri*dpi del sistema/millimetri per pollice = punti per pollice)
rettangolo_X = System.Math.Round(NumericUpDownX.Value * dpi_sistema / mmXp)
rettangolo_Y = System.Math.Round(NumericUpDownY.Value * dpi_sistema / mmXp)
PictureBox1.Width = rettangolo_X
PictureBox1.Height = rettangolo_Y