ieri ho iniziato a parlare a grandi linee delle Texture e delle coordinate necessarie per applicarle correttamente.
ritornando a casa, ho avuto modo di rivedere il codice che avevo preparato per l'esempio, e renderelo più facile da capire e più facile da spiegare per me.
per Texture intendo un immagine, opportunamente ripetuta ed affiancata, al fine di ricoprire e conferire così alla geometria "nuda" un look più realistico ed accattivante.
per gli esempi utilizzeremo una semplice textute, con un griglia con lo 0.0 nell'origine del sistema di coordinate GDI.
e una semplice geometria di cui ho evidenziato le coordinate dei vertici e il contorno, l'asse verde rappresenta le coordinate positive X, quello rosso la Y e quello nero la Z
imposteremo la proprietà TextureCoordinates="0,0 1,0 1,1 0,1" corrispondenti ad una coppia di coordinate U V (una per ogni vertice), con valori compresi tra 0 e 1, valori inferiori o maggiori portano alla creazioni da particolari effetti tutti da sperimentare :).
nel disegno, ho leggermente scostato la Bitmap per rendere più chiaro, che attribuendo al vertice A le coordinate UV pari a 0,0 faremo coincidere l'origine del sistema di coordinate GDI in quel punto, in senzo orario (importante) attribuiamo le coordinate hai rimaneti vertici B 1,0 C 1,1 e D 0,1
il codice XAML completo è il seguente:
<GeometryModel3D> <GeometryModel3D.Material> <BrushMaterial> <BrushMaterial.Brush> <ImageBrush Viewport="0,0,0.5,1" ViewportUnits="Absolute" TileMode="None" HorizontalAlignment="Left" VerticalAlignment="Top" ImageSource="griglia.gif"> </ImageBrush> </BrushMaterial.Brush> </BrushMaterial> </GeometryModel3D.Material> <GeometryModel3D.Geometry> <MeshGeometry3D Positions="0.5,0,0.5 3,0,0.5 3,0,2 0.5,0,2" Normals="0,1,0 0,1,0 0,1,0 0,1,0 " TriangleIndices="0 1 2 2 3 0 " TextureCoordinates="0,0 1,0 1,1 0,1"/> </GeometryModel3D.Geometry> </GeometryModel3D>
ecco il risultato:
nel pennello abbiamo impostato la proprietà TileMode a None, evitanto così che la bitmap fosse ripetuta per comprire l'intera superficie della geometria, cambiando valore della proprietà (un enumeratore) e impostando valori differenti per Viewpor (la dimensione del Tile rispetto al "contenitore"):
Viewport="0,0,0.5,1"
ViewportUnits="Absolute"
TileMode="Tile"
Viewport="0,0,0.5,0.5"
ViewportUnits="Absolute"
TileMode="Tile"
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- .NET Framework 4.0 beta 1: WPF 4.0, il 18 maggio 2009 alle 15:40
- CTP che va SDk che trovi, il 20 luglio 2006 alle 12:15
- bye bye ScreenSpaceLines3D, il 23 giugno 2006 alle 15:04
- WinFX cambiamenti natalizzi, il 21 dicembre 2005 alle 10:56
- Avalon tutto scorre , l'8 novembre 2005 alle 15:24
- Windows Presentation Foundation, il 26 settembre 2005 alle 15:03