Select the product you need help with
How to: Disegna contorni icona TrueTypeIdentificativo articolo: 243285 - Visualizza i prodotti a cui si riferisce l?articolo. SommarioLa funzione API Win32 GetGlyphOutline restituita icona nativo strutturare i dati da un tipo di carattere TrueType. Per disegnare una struttura di glifo TrueType, i dati devono essere convertiti dalla relativa definizione B-spline nativo a una sequenza di definizioni di riga di Bézier. Quindi la funzione di API Win32 di PolyBezier può essere utilizzata per disegnare la struttura. InformazioniLa funzione di GetGlyphOutline nella programmazione Interface(API) Win32 applicazioni è possibile recuperare una struttura di TrueType. L'opzione di formattazione GGO_NATIVE riempie un buffer con curve B-spline Quadratic per una struttura di TrueType. B-spline quadratiche vengono utilizzati da TrueType per descrivere la struttura di icona in un file di carattere TrueType. Per disegnare queste curve struttura una possibile implementare una funzione di disegno B-spline oppure utilizzare la funzione PolyBezier dall'API Win32. Quadratiche curve B-spline sono una classe di curve parametrica che consente di definire il percorso di più segmenti della curva tramite alcuni punti di controllo. Una curva Quadratic è una seconda curva parametrica ordine. Non vi è alcuna funzione nell'API per disegnare una Spline Quadratic direttamente ma se il Quadratic viene convertito in un cubica con l'API Win32 possono essere disegnato funzione per disegnare una curva di Bézier, chiamato PolyBezier . In generale, quadratiche curve B-spline in particolare e parametrica curve sono un argomento well-researched di elementi grafici in informatica. Possono inoltre essere molto complesse. Gli algoritmi sono stati pubblicati in vari testi che è possibile utilizzare per implementare una funzione per disegnare una Spline Quadratic, ma che descrive un algoritmo di tali esula dall'ambito di questo articolo. La funzione PolyBezier possibile disegnare una Spline Quadratic perché una curva di Bézier è una curva parametrica cubica o terza nell'ordine. Poiché una Spline Quadratic è un'equazione ordine seconda, può essere espresso in termini dell'equazione di cubi di ordine superiore. Sebbene un'equazione per esprimere un quadratic come un cubica viene specificata nel codice di esempio, la derivazione è descritto non in questo articolo. Il codice di esempio in questo articolo è una dimostrazione di come analizzare un buffer di glifi GGO_NATIVE restituito dalla funzione GetGlyphOutline . Buffer restituito dal flag di formato GGO_NATIVE è conforme alla struttura TTPOLYGONHEADER . La struttura TTPOLYGONHEADER e i dati che segue immediatamente costituiscono una distribuzione di un glifo TrueType. Un profilo è un percorso completo di curve viene chiuso in modo implicito se non viene restituito in modo esplicito in questo modo. Vedere la documentazione Platform SDK nelle strutture TTPOLYGONHEADER e TTPOLYCURVE . Una distribuzione di glifo è costituito da più segmenti di curva rappresentati da strutture TTPOLYCURVE . In una distribuzione di TTPOLYGONHEADER è seguito da uno o più strutture TTPOLYCURVE e dati di coordinate del punto. Il membro pfxStart fornisce il punto di coordinata iniziale della distribuzione. Il numero di record di curva che seguono il TTPOLYGONHEADER è determinato dal membro cb . Il punto di partenza è relativa all'origine dell'icona. L'origine di un glifo è l'angolo inferiore sinistro del carattere alla linea di base del carattere. Ogni record di curva TTPOLYCURVE (un segmento di curva) è costituito da punti di controllo B-spline Quadratic o semplici punti di polilinea. Il numero di punti è determinato dal membro cpfx TTPOLYCURVE . Dal membro wType viene assegnato il tipo di curva di spline o polilinea. Matrice di punti delle coordinate seguire immediatamente la struttura. Il punto iniziale della curva viene assegnato dal membro apfx . Poiché un glifo può contenere più di una distribuzione, il buffer contiene uno o più gruppi di TTPOLYGONHEADER strutture e dati. Distribuzioni successive vengono compressi immediatamente dopo quello precedente nel buffer nativo. La distribuzione successiva inizia con un TTPOLYGONHEADER dal byte successivo oltre l'ultimo punto del record precedente curva. Questo codice di esempio consente di disegnare la struttura di un glifo TrueType analizzando il buffer GGO_NATIVE per creare un elenco di segmenti di linea Bézier che costituiscono ogni distribuzione. Elenco di segmenti di Bezier riga viene quindi disegnato utilizzando PolyBezier . Il codice che analizza il buffer è la funzione DrawT2Outline . Il primo passaggio per creare un elenco di righe di Bézier consiste nel determinare la dimensione del buffer per l'elenco. Quattro punti definiscono le righe di Bézier. La funzione PolyBezier interpreta una matrice di punti come una riga continua di segmenti di Bezier in cui l'inizio della riga successiva è che coincidono con l'endpoint della riga precedente. Di conseguenza, solo tre punti sono necessari per descrivere un segmento di linea Bézier aggiuntivo. Il buffer GGO_NATIVE può contenere una curva di polilinea o una curva B-spline Quadratic. Due punti definiscono un segmento di linea durante tre punti definiscono una B-spline. Poiché ogni tipo è essere disegnato con una linea di Bézier utilizzando PolyBezier, nello scenario peggiore viene si una verifica quando una distribuzione che è costituita interamente da segmenti di linea si espande per Beziers più. Si noti che per esprimere una curva ulteriore segmento in una rappresentazione di curva B-spline richiede solo un punto supplementare. Tale punto definisce esplicitamente "B" o disattivare curva scegliere e in modo implicito definisce aggiuntiva nel punto della curva. Il punto di curva su è il punto centrale al successivo punto di "B". Pertanto o un segmento di linea aggiuntiva che un segmento di curva ulteriori si espanderà per tre ulteriori punti di una riga di Bézier. Nel codice si presuppone che l'intero buffer nativo sarà composto da POINTFX strutture in modo che è possibile determinare il maggior numero possibile di punti rappresentato da un buffer di. Il numero effettivo è leggermente inferiore poiché è presente un sovraccarico della struttura di descrivere le distribuzioni e le curve. La dimensione del buffer per l'elenco di Bézier è determinata dal numero massimo di punti di moltiplicato per il dati dimensione di una struttura POINT e moltiplicato per tre. Tre è il numero di punti aggiuntivi necessari per ogni segmento di linea aggiuntiva o di un segmento di spline quadratica quando convertito in un tipo di Bézier. Una volta che è stato allocato il buffer di Bézier il codice analizza il buffer nativo avviando nel primo TTPOLYGONHEADER . Durante un'iterazione del ciclo il codice elabora una distribuzione e disegno. Un secondo ciclo interno analizza ciascun tipo di curva. In caso di una curva della polilinea (TT_PRIM_LINE), ogni segmento di linea della polilinea convertita viene aggiunto all'elenco di Beziers con la funzione AppendPolyLineToBezier . Se si utilizza la curva B-spline Quadratic (TT_PRIM_QSPLINE), la funzione AppendQuadBSplineToBezier converte e aggiunge Quadratic B-spline. Ciascuna di queste funzioni utilizza un ciclo per analizzare da ogni segmento della curva in relativi punti di controllo indipendenti. Quindi la riga o la spline viene convertito in un Bézier e aggiunto all'elenco di Beziers. Una riga di Bézier possibile disegnare una linea retta facilmente. L'inizio e fine vettori posizionare semplicemente all'estremità opposta del segmento di linea. Questa operazione viene eseguita nella funzione MakeBezierFromLine . Per convertire una spline quadratica in una spline di Bézier cubica, è necessario esprimere punti di controllo del cubica i in termini di punti di controllo del quadratic il. L'equazione per tradurre i punti di controllo si trova nella funzione MakeBezierFromQBSpline . Prima di disegnare la distribuzione, il codice garantisce che il percorso sia chiuso chiamando la funzione CloseContour . La funzione viene chiamata solo se il punto di fine della sequenza di Beziers iniziale e non sono che coincidono. Quindi viene chiamata la funzione PolyBezier . Dopo la distribuzione è disegnata, TTPOLYGONHEADER della distribuzione successivo Trova per far avanzare il puntatore lpHeader oltre la fine dei record del profilo corrente. Se questo dà come risultato un valore di puntatore oltre la fine del buffer nativo, il codice ha elaborato tutte le distribuzioni e la chiusura. RiferimentiPer ulteriori informazioni sulla specifica TrueType vedere: Microsoft TrueType Specifications (http://www.microsoft.com/typography/tt/tt.htm)
(http://www.microsoft.com/typography/tt/tt.htm)
Disponibile anche nel Microsoft Developer Network Library CD in specifiche. ProprietàIdentificativo articolo: 243285 - Ultima modifica: lunedì 12 febbraio 2007 - Revisione: 1.5 Le informazioni in questo articolo si applicano a:
Traduzione automatica articoli Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica. Clicca qui per visualizzare la versione originale in inglese dell?articolo: 243285
(http://support.microsoft.com/kb/243285/en-us/
)
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO. |




Torna all'inizio








