Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Coordinate logiche e dimensioni

Devo disegnare in una picture a dimensione variabile un rettangolo (o
rettangolo stondato o elisse che sia). Ho preparato con le funzioni API
rectangle e roundrect le routine necessarie a permettere la scelta del tipo
di linea e del suo spessore, del fondo e del tipo di fondo da usare.
Piccolo inconveniente, non riesco ad adattarlo perfettamente alla mia
picture.
Ho provato di tutto, anche usando un coefficente proporzionale, ma anche
questo ha misaramente fallito, se è giusto per picture piccole non lo è per
quelle grandi.
Come posso risolvere il problema.
Grazie e ciao
    Sharkman

 picture.
Qual č il soggetto di questa frase? :)
Qual č il SO che utilizzi?
Se ho capito ho avuto lo stesso anch'io: semplicemente win9x non supporta
brush con picture piů grandi di 64x64 pixels (mi pare di ricordare).
Se non č questo, non ho proprio capito.
Ciao

 ha scritto nel messaggio
news:x_6O8.41443$5i1.1...@news2.tin.it...

Dunque il soggetto č il rettangolo, uso W2K uso l'API Rectangle e Ellipse.
Per spiegarmi meglio (spero) faccio alcuni esempi:
Con il Width impostato a 1000 twips per ottenre la totale copertura
dell'immagine con il rettangolo devo moltiplicare il Width della picture per
0,694. Se imposto il Width a 7800 (sempre come esembio) ed disegno il
rettangolo con lo stesso fattore di moltiplicazione, la picture risulta
essere piů grande del rettangolo disegnato, ovvero a destra mi resta uno
spazio vuoto.
Cmq se servisse posto anche il codice della funzione usata e delle righe che
la richiamano:
Public Sub Ret(Ctrl As Control, X1 As Single, Y1 As Single, X2 As Single, _
                                Y2 As Single, DimBordo As Single, _
                                ByVal TipoBordo As Penne, ColBordo As Long,
_
                                ColFondo As Long, ByVal TipoFondo As
Riempimenti)
    Dim Pennello As Long 'Pennello per tipo e colore fondo
    Dim Penna As Long   'Tipo, colore e dimensione linea di disegno
    'creo pennelli e penne per il disegno
    Pennello = CreateHatchBrush(TipoFondo, ColFondo)
    Penna = CreatePen(TipoBordo, DimBordo, ColBordo)
    'Seleziono i pennelli creati
    DeleteObject SelectObject(Ctrl.hdc, Penna)
    DeleteObject SelectObject(Ctrl.hdc, Pennello)
    'disegno
    Rectangle Ctrl.hdc, X1, Y1, X2, Y2
    DeleteObject Penna
    DeleteObject Pennello
End Sub
Ret pctRettangoli(Indice), 0, 0, 130, 65, 1, Continua, _
                                    RGB(0, 0, 0), RGB(255, 255, 255), Pieno
Ciao
    Sharkman

 0,694. Se imposto il Width a 7800 (sempre come esembio) ed disegno il
beh hai la proprietà :
Screen.TwipsPerPixelX
Screen.TwipsPerPixelY
usale :))
ma perchè non imposti la proprietà scalemode in pixel del form ?
e magari poi anche quella per il picture?
eviterai di fare tutte queste conversioni :)))
ciao

 ha scritto nel messaggio
news:3IhO8.13173$j65.3...@twister1.libero.it...

Ho provato tutti i tipo di Scalemode, di scalewidth e scaleheight ma non
punzionano, pare che l'API (anzi è sicuro) non controlli e utilizzi il
valore si scale impostato ma ha i valori da passargli sono costanti in tutti
i tipi di scala.
Anche Screen.TwipsPerPixelX non funziona per quanto sopra espresso...
Ciao
    Sharkman

 ha scritto nel messaggio
news:3IhO8.13173$j65.3...@twister1.libero.it...

Avevi ragione così funziona, solo che per farlo funzionare ho dovuto fare
una piccola aggiunta (.width-screen.twipsperpixelX)-DimLinea*2 altrimenti
nulla da fare
Grazie e ciao
    Sharkman

 nulla da fare
Le funzioni API funzionano sempre e comunque in pixel.
Se la tua picture ha il bordo dovrai appunto tenerne conto, spostando
l'origine.
Ciao