Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Classe
Definisce una classe di oggetti di un contesto di dispositivo.
Syntax
class CDC : public CObject
Members
Public Constructors
| Name | Description |
|---|---|
CDC::CDC |
Costruisce un oggetto CDC. |
Public Methods
| Name | Description |
|---|---|
CDC::AbortDoc |
Termina il processo di stampa corrente, cancellando tutto ciò che l'applicazione ha scritto nel dispositivo dall'ultima chiamata della StartDoc funzione membro. |
CDC::AbortPath |
Chiude e rimuove tutti i percorsi nel contesto del dispositivo. |
CDC::AddMetaFileComment |
Copia il commento da un buffer in un metafile in formato avanzato specificato. |
CDC::AlphaBlend |
Visualizza bitmap con pixel trasparenti o semitrasparenti. |
CDC::AngleArc |
Disegna un segmento di linea e un arco e sposta la posizione corrente al punto finale dell'arco. |
CDC::Arc |
Disegna un arco ellittico. |
CDC::ArcTo |
Disegna un arco ellittico. Questa funzione è simile a Arc, ad eccezione del fatto che la posizione corrente viene aggiornata. |
CDC::Attach |
Collega un contesto di dispositivo Windows a questo CDC oggetto. |
CDC::BeginPath |
Apre una parentesi di percorso nel contesto del dispositivo. |
CDC::BitBlt |
Copia una bitmap da un contesto di dispositivo specificato. |
CDC::Chord |
Disegna un accordo (figura chiusa delimitata dall'intersezione di un'ellisse e un segmento di linea). |
CDC::CloseFigure |
Chiude una figura aperta in un percorso. |
CDC::CreateCompatibleDC |
Crea un contesto di memoria-dispositivo compatibile con un altro contesto di dispositivo. È possibile usarlo per preparare le immagini in memoria. |
CDC::CreateDC |
Crea un contesto di dispositivo per un dispositivo specifico. |
CDC::CreateIC |
Crea un contesto informativo per un dispositivo specifico. In questo modo è possibile ottenere rapidamente informazioni sul dispositivo senza creare un contesto di dispositivo. |
CDC::DeleteDC |
Elimina il contesto di dispositivo Windows associato a questo CDC oggetto. |
CDC::DeleteTempMap |
Chiamato dal CWinApp gestore tempo di inattività per eliminare qualsiasi oggetto temporaneo CDC creato da FromHandle. Scollega anche il contesto del dispositivo. |
CDC::Detach |
Scollega il contesto del dispositivo Windows da questo CDC oggetto. |
CDC::DPtoHIMETRIC |
Converte le unità di dispositivo in HIMETRIC unità. |
CDC::DPtoLP |
Converte le unità di dispositivo in unità logiche. |
CDC::Draw3dRect |
Disegna un rettangolo tridimensionale. |
CDC::DrawDragRect |
Cancella e ridisegna un rettangolo mentre viene trascinato. |
CDC::DrawEdge |
Disegna i bordi di un rettangolo. |
CDC::DrawEscape |
Accede alle funzionalità di disegno di una visualizzazione video che non sono direttamente disponibili tramite l'interfaccia GDI (Graphics Device Interface). |
CDC::DrawFocusRect |
Disegna un rettangolo nello stile utilizzato per indicare lo stato attivo. |
CDC::DrawFrameControl |
Disegnare un controllo cornice. |
CDC::DrawIcon |
Disegna un'icona. |
CDC::DrawState |
Visualizza un'immagine e applica un effetto visivo per indicare uno stato. |
CDC::DrawText |
Disegna testo formattato nel rettangolo specificato. |
CDC::DrawTextEx |
Disegna testo formattato nel rettangolo specificato utilizzando altri formati. |
CDC::Ellipse |
Disegna un ellisse. |
CDC::EndDoc |
Termina un processo di stampa avviato dalla StartDoc funzione membro. |
CDC::EndPage |
Informa il driver di dispositivo che una pagina sta terminando. |
CDC::EndPath |
Chiude una parentesi di percorso e seleziona il percorso definito dalla parentesi quadra nel contesto del dispositivo. |
CDC::EnumObjects |
Enumera le penne e i pennelli disponibili in un contesto di dispositivo. |
CDC::Escape |
Consente alle applicazioni di accedere alle strutture che non sono direttamente disponibili da un particolare dispositivo tramite GDI. Consente anche l'accesso alle funzioni di escape di Windows. Le chiamate di escape effettuate da un'applicazione vengono convertite e inviate al driver di dispositivo. |
CDC::ExcludeClipRect |
Crea una nuova area di ritaglio costituita dall'area di ritaglio esistente meno il rettangolo specificato. |
CDC::ExcludeUpdateRgn |
Impedisce il disegno all'interno di aree non valide di una finestra escludendo un'area aggiornata nella finestra da un'area di ritaglio. |
CDC::ExtFloodFill |
Riempie un'area con il pennello corrente. Offre maggiore flessibilità rispetto alla CDC::FloodFill funzione membro. |
CDC::ExtTextOut |
Scrive una stringa di caratteri all'interno di un'area rettangolare utilizzando il tipo di carattere attualmente selezionato. |
CDC::FillPath |
Chiude tutte le figure aperte nel percorso corrente e riempie l'interno del percorso utilizzando la modalità corrente di riempimento del pennello e del poligono. |
CDC::FillRect |
Riempie un determinato rettangolo usando un pennello specifico. |
CDC::FillRgn |
Riempie un'area specifica con il pennello specificato. |
CDC::FillSolidRect |
Riempie un rettangolo con un colore a tinta unita. |
CDC::FlattenPath |
Trasforma tutte le curve nel percorso selezionato nel contesto di dispositivo corrente e trasforma ogni curva in una sequenza di linee. |
CDC::FloodFill |
Riempie un'area con il pennello corrente. |
CDC::FrameRect |
Disegna un bordo intorno a un rettangolo. |
CDC::FrameRgn |
Disegna un bordo intorno a un'area specifica usando un pennello. |
CDC::FromHandle |
Restituisce un puntatore a un CDC oggetto quando viene assegnato un handle a un contesto di dispositivo. Se un CDC oggetto non è collegato all'handle, viene creato e collegato un oggetto temporaneo CDC . |
CDC::GetArcDirection |
Restituisce la direzione dell'arco corrente per il contesto di dispositivo. |
CDC::GetAspectRatioFilter |
Recupera l'impostazione per il filtro delle proporzioni corrente. |
CDC::GetBkColor |
Recupera il colore di sfondo corrente. |
CDC::GetBkMode |
Recupera la modalità in background. |
CDC::GetBoundsRect |
Restituisce il rettangolo di delimitazione accumulato corrente per il contesto di dispositivo specificato. |
CDC::GetBrushOrg |
Recupera l'origine del pennello corrente. |
CDC::GetCharABCWidths |
Recupera le larghezze, in unità logiche, di caratteri consecutivi in un determinato intervallo dal tipo di carattere corrente. |
CDC::GetCharABCWidthsI |
Recupera le larghezze, in unità logiche, di indici glifi consecutivi in un intervallo specificato dal tipo di carattere TrueType corrente. |
CDC::GetCharacterPlacement |
Recupera vari tipi di informazioni su una stringa di caratteri. |
CDC::GetCharWidth |
Recupera le larghezze frazionarie di caratteri consecutivi in un determinato intervallo dal tipo di carattere corrente. |
CDC::GetCharWidthI |
Recupera le larghezze, in coordinate logiche, di indici glifi consecutivi in un intervallo specificato dal tipo di carattere corrente. |
CDC::GetClipBox |
Recupera le dimensioni del rettangolo di delimitazione più stretto intorno al limite di ritaglio corrente. |
CDC::GetColorAdjustment |
Recupera i valori di regolazione del colore per il contesto di dispositivo. |
CDC::GetCurrentBitmap |
Restituisce un puntatore all'oggetto attualmente selezionato CBitmap . |
CDC::GetCurrentBrush |
Restituisce un puntatore all'oggetto attualmente selezionato CBrush . |
CDC::GetCurrentFont |
Restituisce un puntatore all'oggetto attualmente selezionato CFont . |
CDC::GetCurrentPalette |
Restituisce un puntatore all'oggetto attualmente selezionato CPalette . |
CDC::GetCurrentPen |
Restituisce un puntatore all'oggetto attualmente selezionato CPen . |
CDC::GetCurrentPosition |
Recupera la posizione corrente della penna (in coordinate logiche). |
CDC::GetDCBrushColor |
Recupera il colore corrente del pennello. |
CDC::GetDCPenColor |
Recupera il colore corrente della penna. |
CDC::GetDeviceCaps |
Recupera un tipo specificato di informazioni specifiche del dispositivo sulle funzionalità di un determinato dispositivo di visualizzazione. |
CDC::GetFontData |
Recupera le informazioni sulle metriche dei tipi di carattere da un file di tipo di carattere scalabile. Le informazioni da recuperare vengono identificate specificando un offset nel file del tipo di carattere e la lunghezza delle informazioni da restituire. |
CDC::GetFontLanguageInfo |
Restituisce informazioni sul tipo di carattere attualmente selezionato per il contesto di visualizzazione specificato. |
CDC::GetGlyphOutline |
Recupera la curva del contorno o la bitmap per un carattere di struttura nel tipo di carattere corrente. |
CDC::GetGraphicsMode |
Recupera la modalità grafica corrente per il contesto di dispositivo specificato. |
CDC::GetHalftoneBrush |
Recupera un pennello mezzotone. |
CDC::GetKerningPairs |
Recupera le coppie di crenatura dei caratteri per il tipo di carattere attualmente selezionato nel contesto di dispositivo specificato. |
CDC::GetLayout |
Recupera il layout di un contesto di dispositivo (DC). Il layout può essere da sinistra a destra (impostazione predefinita) o da destra a sinistra (con mirroring). |
CDC::GetMapMode |
Recupera la modalità di mapping corrente. |
CDC::GetMiterLimit |
Restituisce il limite di miter per il contesto di dispositivo. |
CDC::GetNearestColor |
Recupera il colore logico più vicino a un colore logico specificato che il dispositivo specificato può rappresentare. |
CDC::GetOutlineTextMetrics |
Recupera le informazioni sulle metriche dei tipi di carattere per i tipi di carattere TrueType. |
CDC::GetOutputCharWidth |
Recupera la larghezza dei singoli caratteri in un gruppo consecutivo di caratteri dal tipo di carattere corrente usando il contesto del dispositivo di output. |
CDC::GetOutputTabbedTextExtent |
Calcola la larghezza e l'altezza di una stringa di caratteri nel contesto del dispositivo di output. |
CDC::GetOutputTextExtent |
Calcola la larghezza e l'altezza di una riga di testo nel contesto del dispositivo di output usando il tipo di carattere corrente per determinare le dimensioni. |
CDC::GetOutputTextMetrics |
Recupera le metriche per il tipo di carattere corrente dal contesto del dispositivo di output. |
CDC::GetPath |
Recupera le coordinate che definiscono gli endpoint delle linee e i punti di controllo delle curve presenti nel percorso selezionato nel contesto del dispositivo. |
CDC::GetPixel |
Recupera il valore del colore RGB del pixel in corrispondenza del punto specificato. |
CDC::GetPolyFillMode |
Recupera la modalità di riempimento poligono corrente. |
CDC::GetROP2 |
Recupera la modalità di disegno corrente. |
CDC::GetSafeHdc |
Restituisce CDC::m_hDC, il contesto del dispositivo di output. |
CDC::GetStretchBltMode |
Recupera la modalità di estensione bitmap corrente. |
CDC::GetTabbedTextExtent |
Calcola la larghezza e l'altezza di una stringa di caratteri nel contesto del dispositivo dell'attributo. |
CDC::GetTextAlign |
Recupera i flag di allineamento del testo. |
CDC::GetTextCharacterExtra |
Recupera l'impostazione corrente per la quantità di spaziatura intercaracter. |
CDC::GetTextColor |
Recupera il colore del testo corrente. |
CDC::GetTextExtent |
Calcola la larghezza e l'altezza di una riga di testo nel contesto del dispositivo dell'attributo usando il tipo di carattere corrente per determinare le dimensioni. |
CDC::GetTextExtentExPointI |
Recupera il numero di caratteri in una stringa specificata che verrà inserita all'interno di uno spazio specificato e riempie una matrice con l'extent di testo per ognuno di questi caratteri. |
CDC::GetTextExtentPointI |
Recupera la larghezza e l'altezza della matrice specificata di indici del glifo. |
CDC::GetTextFace |
Copia il nome del carattere tipografico del tipo di carattere corrente in un buffer come stringa con terminazione Null. |
CDC::GetTextMetrics |
Recupera le metriche per il tipo di carattere corrente dal contesto del dispositivo dell'attributo. |
CDC::GetViewportExt |
Recupera gli extent x e y del riquadro di visualizzazione. |
CDC::GetViewportOrg |
Recupera le coordinate x e y dell'origine del riquadro di visualizzazione. |
CDC::GetWindow |
Restituisce la finestra associata al contesto di dispositivo di visualizzazione. |
CDC::GetWindowExt |
Recupera gli extent x e y della finestra associata. |
CDC::GetWindowOrg |
Recupera le coordinate x e y dell'origine della finestra associata. |
CDC::GetWorldTransform |
Recupera lo spazio globale corrente nella trasformazione dello spazio delle pagine. |
CDC::GradientFill |
Riempie strutture rettangolo e triangolo con un colore di gradazione. |
CDC::GrayString |
Disegna testo in grigio (grigio) nella posizione specificata. |
CDC::HIMETRICtoDP |
Converte le unità HIMETRIC in unità dispositivo. |
CDC::HIMETRICtoLP |
Converte le unità HIMETRIC in unità logiche. |
CDC::IntersectClipRect |
Crea una nuova area di ritaglio formando l'intersezione dell'area corrente e un rettangolo. |
CDC::InvertRect |
Inverte il contenuto di un rettangolo. |
CDC::InvertRgn |
Inverte i colori in un'area. |
CDC::IsPrinting |
Determina se il contesto del dispositivo viene utilizzato per la stampa. |
CDC::LineTo |
Disegna una linea dalla posizione corrente fino a, ma non include, un punto. |
CDC::LPtoDP |
Converte le unità logiche in unità dispositivo. |
CDC::LPtoHIMETRIC |
Converte le unità logiche in unità HIMETRIC. |
CDC::MaskBlt |
Combina i dati di colore per le bitmap di origine e di destinazione usando l'operazione di maschera e raster specificata. |
CDC::ModifyWorldTransform |
Modifica la trasformazione globale per un contesto di dispositivo usando la modalità specificata. |
CDC::MoveTo |
Sposta la posizione corrente. |
CDC::OffsetClipRgn |
Sposta l'area di ritaglio del dispositivo specificato. |
CDC::OffsetViewportOrg |
Modifica l'origine del riquadro di visualizzazione rispetto alle coordinate dell'origine del riquadro di visualizzazione corrente. |
CDC::OffsetWindowOrg |
Modifica l'origine della finestra rispetto alle coordinate dell'origine della finestra corrente. |
CDC::PaintRgn |
Riempie un'area con il pennello selezionato. |
CDC::PatBlt |
Crea un modello di bit. |
CDC::Pie |
Disegna una wedge a forma di torta. |
CDC::PlayMetaFile |
Riproduce il contenuto del metafile specificato nel dispositivo specificato. La versione avanzata di PlayMetaFile visualizza l'immagine archiviata nel metafile in formato avanzato specificato. Il metafile può essere riprodotto un numero qualsiasi di volte. |
CDC::PlgBlt |
Esegue un trasferimento bit-block dei bit dei dati di colore dal rettangolo specificato nel contesto del dispositivo di origine al parallelogramma specificato nel contesto di dispositivo specificato nel contesto di dispositivo specificato. |
CDC::PolyBezier |
Disegna una o più spline di Bzier. La posizione corrente non viene usata o aggiornata. |
CDC::PolyBezierTo |
Disegna uno o più spline di Bzier e sposta la posizione corrente al punto finale dell'ultima spline di Bzier. |
CDC::PolyDraw |
Disegna un set di segmenti di linea e spline di Bzier. Questa funzione aggiorna la posizione corrente. |
CDC::Polygon |
Disegna un poligono costituito da due o più punti (vertici) collegati da linee. |
CDC::Polyline |
Disegna un set di segmenti di linea che collegano i punti specificati. |
CDC::PolylineTo |
Disegna una o più linee rette e sposta la posizione corrente al punto finale dell'ultima linea. |
CDC::PolyPolygon |
Crea due o più poligoni riempiti usando la modalità di riempimento poligono corrente. I poligoni possono essere disgiunti o possono sovrapporsi. |
CDC::PolyPolyline |
Disegna più serie di segmenti di linea collegati. La posizione corrente non viene usata o aggiornata da questa funzione. |
CDC::PtVisible |
Specifica se il punto specificato si trova all'interno dell'area di ritaglio. |
CDC::RealizePalette |
Esegue il mapping delle voci della tavolozza logica corrente alla tavolozza del sistema. |
CDC::Rectangle |
Disegna un rettangolo utilizzando la penna corrente e lo riempie usando il pennello corrente. |
CDC::RectVisible |
Determina se una parte del rettangolo specificato si trova all'interno dell'area di ritaglio. |
CDC::ReleaseAttribDC |
Rilascia m_hAttribDC, il contesto del dispositivo dell'attributo. |
CDC::ReleaseOutputDC |
Rilascia m_hDC, il contesto del dispositivo di output. |
CDC::ResetDC |
Aggiorna il contesto del m_hAttribDC dispositivo. |
CDC::RestoreDC |
Ripristina il contesto del dispositivo in uno stato precedente salvato con SaveDC. |
CDC::RoundRect |
Disegna un rettangolo con angoli arrotondati usando la penna corrente e riempita utilizzando il pennello corrente. |
CDC::SaveDC |
Salva lo stato corrente del contesto di dispositivo. |
CDC::ScaleViewportExt |
Modifica l'extent del riquadro di visualizzazione rispetto ai valori correnti. |
CDC::ScaleWindowExt |
Modifica gli extent della finestra rispetto ai valori correnti. |
CDC::ScrollDC |
Scorre un rettangolo di bit orizzontalmente e verticalmente. |
CDC::SelectClipPath |
Seleziona il percorso corrente come area di ritaglio per il contesto di dispositivo, combinando la nuova area con qualsiasi area di ritaglio esistente usando la modalità specificata. |
CDC::SelectClipRgn |
Combina l'area specificata con l'area di ritaglio corrente usando la modalità specificata. |
CDC::SelectObject |
Seleziona un oggetto di disegno GDI, ad esempio una penna. |
CDC::SelectPalette |
Seleziona la tavolozza logica. |
CDC::SelectStockObject |
Seleziona una delle penne predefinite, i pennelli o i tipi di carattere forniti da Windows. |
CDC::SetAbortProc |
Imposta una funzione di callback fornita dal programmatore che Windows chiama se un processo di stampa deve essere interrotto. |
CDC::SetArcDirection |
Imposta la direzione del disegno da utilizzare per le funzioni arco e rettangolo. |
CDC::SetAttribDC |
Imposta m_hAttribDC, il contesto del dispositivo dell'attributo. |
CDC::SetBkColor |
Imposta il colore di sfondo corrente. |
CDC::SetBkMode |
Imposta la modalità di sfondo. |
CDC::SetBoundsRect |
Controlla l'accumulo di informazioni sul rettangolo di delimitazione per il contesto di dispositivo specificato. |
CDC::SetBrushOrg |
Specifica l'origine del pennello successivo selezionato in un contesto di dispositivo. |
CDC::SetColorAdjustment |
Imposta i valori di regolazione del colore per il contesto di dispositivo usando i valori specificati. |
CDC::SetDCBrushColor |
Imposta il colore corrente del pennello. |
CDC::SetDCPenColor |
Imposta il colore corrente della penna. |
CDC::SetGraphicsMode |
Imposta la modalità grafica corrente per il contesto di dispositivo specificato. |
CDC::SetLayout |
Modifica il layout di un contesto di dispositivo (DC). |
CDC::SetMapMode |
Imposta la modalità di mapping corrente. |
CDC::SetMapperFlags |
Modifica l'algoritmo utilizzato dal mapper del tipo di carattere quando esegue il mapping dei tipi di carattere logici ai tipi di carattere fisici. |
CDC::SetMiterLimit |
Imposta il limite per la lunghezza dei join di miter per il contesto di dispositivo. |
CDC::SetOutputDC |
Imposta m_hDC, il contesto del dispositivo di output. |
CDC::SetPixel |
Imposta il pixel in corrispondenza del punto specificato sull'approssimazione più vicina del colore specificato. |
CDC::SetPixelV |
Imposta il pixel in corrispondenza delle coordinate specificate sull'approssimazione più vicina del colore specificato.
SetPixelV è più veloce rispetto SetPixel al fatto che non è necessario restituire il valore di colore del punto disegnato. |
CDC::SetPolyFillMode |
Imposta la modalità di riempimento poligono. |
CDC::SetROP2 |
Imposta la modalità di disegno corrente. |
CDC::SetStretchBltMode |
Imposta la modalità di estensione bitmap. |
CDC::SetTextAlign |
Imposta i flag di allineamento del testo. |
CDC::SetTextCharacterExtra |
Imposta la quantità di spaziatura intercharacter. |
CDC::SetTextColor |
Imposta il colore del testo. |
CDC::SetTextJustification |
Aggiunge spazio ai caratteri di interruzione in una stringa. |
CDC::SetViewportExt |
Imposta gli extent x e y del riquadro di visualizzazione. |
CDC::SetViewportOrg |
Imposta l'origine del riquadro di visualizzazione. |
CDC::SetWindowExt |
Imposta gli extent x e y della finestra associata. |
CDC::SetWindowOrg |
Imposta l'origine della finestra del contesto di dispositivo. |
CDC::SetWorldTransform |
Imposta lo spazio globale corrente sulla trasformazione dello spazio delle pagine. |
CDC::StartDoc |
Informa il driver di dispositivo che è in corso l'avvio di un nuovo processo di stampa. |
CDC::StartPage |
Informa il driver di dispositivo che è in corso l'avvio di una nuova pagina. |
CDC::StretchBlt |
Sposta una bitmap da un rettangolo di origine e un dispositivo in un rettangolo di destinazione, estendendo o comprimendo la bitmap, se necessario per adattare le dimensioni del rettangolo di destinazione. |
CDC::StrokeAndFillPath |
Chiude tutte le figure aperte in un percorso, colpisce il contorno del percorso utilizzando la penna corrente e riempie l'interno utilizzando il pennello corrente. |
CDC::StrokePath |
Esegue il rendering del percorso specificato utilizzando la penna corrente. |
CDC::TabbedTextOut |
Scrive una stringa di caratteri in una posizione specificata, espandendo le schede nei valori specificati in una matrice di posizioni tabulazioni. |
CDC::TextOut |
Scrive una stringa di caratteri in una posizione specificata utilizzando il tipo di carattere attualmente selezionato. |
CDC::TransparentBlt |
Trasferisce un blocco bit di dati colore dal contesto del dispositivo di origine specificato in un contesto di dispositivo di destinazione, rendendo trasparente un colore specificato nel trasferimento. |
CDC::UpdateColors |
Aggiorna l'area client del contesto di dispositivo associando i colori correnti nell'area client alla tavolozza del sistema in base a pixel per pixel. |
CDC::WidenPath |
Ridefinisce il percorso corrente come area che verrebbe disegnata se il percorso fosse tracciato utilizzando la penna attualmente selezionata nel contesto del dispositivo. |
Public Operators
| Name | Description |
|---|---|
CDC::operator HDC |
Recupera l'handle del contesto di dispositivo. |
Membri dati pubblici
| Name | Description |
|---|---|
CDC::m_hAttribDC |
Contesto attributo-dispositivo utilizzato da questo CDC oggetto. |
CDC::m_hDC |
Contesto del dispositivo di output usato da questo CDC oggetto. |
Remarks
L'oggetto CDC fornisce funzioni membro per l'utilizzo di un contesto di dispositivo, ad esempio uno schermo o una stampante, e i membri per l'utilizzo di un contesto di visualizzazione associato all'area client di una finestra.
Eseguire tutte le operazioni di disegno tramite le funzioni membro di un CDC oggetto . La classe fornisce funzioni membro per le operazioni di contesto del dispositivo, l'uso di strumenti di disegno, la selezione di oggetti GDI (Type-Safe Graphics Device Interface) e l'uso di colori e tavolozze. Fornisce inoltre funzioni membro per ottenere e impostare attributi di disegno, mapping, utilizzo del riquadro di visualizzazione, utilizzo dell'extent della finestra, conversione delle coordinate, utilizzo di aree, ritaglio, linee di disegno e disegno di forme semplici, puntini di sospensione e poligoni. Sono inoltre disponibili funzioni membro per il disegno di testo, l'uso di tipi di carattere, l'uso di escape della stampante, lo scorrimento e la riproduzione di metafile.
Per usare un CDC oggetto, crearlo e quindi chiamarne le funzioni membro che parallele funzioni di Windows che usano contesti di dispositivo.
Note
In Windows 95/98 tutte le coordinate dello schermo sono limitate a 16 bit. Pertanto, un int oggetto passato a una CDC funzione membro deve trovarsi nell'intervallo da -32768 a 32767.
Per usi specifici, la libreria di classi Microsoft Foundation fornisce diverse classi derivate da CDC .
CPaintDC incapsula le chiamate a BeginPaint e EndPaint.
CClientDC gestisce un contesto di visualizzazione associato all'area client di una finestra.
CWindowDC gestisce un contesto di visualizzazione associato a un'intera finestra, inclusi i relativi controlli e frame.
CMetaFileDC associa un contesto di dispositivo a un metafile.
CDC fornisce due funzioni GetLayout membro e SetLayout, per ripristinare il layout di un contesto di dispositivo, che non eredita il layout da una finestra. Tale orientamento da destra a sinistra è necessario per le applicazioni scritte per le impostazioni cultura, ad esempio arabo o ebraico, in cui il layout dei caratteri non è lo standard europeo.
CDC contiene due contesti di dispositivo e m_hDCm_hAttribDC, che, alla creazione di un CDC oggetto, fanno riferimento allo stesso dispositivo.
CDC indirizza tutte le chiamate GDI di output a m_hDC e la maggior parte delle chiamate GDI degli attributi a m_hAttribDC. Un esempio di chiamata di attributo è GetTextColor, mentre SetTextColor è una chiamata di output.
Ad esempio, il framework usa questi due contesti di dispositivo per implementare un CMetaFileDC oggetto che invierà l'output a un metafile durante la lettura degli attributi da un dispositivo fisico. L'anteprima di stampa viene implementata nel framework in modo simile. È anche possibile usare i due contesti di dispositivo in modo analogo nel codice specifico dell'applicazione.
In alcuni casi potrebbero essere necessarie informazioni sulle metriche di testo dai contesti di m_hDC dispositivo e m_hAttribDC . Le coppie di funzioni seguenti offrono questa funzionalità:
| Uses m_hAttribDC | Uses m_hDC |
|---|---|
GetTextExtent |
GetOutputTextExtent |
GetTabbedTextExtent |
GetOutputTabbedTextExtent |
GetTextMetrics |
GetOutputTextMetrics |
GetCharWidth |
GetOutputCharWidth |
Per altre informazioni su CDC, vedere Contesti di dispositivo.
Inheritance Hierarchy
CDC
Requirements
Header:afxwin.h
CDC::AbortDoc
Termina il processo di stampa corrente e cancella tutto ciò che l'applicazione ha scritto nel dispositivo dall'ultima chiamata alla StartDoc funzione membro.
int AbortDoc();
Return Value
Valore maggiore o uguale a 0 se ha esito positivo o negativo se si è verificato un errore. L'elenco seguente mostra i valori di errore comuni e i relativi significati:
SP_ERRORErrore generale.SP_OUTOFDISKSpazio su disco insufficiente attualmente disponibile per lo spooling e non sarà più disponibile spazio.SP_OUTOFMEMORYMemoria insufficiente per lo spooling.SP_USERABORTL'utente ha terminato il processo tramite Gestione stampa.
Remarks
Questa funzione membro sostituisce l'escape della ABORTDOC stampante.
AbortDoc deve essere usato per terminare quanto segue:
Operazioni di stampa che non specificano una funzione di interruzione tramite
SetAbortProc.Operazioni di stampa che non hanno ancora raggiunto la prima
NEWFRAMEchiamata di escape oNEXTBAND.
Se un'applicazione rileva un errore di stampa o un'operazione di stampa annullata, non deve tentare di terminare l'operazione utilizzando le EndDoc funzioni membro o AbortDoc della classe CDC. GDI termina automaticamente l'operazione prima di restituire il valore di errore.
Se l'applicazione visualizza una finestra di dialogo per consentire all'utente di annullare l'operazione di stampa, deve chiamare AbortDoc prima di eliminare definitivamente la finestra di dialogo.
Se Gestione stampa è stato usato per avviare il processo di stampa, la chiamata AbortDoc cancella l'intero processo di spooling, ovvero la stampante non riceve nulla. Se Print Manager non è stato utilizzato per avviare il processo di stampa, è possibile che i dati siano stati inviati alla stampante prima AbortDoc della chiamata. In questo caso, il driver della stampante avrebbe reimpostato la stampante (quando possibile) e chiuso il processo di stampa.
Example
Vedere l'esempio per CDC::StartDoc.
CDC::AbortPath
Chiude e rimuove tutti i percorsi nel contesto del dispositivo.
BOOL AbortPath();
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Se nel contesto del dispositivo è presente una parentesi di percorso aperta, la parentesi di percorso viene chiusa e il percorso viene rimosso. Se nel contesto del dispositivo è presente un percorso chiuso, il percorso viene rimosso.
CDC::AddMetaFileComment
Copia il commento da un buffer in un metafile in formato avanzato specificato.
BOOL AddMetaFileComment(
UINT nDataSize,
const BYTE* pCommentData);
Parameters
nDataSize
Specifica la lunghezza in byte del buffer dei commenti.
pCommentData
Punta al buffer che contiene il commento.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Un commento può includere informazioni private, ad esempio l'origine dell'immagine e la data di creazione. Un commento deve iniziare con una firma dell'applicazione, seguita dai dati. I commenti non devono contenere dati specifici della posizione. I dati specifici della posizione specificano la posizione di un record e non devono essere inclusi perché un metafile può essere incorporato all'interno di un altro metafile. Questa funzione può essere usata solo con metafile avanzati.
CDC::AlphaBlend
Chiamare questa funzione membro per visualizzare bitmap con pixel trasparenti o semitrasparenti.
BOOL AlphaBlend(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
BLENDFUNCTION blend);
Parameters
xDest
Specifica la coordinata x, in unità logiche, dell'angolo superiore sinistro del rettangolo di destinazione.
yDest
Specifica la coordinata y, in unità logiche, dell'angolo superiore sinistro del rettangolo di destinazione.
nDestWidth
Specifica la larghezza, in unità logiche, del rettangolo di destinazione.
nDestHeight
Specifica l'altezza, in unità logiche, del rettangolo di destinazione.
pSrcDC
Puntatore al contesto del dispositivo di origine.
xSrc
Specifica la coordinata x, in unità logiche, dell'angolo superiore sinistro del rettangolo di origine.
ySrc
Specifica la coordinata y, in unità logiche, dell'angolo superiore sinistro del rettangolo di origine.
nSrcWidth
Specifica la larghezza, in unità logiche, del rettangolo di origine.
nSrcHeight
Specifica l'altezza, in unità logiche, del rettangolo di origine.
blend
Specifica una BLENDFUNCTION struttura.
Return Value
TRUE se l'esito è positivo; in caso contrario, FALSE.
Remarks
Per altre informazioni, vedere AlphaBlend in Windows SDK.
CDC::AngleArc
Disegna un segmento di linea e un arco.
BOOL AngleArc(
int x,
int y,
int nRadius,
float fStartAngle,
float fSweepAngle);
Parameters
x
Specifica la coordinata x logica del centro del cerchio.
y
Specifica la coordinata y logica del centro del cerchio.
nRadius
Specifica il raggio del cerchio in unità logiche. Questo valore deve essere positivo.
fStartAngle
Specifica l'angolo iniziale in gradi rispetto all'asse x.
fSweepAngle
Specifica l'angolo di sweep in gradi rispetto all'angolo iniziale.
Return Value
Diverso da zero se ha esito positivo; in caso contrario 0.
Remarks
Il segmento di linea viene disegnato dalla posizione corrente all'inizio dell'arco. L'arco viene disegnato lungo il perimetro di un cerchio con il raggio e il centro specificati. La lunghezza dell'arco è definita dagli angoli iniziale e spazza specificati.
AngleArc sposta la posizione corrente al punto finale dell'arco. L'arco disegnato da questa funzione può sembrare ellittico, a seconda della modalità di trasformazione e mapping corrente. Prima di disegnare l'arco, questa funzione disegna il segmento di linea dalla posizione corrente all'inizio dell'arco. L'arco viene disegnato creando un cerchio immaginario con il raggio specificato intorno al punto centrale specificato. Il punto iniziale dell'arco è determinato misurando in senso antiorario dall'asse x del cerchio in base al numero di gradi nell'angolo iniziale. Il punto finale si trova in modo analogo misurando in senso antiorario dal punto iniziale in base al numero di gradi nell'angolo di sweep.
Se l'angolo di sweep è maggiore di 360 gradi, l'arco viene spazzato più volte. Questa funzione disegna linee utilizzando la penna corrente. La figura non viene riempita.
CDC::Arc
Disegna un arco ellittico.
BOOL Arc(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Arc(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parameters
x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).
y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).
x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).
y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).
x3
Specifica la coordinata x del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
y3
Specifica la coordinata y del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
x4
Specifica la coordinata x del punto che definisce l'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
y4
Specifica la coordinata y del punto che definisce l'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare un LPRECT oggetto o CRect per questo parametro.
ptStart
Specifica le coordinate x e y del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
ptEnd
Specifica le coordinate x e y del punto che definisce il punto finale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
L'arco disegnato utilizzando la funzione è un segmento dell'ellisse definita dal rettangolo di delimitazione specificato.
Il punto iniziale effettivo dell'arco è il punto in cui un raggio disegnato dal centro del rettangolo di delimitazione attraverso il punto iniziale specificato interseca l'ellisse. Il punto finale effettivo dell'arco è il punto in cui un raggio disegnato dal centro del rettangolo di delimitazione attraverso il punto finale specificato interseca l'ellisse. L'arco viene disegnato in direzione antiorario. Poiché un arco non è una figura chiusa, non viene riempito. Sia la larghezza che l'altezza del rettangolo devono essere maggiori di 2 unità e inferiori a 32.767 unità.
Example
void CDCView::DrawArc(CDC *pDC)
{
// Fill the client area with a thin circle. The circle's
// interior is not filled. The circle's perimeter is
// blue from 6 o'clock to 3 o'clock and red from 3
// o'clock to 6 o'clock.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens.
CPen penBlue;
CPen penRed;
CPen *pOldPen;
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen.
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw from 6 o'clock to 3 o'clock, counterclockwise,
// in a red pen.
pDC->SelectObject(&penRed);
// Keep the same parameters, but reverse start
// and end points.
pDC->Arc(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::ArcTo
Disegna un arco ellittico.
BOOL ArcTo(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL ArcTo(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parameters
x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).
y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).
x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).
y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).
x3
Specifica la coordinata x del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
y3
Specifica la coordinata y del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
x4
Specifica la coordinata x del punto che definisce l'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
y4
Specifica la coordinata y del punto che definisce l'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare un puntatore a una RECT struttura di dati o a un CRect oggetto per questo parametro.
ptStart
Specifica le coordinate x e y del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura di dati o un CPoint oggetto per questo parametro.
ptEnd
Specifica le coordinate x e y del punto che definisce il punto finale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura di dati o un CPoint oggetto per questo parametro.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Questa funzione è simile a CDC::Arc, ad eccezione del fatto che la posizione corrente viene aggiornata. I punti ( x1, y1) e ( x2, y2) specificano il rettangolo di delimitazione. Un'ellisse formata dal rettangolo di delimitazione specificato definisce la curva dell'arco. L'arco estende in senso antiorario (direzione dell'arco predefinito) dal punto in cui interseca la linea radiale dal centro del rettangolo di delimitazione a ( x3, y3). L'arco termina dove interseca la linea radiale dal centro del rettangolo di delimitazione a ( x4, y4). Se il punto iniziale e il punto finale sono uguali, viene disegnata un'ellisse completa.
Una linea viene disegnata dalla posizione corrente al punto iniziale dell'arco. Se non si verifica alcun errore, la posizione corrente viene impostata sul punto finale dell'arco. L'arco viene disegnato utilizzando la penna corrente; non è riempito.
CDC::Attach
Utilizzare questa funzione membro per associare un hDC oggetto all'oggetto CDC .
BOOL Attach(HDC hDC);
Parameters
hDC
Contesto di dispositivo Windows.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
l'oggetto hDC viene archiviato sia in m_hDC, nel contesto del dispositivo di output che in m_hAttribDC, il contesto del dispositivo dell'attributo.
CDC::BeginPath
Apre una parentesi di percorso nel contesto del dispositivo.
BOOL BeginPath();
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Dopo l'apertura di una parentesi di percorso, un'applicazione può iniziare a chiamare le funzioni di disegno GDI per definire i punti che si trovano nel percorso. Un'applicazione può chiudere una parentesi di percorso aperta chiamando la EndPath funzione membro. Quando un'applicazione chiama BeginPath, tutti i percorsi precedenti vengono eliminati.
Vedere BeginPath in Windows SDK per un elenco delle funzioni di disegno che definiscono i punti in un percorso.
Example
// This implementation uses GDI paths to draw the outline of
// some text in a TrueType font. The path is used to record the way
// the TrueType font would be drawn. Then, the function uses the data
// returned from CDC::GetPath() to draw the font--without filling it.
void CDCView::DrawPath(CDC *pDC)
{
// Describe a 24-point truetype font of normal weight
LOGFONT lf;
memset(&lf, 0, sizeof(lf));
lf.lfHeight = -MulDiv(24, pDC->GetDeviceCaps(LOGPIXELSY), 72);
lf.lfWeight = FW_NORMAL;
lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;
// create and select it
CFont newFont;
if (!newFont.CreateFontIndirect(&lf))
return;
CFont *pOldFont = pDC->SelectObject(&newFont);
// use a path to record how the text was drawn
pDC->BeginPath();
pDC->TextOut(10, 10, _T("Outline this!"));
pDC->EndPath();
// Find out how many points are in the path. Note that
// for long strings or complex fonts, this number might be
// gigantic!
int nNumPts = pDC->GetPath(NULL, NULL, 0);
if (nNumPts == 0)
return;
// Allocate memory to hold points and stroke types from
// the path.
LPPOINT lpPoints = NULL;
LPBYTE lpTypes = NULL;
try
{
lpPoints = new POINT[nNumPts];
lpTypes = new BYTE[nNumPts];
}
catch (CException *pe)
{
delete[] lpPoints;
lpPoints = NULL;
delete[] lpTypes;
lpTypes = NULL;
pe->Delete();
}
if (lpPoints == NULL || lpTypes == NULL)
return;
// Now that we have the memory, really get the path data.
nNumPts = pDC->GetPath(lpPoints, lpTypes, nNumPts);
// If it worked, draw the lines. Windows 98 doesn't support
// the PolyDraw API, so we use our own member function to do
// similar work. If you're targeting only later versions of
// Windows, you can use the PolyDraw() API and avoid the
// COutlineView::PolyDraw() member function.
if (nNumPts != -1)
pDC->PolyDraw(lpPoints, lpTypes, nNumPts);
// Release the memory we used
delete[] lpPoints;
delete[] lpTypes;
// Put back the old font
pDC->SelectObject(pOldFont);
return;
}
CDC::BitBlt
Copia una bitmap dal contesto del dispositivo di origine in questo contesto di dispositivo corrente.
BOOL BitBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
DWORD dwRop);
Parameters
x
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo di destinazione.
y
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo di destinazione.
nWidth
Specifica la larghezza(in unità logiche) del rettangolo di destinazione e della bitmap di origine.
nHeight
Specifica l'altezza (in unità logiche) del rettangolo di destinazione e della bitmap di origine.
pSrcDC
Puntatore a un CDC oggetto che identifica il contesto di dispositivo da cui verrà copiata la bitmap. Deve essere NULL se dwRop specifica un'operazione raster che non include un'origine.
xSrc
Specifica la coordinata x logica dell'angolo superiore sinistro della bitmap di origine.
ySrc
Specifica la coordinata y logica dell'angolo superiore sinistro della bitmap di origine.
dwRop
Specifica l'operazione raster da eseguire. I codici di operazione raster definiscono il modo in cui GDI combina i colori nelle operazioni di output che coinvolgono un pennello corrente, una possibile bitmap di origine e una bitmap di destinazione. Per un elenco dei codici di operazione raster per BitBlt e le relative descrizioni, vedere dwRop in Windows SDK
Per un elenco completo dei codici di operazione raster, vedere Informazioni sui codici di operazione raster in Windows SDK.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
L'applicazione può allineare le finestre o le aree client sui limiti dei byte per garantire che le BitBlt operazioni si verifichino su rettangoli allineati ai byte. Impostare i CS_BYTEALIGNWINDOW flag o CS_BYTEALIGNCLIENT quando si registrano le classi della finestra.
BitBlt le operazioni sui rettangoli allineati ai byte sono notevolmente più veloci rispetto BitBlt alle operazioni sui rettangoli non allineati a byte. Se si desidera specificare stili di classe come l'allineamento dei byte per il proprio contesto di dispositivo, è necessario registrare una classe finestra anziché basarsi sulle classi di Microsoft Foundation per farlo. Usare la funzione AfxRegisterWndClassglobale .
GDI trasforma nWidth e nHeight, una volta usando il contesto del dispositivo di destinazione e una volta usando il contesto del dispositivo di origine. Se gli extent risultanti non corrispondono, GDI usa la funzione Windows StretchBlt per comprimere o estendere la bitmap di origine in base alle esigenze.
Se le bitmap di destinazione, origine e motivo non hanno lo stesso formato di colore, la BitBlt funzione converte le bitmap di origine e pattern in modo che corrispondano alla destinazione. I colori di primo piano e di sfondo della bitmap di destinazione vengono usati nella conversione.
Quando la BitBlt funzione converte una bitmap monocromatica in colore, imposta i bit bianchi (1) sul colore di sfondo e i bit neri (0) sul colore di primo piano. Vengono usati i colori di primo piano e di sfondo del contesto di dispositivo di destinazione. Per convertire il colore in monocromatico, BitBlt imposta i pixel che corrispondono al colore di sfondo su bianco e imposta tutti gli altri pixel su nero.
BitBlt usa i colori di primo piano e di sfondo del contesto del dispositivo colore per eseguire la conversione da colore a monocromatico.
Non tutti i contesti di dispositivo supportano BitBlt. Per verificare se un determinato contesto di dispositivo supporta BitBlt, usare la GetDeviceCaps funzione membro e specificare l'indice RASTERCAPS.
Example
Vedere l'esempio per CDC::CreateCompatibleDC.
CDC::CDC
Costruisce un oggetto CDC.
CDC();
CDC::Chord
Disegna un accordo (figura chiusa delimitata dall'intersezione di un'ellisse e un segmento di linea).
BOOL Chord(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Chord(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parameters
x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo di delimitazione dell'accordo (in unità logiche).
y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo di delimitazione dell'accordo (in unità logiche).
x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo di delimitazione dell'accordo (in unità logiche).
y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo di delimitazione dell'accordo (in unità logiche).
x3
Specifica la coordinata x del punto che definisce il punto iniziale dell'accordo (in unità logiche).
y3
Specifica la coordinata y del punto che definisce il punto iniziale dell'accordo (in unità logiche).
x4
Specifica la coordinata x del punto che definisce l'endpoint dell'accordo (in unità logiche).
y4
Specifica la coordinata y del punto che definisce l'endpoint dell'accordo (in unità logiche).
lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare un LPRECT oggetto o CRect per questo parametro.
ptStart
Specifica le coordinate x e y del punto che definisce il punto iniziale dell'accordo (in unità logiche). Questo punto non deve mentire esattamente sul accordo. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
ptEnd
Specifica le coordinate x e y del punto che definisce il punto finale dell'accordo (in unità logiche). Questo punto non deve mentire esattamente sul accordo. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
I parametri ( x1, y1) e ( x2, y2) specificano rispettivamente gli angoli superiore sinistro e inferiore destro di un rettangolo che delimita l'ellisse che fa parte dell'accordo. I parametri ( x3, y3) e ( x4, y4) specificano gli endpoint di una riga che interseca l'ellisse. La corda viene disegnata utilizzando la penna selezionata e riempita utilizzando il pennello selezionato.
La figura disegnata dalla Chord funzione si estende fino a , ma non include le coordinate destra e inferiore. Ciò significa che l'altezza della figura è y2 - y1 e la larghezza della figura è x2 - x1.
Example
void CDCView::DrawChord(CDC *pDC)
{
// Fill the client area with a circle. The circle is
// blue and filled with blue, but has a chord cut out
// of it from 3 o'clock to 6 o'clock. That chord is
// red and filled with a red diagonal hatch.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens and similar brushes.
CPen penBlue, penRed;
CBrush brushBlue, brushRed;
CBrush *pOldBrush;
CPen *pOldPen;
brushBlue.CreateSolidBrush(RGB(0, 0, 255));
brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen with a solid blue fill.
pOldPen = pDC->SelectObject(&penBlue);
pOldBrush = pDC->SelectObject(&brushBlue);
pDC->Chord(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw the remaining quarter chord from 6 o'clock
// to 3 o'clock, counterclockwise, in a red pen
// with the hatched brush.
pDC->SelectObject(&penRed);
pDC->SelectObject(&brushRed);
// Keep the same parameters, but reverse start and
// end points.
pDC->Chord(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::CloseFigure
Chiude una figura aperta in un percorso.
BOOL CloseFigure();
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
La funzione chiude la figura disegnando una linea dalla posizione corrente al primo punto della figura (in genere, il punto specificato dalla chiamata più recente alla MoveTo funzione membro) e connette le linee utilizzando lo stile di unione linea. Se una figura viene chiusa usando la LineTo funzione membro anziché CloseFigure, vengono usati i estremità finali per creare l'angolo anziché un join.
CloseFigure deve essere chiamato solo se è presente una parentesi di percorso aperta nel contesto del dispositivo.
Una figura in un percorso è aperta a meno che non venga chiusa in modo esplicito usando questa funzione. Una figura può essere aperta anche se il punto corrente e il punto iniziale della figura sono uguali. Qualsiasi linea o curva aggiunta al percorso dopo CloseFigure l'avvio di una nuova figura.
CDC::CreateCompatibleDC
Crea un contesto di dispositivo di memoria compatibile con il dispositivo specificato da pDC.
BOOL CreateCompatibleDC(CDC* pDC);
Parameters
pDC
Puntatore a un contesto di dispositivo. Se pDC è NULL, la funzione crea un contesto di dispositivo di memoria compatibile con la visualizzazione del sistema.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Un contesto di dispositivo di memoria è un blocco di memoria che rappresenta una superficie di visualizzazione. Può essere usato per preparare le immagini in memoria prima di copiarle nella superficie effettiva del dispositivo compatibile.
Quando viene creato un contesto di dispositivo di memoria, GDI seleziona automaticamente una bitmap monocromatica monocromatica per essa. Le funzioni di output GDI possono essere usate con un contesto di dispositivo di memoria solo se è stata creata e selezionata una bitmap in tale contesto.
Questa funzione può essere usata solo per creare contesti di dispositivo compatibili per i dispositivi che supportano operazioni raster. Per informazioni sui trasferimenti di blocchi di bit tra contesti di dispositivo, vedere la CDC::BitBlt funzione membro. Per determinare se un contesto di dispositivo supporta operazioni raster, vedere la RC_BITBLT funzionalità raster nella funzione CDC::GetDeviceCapsmembro .
Example
// This handler loads a bitmap from system resources,
// centers it in the view, and uses BitBlt() to paint the bitmap
// bits.
void CDCView::DrawBitmap(CDC *pDC)
{
// load IDB_BITMAP1 from our resources
CBitmap bmp;
if (bmp.LoadBitmap(IDB_BITMAP1))
{
// Get the size of the bitmap
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);
// Create an in-memory DC compatible with the
// display DC we're using to paint
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
// Select the bitmap into the in-memory DC
CBitmap *pOldBitmap = dcMemory.SelectObject(&bmp);
// Find a centerpoint for the bitmap in the client area
CRect rect;
GetClientRect(&rect);
int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;
// Copy the bits from the in-memory DC into the on-
// screen DC to actually do the painting. Use the centerpoint
// we computed for the target offset.
pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
}
else
{
TRACE0("ERROR: Where's IDB_BITMAP1?\n");
}
}
CDC::CreateDC
Crea un contesto di dispositivo per il dispositivo specificato.
BOOL CreateDC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Parameters
lpszDriverName
Punta a una stringa con terminazione Null che specifica il nome file (senza estensione) del driver di dispositivo (ad esempio, "EPSON"). È anche possibile passare un CString oggetto per questo parametro.
lpszDeviceName
Punta a una stringa con terminazione Null che specifica il nome del dispositivo specifico da supportare ,ad esempio "EPSON FX-80". Il lpszDeviceName parametro viene usato se il modulo supporta più dispositivi. È anche possibile passare un CString oggetto per questo parametro.
lpszOutput
Punta a una stringa con terminazione Null che specifica il nome del file o del dispositivo per il supporto di output fisico (porta di output o file). È anche possibile passare un CString oggetto per questo parametro.
lpInitData
Punta a una DEVMODE struttura contenente dati di inizializzazione specifici del dispositivo per il driver di dispositivo. La funzione Windows DocumentProperties recupera questa struttura compilata per un determinato dispositivo. Il lpInitData parametro deve essere NULL se il driver di dispositivo deve usare l'inizializzazione predefinita (se presente) specificata dall'utente tramite il Pannello di controllo.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il PRINT.H file di intestazione è obbligatorio se viene utilizzata la DEVMODE struttura .
I nomi dei dispositivi seguono queste convenzioni: un punto finale (:) consigliato, ma facoltativo. Windows rimuove i due punti di terminazione in modo che il nome di un dispositivo che termina con due punti venga mappato alla stessa porta dello stesso nome senza due punti. I nomi dei driver e delle porte non devono contenere spazi iniziali o finali. Le funzioni di output GDI non possono essere usate con contesti informativi.
CDC::CreateIC
Crea un contesto informativo per il dispositivo specificato.
BOOL CreateIC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Parameters
lpszDriverName
Punta a una stringa con terminazione Null che specifica il nome file (senza estensione) del driver di dispositivo (ad esempio, "EPSON"). È possibile passare un CString oggetto per questo parametro.
lpszDeviceName
Punta a una stringa con terminazione Null che specifica il nome del dispositivo specifico da supportare ,ad esempio "EPSON FX-80". Il lpszDeviceName parametro viene usato se il modulo supporta più dispositivi. È possibile passare un CString oggetto per questo parametro.
lpszOutput
Punta a una stringa con terminazione Null che specifica il nome del file o del dispositivo per il supporto di output fisico (file o porta). È possibile passare un CString oggetto per questo parametro.
lpInitData
Punta ai dati di inizializzazione specifici del dispositivo per il driver di dispositivo. Il lpInitData parametro deve essere NULL se il driver di dispositivo deve usare l'inizializzazione predefinita (se presente) specificata dall'utente tramite il Pannello di controllo. Vedere CreateDC per il formato dati per l'inizializzazione specifica del dispositivo.
Return Value
Diverso da zero se ha esito positivo; in caso contrario 0.
Remarks
Il contesto delle informazioni offre un modo rapido per ottenere informazioni sul dispositivo senza creare un contesto di dispositivo.
I nomi dei dispositivi seguono queste convenzioni: un punto finale (:) consigliato, ma facoltativo. Windows rimuove i due punti di terminazione in modo che il nome di un dispositivo che termina con due punti venga mappato alla stessa porta dello stesso nome senza due punti. I nomi dei driver e delle porte non devono contenere spazi iniziali o finali. Le funzioni di output GDI non possono essere usate con contesti informativi.
CDC::DeleteDC
In generale, non chiamare questa funzione; il distruttore lo farà per te.
BOOL DeleteDC();
Return Value
Diverso da zero se la funzione è stata completata correttamente; in caso contrario, 0.
Remarks
La DeleteDC funzione membro elimina i contesti di dispositivo Windows associati all'oggetto m_hDC corrente CDC . Se questo CDC oggetto è l'ultimo contesto di dispositivo attivo per un determinato dispositivo, vengono rilasciate tutte le risorse di archiviazione e di sistema usate dal dispositivo.
Un'applicazione non deve chiamare DeleteDC se gli oggetti sono stati selezionati nel contesto del dispositivo. Gli oggetti devono essere selezionati prima del contesto di dispositivo prima dell'eliminazione.
Un'applicazione non deve eliminare un contesto di dispositivo il cui handle è stato ottenuto chiamando CWnd::GetDC. Al contrario, deve chiamare CWnd::ReleaseDC per liberare il contesto di dispositivo. Le CClientDC classi e CWindowDC vengono fornite per eseguire il wrapping di questa funzionalità.
La DeleteDC funzione viene in genere usata per eliminare i contesti di dispositivo creati con CreateDC, CreateICo CreateCompatibleDC.
Example
Vedere l'esempio per CPrintDialog::GetPrinterDC.
CDC::DeleteTempMap
Chiamato automaticamente dal CWinApp gestore inattiva, DeleteTempMap elimina tutti gli oggetti temporanei CDC creati da FromHandle, ma non elimina temporaneamente gli handle del contesto di dispositivo (hDCs) associati temporaneamente agli CDC oggetti.
static void PASCAL DeleteTempMap();
CDC::Detach
Chiamare questa funzione per scollegare m_hDC (il contesto del dispositivo di output) dall'oggetto CDC e impostare sia m_hDC che m_hAttribDC su NULL.
HDC Detach();
Return Value
Contesto di dispositivo Windows.
CDC::DPtoHIMETRIC
Usare questa funzione quando si assegnano HIMETRIC dimensioni a OLE, convertendo i pixel in HIMETRIC.
void DPtoHIMETRIC(LPSIZE lpSize) const;
Parameters
lpSize
Punta a una struttura o a un oggetto SIZE.CSize
Remarks
Se la modalità di mapping dell'oggetto contesto di dispositivo è MM_LOENGLISH, , MM_HIENGLISHMM_LOMETRICo MM_HIMETRIC, la conversione è basata sul numero di pixel nel pollice fisico. Se la modalità di mapping è una delle altre modalità non vincolate ,ad esempio MM_TEXT, la conversione è basata sul numero di pixel nel pollice logico.
CDC::DPtoLP
Converte le unità di dispositivo in unità logiche.
void DPtoLP(
LPPOINT lpPoints,
int nCount = 1) const;
void DPtoLP(LPRECT lpRect) const;
void DPtoLP(LPSIZE lpSize) const;
Parameters
lpPoints
Punta a una matrice di POINT strutture o CPoint oggetti.
nCount
Numero di punti nella matrice.
lpRect
Punta a una struttura o RECT a un CRect oggetto . Questo parametro viene usato per il semplice caso di conversione di un rettangolo da punti dispositivo a punti logici.
lpSize
Punta a una struttura o SIZE a un CSize oggetto .
Remarks
La funzione esegue il mapping delle coordinate di ogni punto o dimensione di una dimensione, dal sistema di coordinate del dispositivo al sistema di coordinate logico GDI. La conversione dipende dalla modalità di mapping corrente e dalle impostazioni delle origini e degli extent per la finestra e il viewport del dispositivo.
CDC::Draw3dRect
Chiamare questa funzione membro per disegnare un rettangolo tridimensionale.
void Draw3dRect(
LPCRECT lpRect,
COLORREF clrTopLeft,
COLORREF clrBottomRight);
void Draw3dRect(
int x,
int y,
int cx,
int cy,
COLORREF clrTopLeft,
COLORREF clrBottomRight);
Parameters
lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare un puntatore a una RECT struttura o a un CRect oggetto per questo parametro.
clrTopLeft
Specifica il colore dei lati superiore e sinistro del rettangolo tridimensionale.
clrBottomRight
Specifica il colore dei lati inferiore e destro del rettangolo tridimensionale.
x
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo tridimensionale.
y
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo tridimensionale.
cx
Specifica la larghezza del rettangolo tridimensionale.
cy
Specifica l'altezza del rettangolo tridimensionale.
Remarks
Il rettangolo verrà disegnato con i lati superiore e sinistro nel colore specificato da clrTopLeft e i lati inferiore e destro nel colore specificato da clrBottomRight.
Example
void CDCView::Draw3dRect(CDC *pDC)
{
// get the client area
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels on all sides
rect.DeflateRect(20, 20);
// draw a rectangle with red top and left sides, and
// green right and bottom sides.
pDC->Draw3dRect(rect, RGB(255, 0, 0), RGB(0, 255, 0));
// This call to the four-integer override would draw
// the same rectangle with a little less convenience:
// pDC->Draw3dRect(rect.left, rect.top, rect.Width(), rect.Height(),
// RGB(255, 0, 0), RGB(0, 255, 0));
}
CDC::DrawDragRect
Chiamare ripetutamente questa funzione membro per ridisegnare un rettangolo di trascinamento.
void DrawDragRect(
LPCRECT lpRect,
SIZE size,
LPCRECT lpRectLast,
SIZE sizeLast,
CBrush* pBrush = NULL,
CBrush* pBrushLast = NULL);
Parameters
lpRect
Punta a una RECT struttura o a un CRect oggetto che specifica le coordinate logiche di un rettangolo, in questo caso la posizione finale del rettangolo da ridisegnare.
size
Specifica lo spostamento dall'angolo superiore sinistro del bordo esterno all'angolo superiore sinistro del bordo interno (ovvero lo spessore del bordo) di un rettangolo.
lpRectLast
Punta a una RECT struttura o a un CRect oggetto che specifica le coordinate logiche della posizione di un rettangolo, in questo caso la posizione originale del rettangolo da ridisegnare.
sizeLast
Specifica lo spostamento dall'angolo superiore sinistro del bordo esterno all'angolo superiore sinistro del bordo interno (ovvero lo spessore del bordo) del rettangolo originale da ridisegnare.
pBrush
Puntatore a un oggetto pennello. Impostare su NULL per usare il pennello halftone predefinito.
pBrushLast
Puntatore all'ultimo oggetto pennello utilizzato. Impostare su NULL per usare il pennello halftone predefinito.
Remarks
Chiamarlo in un ciclo mentre si esegue il campionamento della posizione del mouse per fornire feedback visivo. Quando si chiama DrawDragRect, il rettangolo precedente viene cancellato e ne viene disegnato uno nuovo. Ad esempio, quando l'utente trascina un rettangolo sullo schermo, DrawDragRect cancellerà il rettangolo originale e ne ridisegnerà uno nuovo nella nuova posizione. Per impostazione predefinita, DrawDragRect disegna il rettangolo usando un pennello mezzotone per eliminare lo sfarfallio e per creare l'aspetto di un rettangolo che si muove senza problemi.
La prima volta che si chiama DrawDragRect, il lpRectLast parametro deve essere NULL.
CDC::DrawEdge
Chiamare questa funzione membro per disegnare i bordi di un rettangolo del tipo e dello stile specificati.
BOOL DrawEdge(
LPRECT lpRect,
UINT nEdge,
UINT nFlags);
Parameters
lpRect
Puntatore a una RECT struttura che contiene le coordinate logiche del rettangolo.
nEdge
Specifica il tipo di bordo interno ed esterno da disegnare. Questo parametro deve essere una combinazione di un flag di bordo interno e di un flag di bordo esterno. Vedere DrawEdge in Windows SDK per una tabella dei tipi di parametro.
nFlags
Flag che specificano il tipo di bordo da disegnare. Vedere DrawEdge in Windows SDK per una tabella dei valori del parametro. Per le linee diagonali, i BF_RECT flag specificano il punto finale del vettore delimitato dal parametro rettangolo.
Return Value
Diverso da zero se ha esito positivo; in caso contrario 0.
CDC::DrawEscape
Accede alle funzionalità di disegno di una visualizzazione video che non sono direttamente disponibili tramite l'interfaccia GDI (Graphics Device Interface).
int DrawEscape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData);
Parameters
nEscape
Specifica la funzione di escape da eseguire.
nInputSize
Specifica il numero di byte di dati a cui punta il lpszInputData parametro .
lpszInputData
Punta alla struttura di input necessaria per l'escape specificato.
Return Value
Specifica il risultato della funzione. Maggiore di zero se ha esito positivo, ad eccezione dell'escape QUERYESCSUPPORT di disegno, che controlla solo l'implementazione; oppure zero se l'escape non è implementato o minore di zero se si è verificato un errore.
Remarks
Quando un'applicazione chiama DrawEscape, i dati identificati da nInputSize e lpszInputData vengono passati direttamente al driver di visualizzazione specificato.
CDC::DrawFocusRect
Disegna un rettangolo nello stile utilizzato per indicare che il rettangolo ha lo stato attivo.
void DrawFocusRect(LPCRECT lpRect);
Parameters
lpRect
Punta a una RECT struttura o a un CRect oggetto che specifica le coordinate logiche del rettangolo da disegnare.
Remarks
Poiché si tratta di una funzione XOR booleana (^), la chiamata a questa funzione una seconda volta con lo stesso rettangolo rimuove il rettangolo dalla visualizzazione. Impossibile scorrere il rettangolo disegnato da questa funzione. Per scorrere un'area contenente un rettangolo disegnato da questa funzione, chiamare DrawFocusRect prima per rimuovere il rettangolo dalla visualizzazione, quindi scorrere l'area e quindi chiamare DrawFocusRect di nuovo per disegnare il rettangolo nella nuova posizione.
Caution
DrawFocusRect funziona solo in MM_TEXT modalità . In altre modalità, questa funzione non disegna correttamente il rettangolo di attivazione, ma non restituisce valori di errore.
CDC::DrawFrameControl
Chiamare questa funzione membro per disegnare un controllo frame del tipo e dello stile specificati.
BOOL DrawFrameControl(
LPRECT lpRect,
UINT nType,
UINT nState);
Parameters
lpRect
Puntatore a una RECT struttura che contiene le coordinate logiche del rettangolo.
nType
Specifica il tipo di controllo cornice da disegnare. Per un elenco dei valori possibili di questo parametro, vedere il uType parametro in DrawFrameControl in Windows SDK.
nState
Specifica lo stato iniziale del controllo frame. Può essere uno o più dei valori descritti per il uState parametro in DrawFrameControl in Windows SDK. Usare il nState valore DFCS_ADJUSTRECT per regolare il rettangolo di delimitazione per escludere il bordo circostante del pulsante di pressione.
Return Value
Diverso da zero se ha esito positivo; in caso contrario 0.
Remarks
In diversi casi, nState dipende dal nType parametro . L'elenco seguente mostra la relazione tra i quattro nType valori e nState:
DFC_BUTTONDFCS_BUTTON3STATEPulsante a tre statiDFCS_BUTTONCHECKCasella di controlloDFCS_BUTTONPUSHPulsanteDFCS_BUTTONRADIOPulsante di opzioneDFCS_BUTTONRADIOIMAGEImmagine per il pulsante di opzione (non è necessaria l'immagine)DFCS_BUTTONRADIOMASKMaschera per il pulsante di opzione (nonsquare needs mask)
DFC_CAPTIONDFCS_CAPTIONCLOSEPulsante ChiudiDFCS_CAPTIONHELPPulsante ?DFCS_CAPTIONMAXPulsante IngrandisciDFCS_CAPTIONMINPulsante Riduci a iconaDFCS_CAPTIONRESTOREPulsante Ripristina
DFC_MENUDFCS_MENUARROWFreccia sottomenuDFCS_MENUBULLETPallottolaDFCS_MENUCHECKSegno di spunta
DFC_SCROLLDFCS_SCROLLCOMBOBOXBarra di scorrimento casella combinataDFCS_SCROLLDOWNFreccia giù della barra di scorrimentoDFCS_SCROLLLEFTFreccia sinistra della barra di scorrimentoDFCS_SCROLLRIGHTFreccia destra della barra di scorrimentoDFCS_SCROLLSIZEGRIPRidimensiona il grip nell'angolo inferiore destro della finestraDFCS_SCROLLUPFreccia su della barra di scorrimento
Example
Questo codice disegna il gripper delle dimensioni nell'angolo inferiore destro della finestra. È appropriato per il OnPaint gestore di una finestra di dialogo, che non dispone di stili e normalmente non contiene altri controlli (ad esempio una barra di stato) che possono assegnare un gripper di dimensioni.
void CDCView::DrawFC(CDC *pDC)
{
CRect rc;
GetClientRect(&rc);
rc.left = rc.right - ::GetSystemMetrics(SM_CXHSCROLL);
rc.top = rc.bottom - ::GetSystemMetrics(SM_CYVSCROLL);
pDC->DrawFrameControl(rc, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
}
CDC::DrawIcon
Disegna un'icona nel dispositivo rappresentato dall'oggetto corrente CDC .
BOOL DrawIcon(
int x,
int y,
HICON hIcon);
BOOL DrawIcon(
POINT point,
HICON hIcon);
Parameters
x
Specifica la coordinata x logica dell'angolo superiore sinistro dell'icona.
y
Specifica la coordinata y logica dell'angolo superiore sinistro dell'icona.
hIcon
Identifica l'handle dell'icona da disegnare.
point
Specifica le coordinate x e y logiche dell'angolo superiore sinistro dell'icona. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Diverso da zero se la funzione è stata completata correttamente; in caso contrario, 0.
Remarks
La funzione posiziona l'angolo superiore sinistro dell'icona nella posizione specificata da x e y. La posizione è soggetta alla modalità di mapping corrente del contesto di dispositivo.
La risorsa icona deve essere stata caricata in precedenza usando le funzioni CWinApp::LoadIcon, CWinApp::LoadStandardIcono CWinApp::LoadOEMIcon. È necessario selezionare la MM_TEXT modalità di mapping prima di usare questa funzione.
Example
Vedere l'esempio per CWnd::IsIconic.
CDC::DrawState
Chiamare questa funzione membro per visualizzare un'immagine e applicare un effetto visivo per indicare uno stato, ad esempio uno stato disabilitato o predefinito.
Note
Per tutti gli nFlag stati ad eccezione DSS_NORMALdi , l'immagine viene convertita in monocromatica prima dell'applicazione dell'effetto visivo.
BOOL DrawState(
CPoint pt,
CSize size,
HBITMAP hBitmap,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
CBitmap* pBitmap,
UINT nFlags,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
HICON hIcon,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
HICON hIcon,
UINT nFlags,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
LPCTSTR lpszText,
UINT nFlags,
BOOL bPrefixText = TRUE,
int nTextLen = 0,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
LPCTSTR lpszText,
UINT nFlags,
BOOL bPrefixText = TRUE,
int nTextLen = 0,
CBrush* pBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
DRAWSTATEPROC lpDrawProc,
LPARAM lData,
UINT nFlags,
HBRUSH hBrush = NULL);
BOOL DrawState(
CPoint pt,
CSize size,
DRAWSTATEPROC lpDrawProc,
LPARAM lData,
UINT nFlags,
CBrush* pBrush = NULL);
Parameters
pt
Specifica la posizione dell'immagine.
size
Specifica le dimensioni dell'immagine.
hBitmap
Handle di una bitmap.
nFlags
Flag che specificano il tipo di immagine e lo stato. Vedere DrawState in Windows SDK per i possibili tipi e stati nFlags .
hBrush
Handle di un pennello.
pBitmap
Puntatore a un oggetto CBitmap.
pBrush
Puntatore a un oggetto CBrush.
hIcon
Handle di un'icona.
lpszText
Puntatore al testo.
bPrefixText
Testo che può contenere un tasto di scelta rapida. Il lData parametro specifica l'indirizzo della stringa e il nTextLen parametro specifica la lunghezza. Se nTextLen è 0, si presuppone che la stringa sia con terminazione Null.
nTextLen
Lunghezza della stringa di testo a lpszTextcui punta . Se nTextLen è 0, si presuppone che la stringa sia con terminazione Null.
lpDrawProc
Puntatore a una funzione di callback usata per eseguire il rendering di un'immagine. Questo parametro è obbligatorio se il tipo di immagine in nFlags è DST_COMPLEX. È facoltativo e può essere NULL se il tipo di immagine è DST_TEXT. Per tutti gli altri tipi di immagine, questo parametro viene ignorato. Per altre informazioni sulla funzione di callback, vedere la DrawStateProc funzione in Windows SDK.
lData
Specifica le informazioni sull'immagine. Il significato di questo parametro dipende dal tipo di immagine.
Return Value
Diverso da zero se ha esito positivo; in caso contrario 0.
CDC::DrawText
Chiamare questa funzione membro per formattare il testo nel rettangolo specificato. Per specificare altre opzioni di formattazione, usare CDC::DrawTextEx.
virtual int DrawText(
LPCTSTR lpszString,
int nCount,
LPRECT lpRect,
UINT nFormat);
int DrawText(
const CString& str,
LPRECT lpRect,
UINT nFormat);
Parameters
lpszString
Punta alla stringa da disegnare. Se nCount è -1, la stringa deve essere con terminazione Null.
nCount
Specifica il numero di caratteri nella stringa. Se nCount è -1, lpszString si presuppone che sia un puntatore lungo a una stringa con terminazione Null e DrawText calcola automaticamente il conteggio dei caratteri.
lpRect
Punta a una struttura o RECT a un CRect oggetto che contiene il rettangolo (in coordinate logiche) in cui deve essere formattato il testo.
str
Oggetto CString contenente i caratteri specificati da disegnare.
nFormat
Specifica il metodo di formattazione del testo. Può essere qualsiasi combinazione dei valori descritti per il uFormat parametro in DrawText in Windows SDK. (combinare usando l'operatore OR bit per bit):
Note
Alcune uFormat combinazioni di flag possono causare la modifica della stringa passata. L'uso di DT_MODIFYSTRING con DT_END_ELLIPSIS o DT_PATH_ELLIPSIS può causare la modifica della stringa, causando un'asserzione nell'override CString . I valori DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNALDT_NOCLIP, e DT_NOPREFIX non possono essere usati con il DT_TABSTOP valore .
Return Value
Altezza del testo se la funzione ha esito positivo.
Remarks
Formatta il testo espandendo le schede in spazi appropriati, allineando il testo a sinistra, a destra o al centro del rettangolo specificato e suddividendo il testo in righe che rientrano nel rettangolo specificato. Il tipo di formattazione viene specificato da nFormat.
Questa funzione membro usa il tipo di carattere, il colore del testo e il colore di sfondo del contesto di dispositivo selezionati per disegnare il testo. A meno che non venga usato il DT_NOCLIP formato, DrawText ritaglia il testo in modo che il testo non venga visualizzato all'esterno del rettangolo specificato. Si presuppone che la formattazione abbia più righe, a meno che non venga specificato il DT_SINGLELINE formato.
Se il tipo di carattere selezionato è troppo grande per il rettangolo specificato, la DrawText funzione membro non tenta di sostituire un tipo di carattere più piccolo.
Se viene specificato il DT_CALCRECT flag, il rettangolo specificato da lpRect verrà aggiornato in modo da riflettere la larghezza e l'altezza necessarie per disegnare il testo.
Se il flag di allineamento del TA_UPDATECP testo è stato impostato (vedere CDC::SetTextAlign), DrawText visualizzerà il testo a partire dalla posizione corrente, anziché a sinistra del rettangolo specificato.
DrawText non eseguirà il wrapping del testo quando il TA_UPDATECP flag è stato impostato (ovvero, il DT_WORDBREAK flag non avrà alcun effetto).
Il colore del testo può essere impostato da CDC::SetTextColor.
CDC::DrawTextEx
Formatta il testo nel rettangolo specificato.
virtual int DrawTextEx(
LPTSTR lpszString,
int nCount,
LPRECT lpRect,
UINT nFormat,
LPDRAWTEXTPARAMS lpDTParams);
int DrawTextEx(
const CString& str,
LPRECT lpRect,
UINT nFormat,
LPDRAWTEXTPARAMS lpDTParams);
Parameters
lpszString
Punta alla stringa da disegnare. Se nCount è -1, la stringa deve essere terminata con null.
nCount
Specifica il numero di caratteri nella stringa. Se nCount è -1, lpszString si presuppone che sia un puntatore lungo a una stringa con terminazione Null e DrawText calcola automaticamente il conteggio dei caratteri.
lpRect
Punta a una struttura o RECT a un CRect oggetto che contiene il rettangolo (in coordinate logiche) in cui deve essere formattato il testo.
str
Oggetto CString contenente i caratteri specificati da disegnare.
nFormat
Specifica il metodo di formattazione del testo. Può essere qualsiasi combinazione dei valori descritti per il uFormat parametro in DrawText in Windows SDK. (Combinare usando bit per bitOperatore OR :
Note
Alcune uFormat combinazioni di flag possono causare la modifica della stringa passata. L'uso di DT_MODIFYSTRING con DT_END_ELLIPSIS o DT_PATH_ELLIPSIS può causare la modifica della stringa, causando un'asserzione nell'override CString . I valori DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNALDT_NOCLIP, e DT_NOPREFIX non possono essere usati con il DT_TABSTOP valore .
lpDTParams
Puntatore a una DRAWTEXTPARAMS struttura che specifica più opzioni di formattazione. Questo parametro può essere NULL.
Remarks
Formatta il testo espandendo le schede in spazi appropriati, allineando il testo a sinistra, a destra o al centro del rettangolo specificato e suddividendo il testo in righe che rientrano nel rettangolo specificato. Il tipo di formattazione viene specificato da nFormat e lpDTParams. Per altre informazioni, vedere CDC::DrawText e DrawTextEx in Windows SDK.
Il colore del testo può essere impostato da CDC::SetTextColor.
CDC::Ellipse
Disegna un ellisse.
BOOL Ellipse(
int x1,
int y1,
int x2,
int y2);
BOOL Ellipse(LPCRECT lpRect);
Parameters
x1
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo di delimitazione dell'ellisse.
y1
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo di delimitazione dell'ellisse.
x2
Specifica la coordinata x logica dell'angolo inferiore destro del rettangolo di delimitazione dell'ellisse.
y2
Specifica la coordinata y logica dell'angolo inferiore destro del rettangolo di delimitazione dell'ellisse.
lpRect
Specifica il rettangolo di delimitazione dell'ellisse. È anche possibile passare un CRect oggetto per questo parametro.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il centro dell'ellisse è il centro del rettangolo di delimitazione specificato da x1, y1x2, e y2o lpRect. L'ellisse viene disegnata con la penna corrente e il suo interno viene riempito con il pennello corrente.
La figura disegnata da questa funzione si estende fino a, ma non include le coordinate destra e inferiore. Ciò significa che l'altezza della figura è y2 - y1 e la larghezza della figura è x2 - x1.
Se la larghezza o l'altezza del rettangolo di delimitazione è 0, non viene disegnata alcuna ellisse.
CDC::EndDoc
Termina un processo di stampa avviato da una chiamata alla StartDoc funzione membro.
int EndDoc();
Return Value
Maggiore o uguale a 0 se la funzione ha esito positivo o negativo se si è verificato un errore.
Remarks
Questa funzione membro sostituisce l'escape della ENDDOC stampante e deve essere chiamata immediatamente dopo il completamento di un processo di stampa riuscito.
Se un'applicazione rileva un errore di stampa o un'operazione di stampa annullata, non deve tentare di terminare l'operazione utilizzando EndDoc o AbortDoc. GDI termina automaticamente l'operazione prima di restituire il valore di errore.
Questa funzione non deve essere usata all'interno dei metafile.
Example
Vedere l'esempio per CDC::StartDoc.
CDC::EndPage
Informa il dispositivo che l'applicazione ha completato la scrittura in una pagina.
int EndPage();
Return Value
Maggiore o uguale a 0 se la funzione ha esito positivo o negativo se si è verificato un errore.
Remarks
Questa funzione membro viene in genere usata per indirizzare il driver di dispositivo a passare a una nuova pagina.
Questa funzione membro sostituisce l'escape della NEWFRAME stampante. A differenza di NEWFRAME, questa funzione viene sempre chiamata dopo la stampa di una pagina.
Example
Vedere l'esempio per CDC::StartDoc.
CDC::EndPath
Chiude una parentesi di percorso e seleziona il percorso definito dalla parentesi quadra nel contesto del dispositivo.
BOOL EndPath();
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Example
Vedere l'esempio per CDC::BeginPath.
CDC::EnumObjects
Enumera le penne e i pennelli disponibili in un contesto di dispositivo.
int EnumObjects(
int nObjectType,
int (CALLBACK* lpfn)(
LPVOID,
LPARAM),
LPARAM lpData);
Parameters
nObjectType
Specifica il tipo di oggetto. Può avere i valori OBJ_BRUSH o OBJ_PEN.
lpfn
Indirizzo dell'istanza di routine della funzione di callback fornita dall'applicazione. Vedere la sezione "Osservazioni" di seguito.
lpData
Punta ai dati forniti dall'applicazione. I dati vengono passati alla funzione di callback insieme alle informazioni sull'oggetto.
Return Value
Specifica l'ultimo valore restituito dalla funzione di callback. Il suo significato è definito dall'utente.
Remarks
Per ogni oggetto di un determinato tipo, la funzione di callback passata viene chiamata con le informazioni per tale oggetto. Il sistema chiama la funzione di callback fino a quando non sono presenti più oggetti o la funzione di callback restituisce 0.
Le nuove funzionalità di Microsoft Visual C++ consentono di usare una funzione comune come funzione passata a EnumObjects. L'indirizzo passato a EnumObjects è un puntatore a una funzione esportata con EXPORT e con la convenzione di chiamata Pascal. Nelle applicazioni in modalità di protezione non è necessario creare questa funzione con la funzione Windows MakeProcInstance o liberare la funzione dopo l'uso con la FreeProcInstance funzione Windows.
Non è inoltre necessario esportare il nome della funzione in un'istruzione EXPORTS nel file di definizione del modulo dell'applicazione. È invece possibile usare il modificatore di EXPORT funzione, come in
int CALLBACK EXPORT AFunction (LPSTR, LPSTR);
per fare in modo che il compilatore emetta il record di esportazione appropriato per l'esportazione in base al nome senza aliasing. Questo funziona per la maggior parte delle esigenze. Per alcuni casi speciali, ad esempio l'esportazione di una funzione ordinale o l'aliasing dell'esportazione, è comunque necessario usare un'istruzione EXPORTS in un file di definizione del modulo.
Per la compilazione di programmi Microsoft Foundation, in genere si useranno le opzioni del /GA compilatore e /GEs . L'opzione /Gw del compilatore non viene usata con le classi Microsoft Foundation. Se si usa la funzione MakeProcInstanceWindows , sarà necessario eseguire il cast esplicito del puntatore di funzione restituito da FARPROC al tipo necessario in questa API. Le interfacce di registrazione del callback sono ora indipendenti dai tipi (è necessario passare un puntatore a funzione che punta al tipo di funzione corretto per il callback specifico).
Inoltre, tutte le funzioni di callback devono intercettare le eccezioni di Microsoft Foundation prima di tornare a Windows, perché le eccezioni non possono essere generate attraverso i limiti di callback. Per altre informazioni sulle eccezioni, vedere l'articolo Eccezioni.
Example
// print some info about a pen we're ready to enumerate
BOOL CALLBACK EnumObjectHandler(LPVOID lpLogObject, LPARAM /* lpData */)
{
LOGPEN *pPen = (LOGPEN *)lpLogObject;
switch (pPen->lopnStyle)
{
case PS_SOLID:
TRACE0("PS_SOLID: ");
break;
case PS_DASH:
TRACE0("PS_DASH: ");
break;
case PS_DOT:
TRACE0("PS_DOT: ");
break;
case PS_DASHDOT:
TRACE0("PS_DASHDOT: ");
break;
case PS_DASHDOTDOT:
TRACE0("PS_DASHDOTDOT: ");
break;
case PS_NULL:
TRACE0("PS_NULL: ");
break;
case PS_INSIDEFRAME:
TRACE0("PS_INSIDEFRAME:");
break;
default:
TRACE0("unk style:");
}
TRACE2("Color: 0x%8.8X, Width: %d\n", pPen->lopnColor, pPen->lopnWidth);
return TRUE;
}
// get the default printer and enumerate the pens it has
void CDCView::OnEnumPens()
{
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
HDC hdc = dlg.GetPrinterDC();
if (hdc != NULL)
{
CDC dc;
dc.Attach(hdc);
VERIFY(dc.EnumObjects(OBJ_PEN, EnumObjectHandler, 0));
}
}
CDC::Escape
Questa funzione membro è praticamente obsoleta per la programmazione Win32.
virtual int Escape(
int nEscape,
int nCount,
LPCSTR lpszInData,
LPVOID lpOutData);
int Escape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData,
int nOutputSize,
LPSTR lpszOutputData);
Parameters
nEscape
Specifica la funzione di escape da eseguire.
Per un elenco completo delle funzioni di escape, vedere Escape in Windows SDK.
nCount
Specifica il numero di byte di dati a lpszInDatacui punta .
lpszInData
Punta alla struttura dei dati di input necessaria per questo escape.
lpOutData
Punta alla struttura che deve ricevere l'output da questo escape. Il lpOutData parametro è NULL se non vengono restituiti dati.
nInputSize
Specifica il numero di byte di dati a cui punta il lpszInputData parametro .
lpszInputData
Punta alla struttura di input necessaria per l'escape specificato.
nOutputSize
Specifica il numero di byte di dati a cui punta il lpszOutputData parametro .
lpszOutputData
Punta alla struttura che riceve l'output da questo escape. Questo parametro deve essere NULL se non vengono restituiti dati.
Return Value
Se la funzione ha esito positivo, viene restituito un valore positivo, ad eccezione dell'escape, che controlla solo l'implementazione QUERYESCSUPPORT . Se l'escape non è implementato, viene restituito zero. Se si è verificato un errore, viene restituito un valore negativo. Di seguito sono riportati i valori di errore comuni:
SP_ERRORErrore generale.SP_OUTOFDISKSpazio su disco insufficiente attualmente disponibile per lo spooling e non sarà più disponibile spazio.SP_OUTOFMEMORYMemoria insufficiente per lo spooling.SP_USERABORTL'utente ha terminato il processo tramite Gestione stampa.
Remarks
Degli escape della stampante originale, è supportato solo QUERYESCSUPPORT per le applicazioni Win32. Tutti gli altri escape della stampante sono obsoleti e sono supportati solo per la compatibilità con le applicazioni a 16 bit.
Per la programmazione Win32, CDC ora fornisce sei funzioni membro che sostituisce le sequenze di escape della stampante corrispondenti:
Supporta inoltre CDC::GetDeviceCaps indici Win32 che sostituisce altri caratteri di escape della stampante. Per altre informazioni, vedere GetDeviceCaps in Windows SDK.
Questa funzione membro consente alle applicazioni di accedere alle strutture di un particolare dispositivo che non sono direttamente disponibili tramite GDI.
Usare la prima versione se l'applicazione usa valori di escape predefiniti. Usare la seconda versione se l'applicazione definisce valori di escape privati. Per altre informazioni sulla seconda versione, vedere ExtEscape in Windows SDK.
CDC::ExcludeClipRect
Crea una nuova area di ritaglio costituita dall'area di ritaglio esistente meno il rettangolo specificato.
int ExcludeClipRect(
int x1,
int y1,
int x2,
int y2);
int ExcludeClipRect(LPCRECT lpRect);
Parameters
x1
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo.
y1
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo.
x2
Specifica la coordinata x logica dell'angolo inferiore destro del rettangolo.
y2
Specifica la coordinata y logica dell'angolo inferiore destro del rettangolo.
lpRect
Specifica il rettangolo. Può anche essere un CRect oggetto .
Return Value
Specifica il tipo della nuova area di ritaglio. Può essere uno dei valori seguenti:
COMPLEXREGIONL'area ha bordi sovrapposti.ERRORNessuna area creata.NULLREGIONL'area è vuota.SIMPLEREGIONL'area non ha bordi sovrapposti.
Remarks
La larghezza del rettangolo, specificata dal valore assoluto di x2 - x1, non deve superare 32.767 unità. Questo limite si applica anche all'altezza del rettangolo.
CDC::ExcludeUpdateRgn
Impedisce il disegno all'interno di aree non valide di una finestra escludendo un'area aggiornata nella finestra dall'area di ritaglio associata all'oggetto CDC .
int ExcludeUpdateRgn(CWnd* pWnd);
Parameters
pWnd
Punta all'oggetto finestra la cui finestra viene aggiornata.
Return Value
Tipo di area esclusa. Può essere uno dei valori seguenti:
COMPLEXREGIONL'area ha bordi sovrapposti.ERRORNessuna area creata.NULLREGIONL'area è vuota.SIMPLEREGIONL'area non ha bordi sovrapposti.
CDC::ExtFloodFill
Riempie un'area della superficie di visualizzazione con il pennello corrente.
BOOL ExtFloodFill(
int x,
int y,
COLORREF crColor,
UINT nFillType);
Parameters
x
Specifica la coordinata x logica del punto in cui inizia il riempimento.
y
Specifica la coordinata y logica del punto in cui inizia il riempimento.
crColor
Specifica il colore del limite o dell'area da riempire. L'interpretazione di crColor dipende dal valore di nFillType.
nFillType
Specifica il tipo di riempimento flood da eseguire. Deve essere uno dei valori seguenti:
FLOODFILLBORDERL'area di riempimento è delimitata dal colore specificato dacrColor. Questo stile è identico al riempimento eseguito daFloodFill.FLOODFILLSURFACEL'area di riempimento è definita dal colore specificato dacrColor. Il riempimento continua verso l'esterno in tutte le direzioni fino a quando si incontra il colore. Questo stile è utile per riempire aree con confini colorati.
Return Value
Diverso da zero se la funzione ha esito positivo; In caso contrario, 0 se non è stato possibile completare il riempimento, se il punto specificato ha il colore limite specificato da crColor (se FLOODFILLBORDER richiesto), se il punto specificato non ha il colore specificato da crColor (se FLOODFILLSURFACE richiesto) o se il punto non è esterno all'area di ritaglio.
Remarks
Questa funzione membro offre maggiore flessibilità rispetto FloodFill a perché è possibile specificare un tipo di riempimento in nFillType.
Se nFillType è impostato su FLOODFILLBORDER, si presuppone che l'area sia completamente delimitata dal colore specificato da crColor. La funzione inizia in corrispondenza del punto specificato da x e y riempie tutte le direzioni del limite di colore.
Se nFillType è impostato su FLOODFILLSURFACE, la funzione inizia al punto specificato da x e y continua in tutte le direzioni, riempiendo tutte le aree adiacenti contenenti il colore specificato da crColor.
Solo i contesti di memoria e i dispositivi che supportano la tecnologia raster-display supportano ExtFloodFill. Per altre informazioni, vedere la GetDeviceCaps funzione membro.
CDC::ExtTextOut
Chiamare questa funzione membro per scrivere una stringa di caratteri all'interno di un'area rettangolare usando il tipo di carattere attualmente selezionato.
virtual BOOL ExtTextOut(
int x,
int y,
UINT nOptions,
LPCRECT lpRect,
LPCTSTR lpszString,
UINT nCount,
LPINT lpDxWidths);
BOOL ExtTextOut(
int x,
int y,
UINT nOptions,
LPCRECT lpRect,
const CString& str,
LPINT lpDxWidths);
Parameters
x
Specifica la coordinata x logica della cella di caratteri per il primo carattere nella stringa specificata.
y
Specifica la coordinata y logica della parte superiore della cella di caratteri per il primo carattere nella stringa specificata.
nOptions
Specifica il tipo di rettangolo. Questo parametro può essere uno, entrambi o nessuno dei valori seguenti:
ETO_CLIPPEDSpecifica che il testo viene ritagliato nel rettangolo.ETO_OPAQUESpecifica che il colore di sfondo corrente riempie il rettangolo. È possibile impostare ed eseguire query sul colore di sfondo corrente con leSetBkColorfunzioni membro eGetBkColor.
lpRect
Punta a una RECT struttura che determina le dimensioni del rettangolo. Questo parametro può essere NULL. È anche possibile passare un CRect oggetto per questo parametro.
lpszString
Punta alla stringa di caratteri specificata da disegnare. È anche possibile passare un CString oggetto per questo parametro.
nCount
Specifica il numero di caratteri nella stringa.
lpDxWidths
Punta a una matrice di valori che indicano la distanza tra le origini delle celle di caratteri adiacenti. Ad esempio, [ lpDxWidthsi] le unità logiche separano le origini della cella di caratteri e della cella ii di caratteri + 1. Se lpDxWidths è NULL, ExtTextOut usa la spaziatura predefinita tra i caratteri.
str
Oggetto CString contenente i caratteri specificati da disegnare.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
L'area rettangolare può essere opaca (riempita con il colore di sfondo corrente) e può essere un'area di ritaglio.
Se nOptions è 0 e lpRect è NULL, la funzione scrive il testo nel contesto di dispositivo senza usare un'area rettangolare. Per impostazione predefinita, la posizione corrente non viene usata o aggiornata dalla funzione. Se un'applicazione deve aggiornare la posizione corrente quando chiama ExtTextOut, l'applicazione può chiamare la CDC funzione SetTextAlign membro con nFlags impostato su TA_UPDATECP. Quando questo flag è impostato, Windows ignora x e y nelle chiamate successive a ExtTextOut e usa invece la posizione corrente. Quando un'applicazione usa TA_UPDATECP per aggiornare la posizione corrente, ExtTextOut imposta la posizione corrente sulla fine della riga di testo precedente o sulla posizione specificata dall'ultimo elemento della matrice a lpDxWidthscui punta , a qualsiasi valore maggiore.
CDC::FillPath
Chiude tutte le figure aperte nel percorso corrente e riempie l'interno del percorso utilizzando la modalità corrente di riempimento del pennello e del poligono.
BOOL FillPath();
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Dopo il riempimento dell'interno, il percorso viene rimosso dal contesto del dispositivo.
CDC::FillRect
Chiamare questa funzione membro per riempire un determinato rettangolo usando il pennello specificato.
void FillRect(
LPCRECT lpRect,
CBrush* pBrush);
Parameters
lpRect
Punta a una RECT struttura che contiene le coordinate logiche del rettangolo da riempire. È anche possibile passare un CRect oggetto per questo parametro.
pBrush
Identifica il pennello utilizzato per riempire il rettangolo.
Remarks
La funzione riempie il rettangolo completo, inclusi i bordi sinistro e superiore, ma non riempie i bordi destro e inferiore.
Il pennello deve essere creato usando le CBrush funzioni CreateHatchBrushmembro , CreatePatternBrushe CreateSolidBrusho recuperate dalla GetStockObject funzione Windows.
Quando si riempie il rettangolo specificato, FillRect non include i lati destro e inferiore del rettangolo. GDI riempie un rettangolo fino a, ma non include, la colonna destra e la riga inferiore, indipendentemente dalla modalità di mapping corrente.
FillRect confronta i valori dei topmembri , bottom, lefte right del rettangolo specificato. Se bottom è minore o uguale a oppure se top è minore o uguale a rightleft, il rettangolo non viene disegnato.
FillRect è simile a CDC::FillSolidRect. Tuttavia, FillRect accetta un pennello e pertanto può essere usato per riempire un rettangolo con un colore a tinta unita, un colore dithered, pennelli tratteggi o un motivo.
FillSolidRect utilizza solo colori a tinta unita (indicati da un COLORREF parametro).
FillRect in genere è più lento di FillSolidRect.
CDC::FillRgn
Riempie l'area specificata da pRgn con il pennello specificato da pBrush.
BOOL FillRgn(
CRgn* pRgn,
CBrush* pBrush);
Parameters
pRgn
Puntatore all'area da riempire. Le coordinate per l'area specificata vengono specificate in unità logiche.
pBrush
Identifica il pennello da utilizzare per riempire l'area.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il pennello deve essere creato usando le CBrush funzioni CreateHatchBrushmembro , , CreatePatternBrushCreateSolidBrusho essere recuperato da GetStockObject.
Example
Vedere l'esempio per CRgn::CreateRoundRectRgn.
CDC::FillSolidRect
Chiamare questa funzione membro per riempire il rettangolo specificato con il colore a tinta unita specificato.
void FillSolidRect(
LPCRECT lpRect,
COLORREF clr);
void FillSolidRect(
int x,
int y,
int cx,
int cy,
COLORREF clr);
Parameters
lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare un puntatore a una RECT struttura di dati o a un CRect oggetto per questo parametro.
clr Specifica il colore da utilizzare per riempire il rettangolo.
x
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo.
y
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo di destinazione.
cx
Specifica la larghezza del rettangolo.
cy
Specifica l'altezza del rettangolo.
Remarks
FillSolidRect è molto simile a CDC::FillRect. Tuttavia, FillSolidRect usa solo colori a tinta unita (indicati dal COLORREF parametro), mentre FillRect accetta un pennello e pertanto può essere usato per riempire un rettangolo con un colore a tinta unita, un colore dithered, pennelli tratteggi o un motivo.
FillSolidRect in genere è più veloce di FillRect.
Note
Quando si chiama FillSolidRect, il colore di sfondo, impostato in precedenza tramite SetBkColor, viene impostato sul colore indicato da clr.
CDC::FlattenPath
Trasforma tutte le curve nel percorso selezionato nel contesto di dispositivo corrente e trasforma ogni curva in una sequenza di linee.
BOOL FlattenPath();
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
CDC::FloodFill
Riempie un'area della superficie di visualizzazione con il pennello corrente.
BOOL FloodFill(
int x,
int y,
COLORREF crColor);
Parameters
x
Specifica la coordinata x logica del punto in cui inizia il riempimento.
y
Specifica la coordinata y logica del punto in cui inizia il riempimento.
crColor
Specifica il colore del limite.
Return Value
Diverso da zero se la funzione ha esito positivo; In caso contrario, viene restituito 0 se non è stato possibile completare il riempimento, il punto specificato ha il colore limite specificato da crColoro il punto si trova all'esterno dell'area di ritaglio.
Remarks
Si presuppone che l'area sia delimitata come specificato da crColor. La FloodFill funzione inizia nel punto specificato da x e y continua in tutte le direzioni fino al limite del colore.
Solo i contesti di memoria e i dispositivi che supportano la tecnologia raster-display supportano la FloodFill funzione membro. Per informazioni sulle RC_BITBLT funzionalità, vedere la GetDeviceCaps funzione membro.
La ExtFloodFill funzione offre funzionalità simili ma maggiore flessibilità.
CDC::FrameRect
Disegna un bordo intorno al rettangolo specificato da lpRect.
void FrameRect(
LPCRECT lpRect,
CBrush* pBrush);
Parameters
lpRect
Punta a una struttura o RECT a un CRect oggetto che contiene le coordinate logiche degli angoli superiore sinistro e inferiore destro del rettangolo. È anche possibile passare un CRect oggetto per questo parametro.
pBrush
Identifica il pennello da utilizzare per incorniciare il rettangolo.
Remarks
La funzione usa il pennello specificato per disegnare il bordo. La larghezza e l'altezza del bordo sono sempre 1 unità logica.
Se la coordinata del bottom rettangolo è minore o uguale a topo se right è minore o uguale a left, il rettangolo non viene disegnato.
Il bordo disegnato da FrameRect si trova nella stessa posizione di un bordo disegnato dalla Rectangle funzione membro utilizzando le stesse coordinate (se Rectangle usa una penna di 1 larghezza unità logica). L'interno del rettangolo non viene riempito da FrameRect.
CDC::FrameRgn
Disegna un bordo intorno all'area specificata pRgn utilizzando il pennello specificato da pBrush.
BOOL FrameRgn(
CRgn* pRgn,
CBrush* pBrush,
int nWidth,
int nHeight);
Parameters
pRgn
Punta all'oggetto che identifica l'area CRgn da racchiudere in un bordo. Le coordinate per l'area specificata vengono specificate in unità logiche.
pBrush
Punta all'oggetto CBrush che identifica il pennello da utilizzare per disegnare il bordo.
nWidth
Specifica la larghezza del bordo in tratti pennelli verticali nelle unità dispositivo.
nHeight
Specifica l'altezza del bordo in tratti pennelli orizzontali nelle unità dispositivo.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Example
Vedere l'esempio per CRgn::CombineRgn.
CDC::FromHandle
Restituisce un puntatore a un CDC oggetto quando viene assegnato un handle a un contesto di dispositivo.
static CDC* PASCAL FromHandle(HDC hDC);
Parameters
hDC
Contiene un handle per un contesto di dispositivo Windows.
Return Value
Il puntatore può essere temporaneo e non deve essere archiviato oltre l'uso immediato.
Remarks
Se un CDC oggetto non è collegato all'handle, viene creato e collegato un oggetto temporaneo CDC .
Example
Vedere l'esempio per CPrintDialog::GetPrinterDC.
CDC::GetArcDirection
Restituisce la direzione dell'arco corrente per il contesto di dispositivo.
int GetArcDirection() const;
Return Value
Specifica la direzione dell'arco corrente, se ha esito positivo. Di seguito sono riportati i valori restituiti validi:
AD_COUNTERCLOCKWISEArchi e rettangoli disegnati in senso antiorario.AD_CLOCKWISE Arcse rettangoli disegnati in senso orario.
Se si verifica un errore, il valore restituito è zero.
Remarks
Le funzioni arc e rettangolo usano la direzione dell'arco.
CDC::GetAspectRatioFilter
Recupera l'impostazione per il filtro delle proporzioni corrente.
CSize GetAspectRatioFilter() const;
Return Value
Oggetto CSize che rappresenta le proporzioni utilizzate dal filtro delle proporzioni corrente.
Remarks
Le proporzioni sono il rapporto formato dalla larghezza e dall'altezza di un dispositivo. Le informazioni sulle proporzioni di un dispositivo vengono usate nella creazione, nella selezione e nella visualizzazione dei tipi di carattere. Windows fornisce un filtro speciale, il filtro proporzionali, per selezionare i tipi di carattere progettati per una particolare proporzioni da tutti i tipi di carattere disponibili. Il filtro usa le proporzioni specificate dalla SetMapperFlags funzione membro.
CDC::GetBkColor
Restituisce il colore di sfondo corrente.
COLORREF GetBkColor() const;
Return Value
Valore di colore RGB.
Remarks
Se la modalità di sfondo è OPAQUE, il sistema usa il colore di sfondo per riempire le lacune nelle linee in stile, le lacune tra le linee trattette nei pennelli e lo sfondo nelle celle di caratteri. Il sistema usa anche il colore di sfondo durante la conversione delle bitmap tra contesti di dispositivo a colori e monocromatici.
CDC::GetBkMode
Restituisce la modalità di sfondo.
int GetBkMode() const;
Return Value
Modalità di sfondo corrente, che può essere OPAQUE o TRANSPARENT.
Remarks
La modalità di sfondo definisce se il sistema rimuove i colori di sfondo esistenti sull'area di disegno prima di disegnare testo, pennelli tratteggi o qualsiasi stile di penna che non sia una linea continua.
CDC::GetBoundsRect
Restituisce il rettangolo di delimitazione accumulato corrente per il contesto di dispositivo specificato.
UINT GetBoundsRect(
LPRECT lpRectBounds,
UINT flags);
Parameters
lpRectBounds
Punta a un buffer che riceverà il rettangolo di delimitazione corrente. Il rettangolo viene restituito in coordinate logiche.
flags
Specifica se il rettangolo di delimitazione deve essere cancellato dopo che è stato restituito. Questo parametro deve essere zero o impostato sul valore seguente:
-
DCB_RESETForza la cancellazione del rettangolo di delimitazione dopo la restituzione.
Return Value
Specifica lo stato corrente del rettangolo di delimitazione se la funzione ha esito positivo. Può essere una combinazione dei valori seguenti:
DCB_ACCUMULATESi sta verificando l'accumulo del rettangolo di delimitazione.DCB_RESETIl rettangolo di delimitazione è vuoto.DCB_SETIl rettangolo di delimitazione non è vuoto.DCB_ENABLEL'accumulo di delimitazione è attivo.DCB_DISABLEL'accumulo di delimitazione è disattivato.
CDC::GetBrushOrg
Recupera l'origine (in unità dispositivo) del pennello attualmente selezionato per il contesto di dispositivo.
CPoint GetBrushOrg() const;
Return Value
Origine corrente del pennello (in unità dispositivo) come CPoint oggetto .
Remarks
L'origine iniziale del pennello si trova in corrispondenza (0,0) dell'area client. Il valore restituito specifica questo punto nelle unità dispositivo rispetto all'origine della finestra desktop.
CDC::GetCharacterPlacement
Recupera vari tipi di informazioni su una stringa di caratteri.
DWORD GetCharacterPlacement(
LPCTSTR lpString,
int nCount,
int nMaxExtent,
LPGCP_RESULTS lpResults,
DWORD dwFlags) const;
DWORD GetCharacterPlacement(
CString& str,
int nMaxExtent,
LPGCP_RESULTS lpResults,
DWORD dwFlags) const;
Parameters
lpString
Puntatore alla stringa di caratteri da elaborare.
nCount
Specifica la lunghezza della stringa. Per la versione ANSI, si tratta di un BYTE conteggio e per la funzione Unicode è un WORD conteggio. Per ulteriori informazioni, vedere GetCharacterPlacement.
nMaxExtent
Specifica l'extent massimo (in unità logiche) in cui viene elaborata la stringa. I caratteri che, se elaborati, superano questo extent vengono ignorati. I calcoli per qualsiasi ordinamento o matrice di glifi necessari si applicano solo ai caratteri inclusi. Questo parametro viene usato solo se il GCP_MAXEXTENT valore viene specificato nel dwFlags parametro . Poiché la funzione elabora la stringa di input, ogni carattere e il relativo extent vengono aggiunti all'output, all'extent e ad altre matrici solo se l'extent totale non ha ancora superato il valore massimo. Una volta raggiunto il limite, l'elaborazione verrà arrestata.
lpResults
Puntatore a una GCP_Results struttura che riceve i risultati della funzione.
dwFlags
Specifica come elaborare la stringa nelle matrici necessarie. Questo parametro può essere uno o più dei valori elencati nella dwFlags sezione dell'argomento GetCharacterPlacement .
str
Puntatore a un CString oggetto da elaborare.
Return Value
Se la funzione ha esito positivo, il valore restituito è la larghezza e l'altezza della stringa in unità logiche.
Se la funzione ha esito negativo, il valore restituito è zero.
Remarks
Questa funzione membro emula la funzionalità della funzione GetCharacterPlacement, come descritto in Windows SDK.
CDC::GetCharABCWidths
Recupera la larghezza dei caratteri consecutivi in un intervallo specificato dal tipo di carattere TrueType corrente.
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABC lpabc) const;
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABCFLOAT lpABCF) const;
Parameters
nFirstChar
Specifica il primo carattere nell'intervallo di caratteri del tipo di carattere corrente per cui vengono restituite le larghezze dei caratteri.
nLastChar
Specifica l'ultimo carattere nell'intervallo di caratteri del tipo di carattere corrente per cui vengono restituite le larghezze dei caratteri.
lpabc
Punta a una matrice di ABC strutture che ricevono la larghezza del carattere quando la funzione restituisce. Questa matrice deve contenere almeno il numero ABC di strutture presenti nell'intervallo specificato dai nFirstChar parametri e nLastChar .
lpABCF
Punta a un buffer fornito dall'applicazione con una matrice di ABCFLOAT strutture per ricevere la larghezza dei caratteri quando la funzione restituisce. Le larghezze restituite da questa funzione sono nel formato a virgola mobile IEEE.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Le larghezze vengono restituite in unità logiche. Questa funzione ha esito positivo solo con i tipi di carattere TrueType.
L'indicatore di rasterizzazione TrueType fornisce la spaziatura dei caratteri "ABC" dopo che è stata selezionata una dimensione punto specifica. La spaziatura "A" è la distanza aggiunta alla posizione corrente prima di posizionare il glifo. La spaziatura "B" è la larghezza della parte nera del glifo. La spaziatura "C" viene aggiunta alla posizione corrente per tenere conto dello spazio vuoto a destra del glifo. La larghezza avanzata totale è data da A + B + C.
Quando la GetCharABCWidths funzione membro recupera larghezze negative "A" o "C" per un carattere, tale carattere include sporgenti o sovrasporgenti.
Per convertire le larghezze ABC in unità di progettazione dei tipi di carattere, un'applicazione deve creare un tipo di carattere la cui altezza (come specificato nel lfHeight membro della LOGFONT struttura) è uguale al valore archiviato nel ntmSizeEM membro della NEWTEXTMETRIC struttura. Il valore del ntmSizeEM membro può essere recuperato chiamando la EnumFontFamilies funzione Windows.
Le larghezze ABC del carattere predefinito vengono utilizzate per i caratteri che non rientrano nell'intervallo del tipo di carattere attualmente selezionato.
Per recuperare la larghezza dei caratteri nei tipi di carattere non TrueType, le applicazioni devono usare la GetCharWidth funzione Windows.
CDC::GetCharABCWidthsI
Recupera le larghezze, in unità logiche, di indici glifi consecutivi in un intervallo specificato dal tipo di carattere TrueType corrente.
BOOL GetCharABCWidthsI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPABC lpabc) const;
Parameters
giFirst
Specifica il primo indice del glifo nel gruppo di indici di glifi consecutivi del tipo di carattere corrente. Questo parametro viene usato solo se il pgi parametro è NULL.
cgi
Specifica il numero di indici del glifo.
pgi
Puntatore a una matrice contenente indici del glifo. Se il valore è NULL, viene invece usato il giFirst parametro . Il cgi parametro specifica il numero di indici glifi in questa matrice.
lpabc
Puntatore a una matrice di ABC strutture che ricevono la larghezza dei caratteri. Questa matrice deve contenere almeno tutte ABC le strutture in cui sono presenti indici glifi specificati dal cgi parametro .
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Questa funzione membro emula la funzionalità della funzione GetCharABCWidthsI, come descritto in Windows SDK.
CDC::GetCharWidth
Recupera le larghezze dei singoli caratteri in un gruppo consecutivo di caratteri dal tipo di carattere corrente, utilizzando m_hAttribDC, il contesto del dispositivo di input.
BOOL GetCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
BOOL GetCharWidth(
UINT nFirstChar,
UINT nLastChar,
float* lpFloatBuffer) const;
Parameters
nFirstChar
Specifica il primo carattere in un gruppo consecutivo di caratteri nel tipo di carattere corrente.
nLastChar
Specifica l'ultimo carattere in un gruppo consecutivo di caratteri nel tipo di carattere corrente.
lpBuffer
Punta a un buffer che riceverà i valori di larghezza per un gruppo consecutivo di caratteri nel tipo di carattere corrente.
lpFloatBuffer
Punta a un buffer per ricevere le larghezze dei caratteri. Le larghezze restituite sono nel formato a virgola mobile IEEE a 32 bit. Le larghezze vengono misurate lungo la linea di base dei caratteri.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Ad esempio, se nFirstChar identifica la lettera 'a' e nLastChar identifica la lettera 'z', la funzione recupera le larghezze di tutti i caratteri minuscoli.
La funzione archivia i valori nel buffer a lpBuffercui punta . Questo buffer deve essere sufficientemente grande da contenere tutte le larghezze. Ciò significa che nell'esempio specificato devono essere presenti almeno 26 voci.
Se un carattere nel gruppo consecutivo di caratteri non esiste in un tipo di carattere specifico, verrà assegnato il valore di larghezza del carattere predefinito.
CDC::GetCharWidthI
Recupera le larghezze, in coordinate logiche, di indici glifi consecutivi in un intervallo specificato dal tipo di carattere corrente.
BOOL GetCharWidthI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPINT lpBuffer) const;
Parameters
giFirst
Specifica il primo indice del glifo nel gruppo di indici di glifi consecutivi del tipo di carattere corrente. Questo parametro viene usato solo se il pgi parametro è NULL.
cgi
Specifica il numero di indici del glifo.
pgi
Puntatore a una matrice contenente indici del glifo. Se il valore è NULL, viene invece usato il giFirst parametro . Il cgi parametro specifica il numero di indici glifi in questa matrice.
lpBuffer
Puntatore a un buffer che riceve le larghezze.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Questa funzione membro emula la funzionalità della funzione GetCharWidthI, come descritto in Windows SDK.
CDC::GetClipBox
Recupera le dimensioni del rettangolo di delimitazione più stretto intorno al limite di ritaglio corrente.
virtual int GetClipBox(LPRECT lpRect) const;
Parameters
lpRect
Punta alla struttura o RECT all'oggetto CRect che deve ricevere le dimensioni del rettangolo.
Return Value
Tipo dell'area di ritaglio. Può essere uno dei valori seguenti:
COMPLEXREGIONL'area di ritaglio presenta bordi sovrapposti.ERRORIl contesto del dispositivo non è valido.NULLREGIONL'area di ritaglio è vuota.SIMPLEREGIONL'area di ritaglio non ha bordi sovrapposti.
Remarks
Le dimensioni vengono copiate nel buffer a lpRectcui punta .
CDC::GetColorAdjustment
Recupera i valori di regolazione del colore per il contesto di dispositivo.
BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
Parameters
lpColorAdjust
Punta a una COLORADJUSTMENT struttura di dati per ricevere i valori di regolazione del colore.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
CDC::GetCurrentBitmap
Restituisce un puntatore all'oggetto attualmente selezionato CBitmap .
CBitmap* GetCurrentBitmap() const;
Return Value
Puntatore a un CBitmap oggetto, se ha esito positivo; in caso contrario NULL, .
Remarks
Questa funzione membro può restituire oggetti temporanei.
CDC::GetCurrentBrush
Restituisce un puntatore all'oggetto attualmente selezionato CBrush .
CBrush* GetCurrentBrush() const;
Return Value
Puntatore a un CBrush oggetto, se ha esito positivo; in caso contrario NULL, .
Remarks
Questa funzione membro può restituire oggetti temporanei.
CDC::GetCurrentFont
Restituisce un puntatore all'oggetto attualmente selezionato CFont .
CFont* GetCurrentFont() const;
Return Value
Puntatore a un CFont oggetto, se ha esito positivo; in caso contrario NULL, .
Remarks
Questa funzione membro può restituire oggetti temporanei.
CDC::GetCurrentPalette
Restituisce un puntatore all'oggetto attualmente selezionato CPalette .
CPalette* GetCurrentPalette() const;
Return Value
Puntatore a un CPalette oggetto, se ha esito positivo; in caso contrario NULL, .
Remarks
Questa funzione membro può restituire oggetti temporanei.
CDC::GetCurrentPen
Restituisce un puntatore all'oggetto attualmente selezionato CPen .
CPen* GetCurrentPen() const;
Return Value
Puntatore a un CPen oggetto, se ha esito positivo; in caso contrario NULL, .
Remarks
Questa funzione membro può restituire oggetti temporanei.
CDC::GetCurrentPosition
Recupera la posizione corrente (in coordinate logiche).
CPoint GetCurrentPosition() const;
Return Value
Posizione corrente come CPoint oggetto .
Remarks
La posizione corrente può essere impostata con la MoveTo funzione membro.
CDC::GetDCBrushColor
Recupera il colore corrente del pennello.
COLORREF GetDCBrushColor() const;
Return Value
Se la funzione ha esito positivo, il valore restituito è il COLORREF valore per il colore corrente del pennello.
Se la funzione ha esito negativo, il valore restituito è CLR_INVALID.
Remarks
Questa funzione membro emula la funzionalità della funzione GetDCBrushColor, come descritto in Windows SDK.
CDC::GetDCPenColor
Recupera il colore corrente della penna.
COLORREF GetDCPenColor() const;
Return Value
Se la funzione ha esito positivo, il valore restituito è il COLORREF valore per il colore della penna corrente.
Se la funzione ha esito negativo, il valore restituito è CLR_INVALID.
Remarks
Questa funzione membro usa la funzione GetDCPenColorWin32 , come descritto in Windows SDK.
CDC::GetDeviceCaps
Recupera un'ampia gamma di informazioni specifiche del dispositivo sul dispositivo di visualizzazione.
int GetDeviceCaps(int nIndex) const;
Parameters
nIndex
Specifica il tipo di informazioni da restituire. Per un elenco di valori, vedere GetDeviceCaps in Windows SDK.
Return Value
Valore della funzionalità richiesta se la funzione ha esito positivo.
Example
Vedere l'esempio per CPrintDialog::GetDefaults.
CDC::GetFontData
Recupera informazioni sulle metriche dei tipi di carattere da un file di tipo di carattere scalabile.
DWORD GetFontData(
DWORD dwTable,
DWORD dwOffset,
LPVOID lpData,
DWORD cbData) const;
Parameters
dwTable
Specifica il nome della tabella delle metriche da restituire. Questo parametro può essere una delle tabelle delle metriche documentate nella specifica TrueType Font Files pubblicata da Microsoft Corporation. Se questo parametro è 0, le informazioni vengono recuperate a partire dall'inizio del file di tipo di carattere.
dwOffset
Specifica l'offset dall'inizio della tabella in corrispondenza della quale iniziare a recuperare le informazioni. Se questo parametro è 0, le informazioni vengono recuperate a partire dall'inizio della tabella specificata dal dwTable parametro . Se questo valore è maggiore o uguale alla dimensione della tabella, GetFontData restituisce 0.
lpData
Punta a un buffer che riceverà le informazioni sul tipo di carattere. Se questo valore è NULL, la funzione restituisce le dimensioni del buffer necessario per i dati del tipo di carattere specificati nel dwTable parametro .
cbData
Specifica la lunghezza, in byte, delle informazioni da recuperare. Se questo parametro è 0, GetFontData restituisce le dimensioni dei dati specificati nel dwTable parametro .
Return Value
Specifica il numero di byte restituiti nel buffer a lpData cui punta se la funzione ha esito positivo; in caso contrario, -1.
Remarks
Le informazioni da recuperare vengono identificate specificando un offset nel file del tipo di carattere e la lunghezza delle informazioni da restituire.
Un'applicazione può talvolta utilizzare la GetFontData funzione membro per salvare un tipo di carattere TrueType con un documento. A tale scopo, l'applicazione determina se il tipo di carattere può essere incorporato e quindi recupera l'intero file di tipo di carattere, specificando 0 per i dwTableparametri , dwOffsete cbData .
Le applicazioni possono determinare se un tipo di carattere può essere incorporato controllando il otmfsType membro della OUTLINETEXTMETRIC struttura. Se è impostato il bit 1 di , l'incorporamento non è consentito per il tipo di otmfsType carattere. Se bit 1 è chiaro, il tipo di carattere può essere incorporato. Se è impostato il bit 2, l'incorporamento è di sola lettura.
Se un'applicazione tenta di utilizzare questa funzione per recuperare informazioni per un tipo di carattere non TrueType, la GetFontData funzione membro restituisce -1.
CDC::GetFontLanguageInfo
Restituisce informazioni sul tipo di carattere attualmente selezionato per il contesto di visualizzazione specificato.
DWORD GetFontLanguageInfo() const;
Return Value
Il valore restituito identifica le caratteristiche del tipo di carattere attualmente selezionato. Per un elenco completo dei valori possibili, vedere GetFontLanguageInfo.
Remarks
Questa funzione membro emula la funzionalità della funzione GetFontLanguageInfo, come descritto in Windows SDK.
CDC::GetGlyphOutline
Recupera la curva del contorno o la bitmap per un carattere di struttura nel tipo di carattere corrente.
DWORD GetGlyphOutline(
UINT nChar,
UINT nFormat,
LPGLYPHMETRICS lpgm,
DWORD cbBuffer,
LPVOID lpBuffer,
const MAT2* lpmat2) const;
Parameters
nChar
Specifica il carattere per cui devono essere restituite le informazioni.
nFormat
Specifica il formato in cui la funzione deve restituire informazioni. Può essere uno dei valori seguenti o 0:
| Value | Meaning |
|---|---|
GGO_BITMAP |
Restituisce la bitmap del glifo. Quando la funzione termina, il buffer a cui lpBuffer punta contiene una bitmap a 1 bit per pixel le cui righe iniziano sui limiti doubleword. |
GGO_NATIVE |
Restituisce i punti dati della curva nel formato nativo del rasterizzatore, usando le unità dispositivo. Quando si specifica questo valore, qualsiasi trasformazione specificata in lpmat2 viene ignorata. |
Quando il valore di nFormat è 0, la funzione riempie una GLYPHMETRICS struttura ma non restituisce i dati della struttura del glifo.
lpgm
Punta a una GLYPHMETRICS struttura che descrive la posizione del glifo nella cella di caratteri.
cbBuffer
Specifica le dimensioni del buffer in cui la funzione copia le informazioni sul carattere di struttura. Se questo valore è 0 e il nFormat parametro è il GGO_BITMAP valore o GGO_NATIVE , la funzione restituisce le dimensioni necessarie del buffer.
lpBuffer
Punta a un buffer in cui la funzione copia le informazioni sul carattere di struttura. Se nFormat specifica il GGO_NATIVE valore, le informazioni vengono copiate sotto forma di TTPOLYGONHEADER strutture e TTPOLYCURVE . Se questo valore è NULL e nFormat è il GGO_BITMAP valore o GGO_NATIVE , la funzione restituisce le dimensioni necessarie del buffer.
lpmat2
Punta a una MAT2 struttura che contiene una matrice di trasformazione per il carattere. Questo parametro non può essere NULL, anche quando viene specificato il GGO_NATIVE valore per nFormat.
Return Value
Dimensioni, in byte, del buffer necessario per le informazioni recuperate se cbBuffer è 0 o lpBuffer è NULL. In caso contrario, è un valore positivo se la funzione ha esito positivo o -1 se si verifica un errore.
Remarks
Un'applicazione può ruotare i caratteri recuperati in formato bitmap specificando una matrice di trasformazione 2 by-2 nella struttura a lpmat2cui punta .
Un contorno del glifo viene restituito come una serie di contorni. Ogni contorno è definito da una TTPOLYGONHEADER struttura seguita da tutte le TTPOLYCURVE strutture necessarie per descriverla. Tutti i punti vengono restituiti come POINTFX strutture e rappresentano posizioni assolute, non spostamenti relativi. Il punto iniziale specificato dal pfxStart membro della TTPOLYGONHEADER struttura è il punto in cui inizia la struttura di un contorno. Le TTPOLYCURVE strutture che seguono possono essere record polilinei o record spline. I record polilinei sono una serie di punti; linee disegnate tra i punti descrivono il contorno del carattere. I record spline rappresentano le curve quadratiche usate da TrueType, ovvero quadratiche b-splines.
CDC::GetGraphicsMode
Recupera la modalità grafica corrente per il contesto di dispositivo specificato.
int GetGraphicsMode() const;
Return Value
Restituisce la modalità grafica corrente in caso di esito positivo. Per un elenco dei valori che questo metodo può restituire, vedere GetGraphicsMode.
Restituisce 0 in caso di errore.
Per ottenere informazioni estese sull'errore, chiamare GetLastError.
Remarks
Questo metodo esegue il wrapping della funzione GetGraphicsModeGDI di Windows.
CDC::GetHalftoneBrush
Chiamare questa funzione membro per recuperare un pennello halftone.
static CBrush* PASCAL GetHalftoneBrush();
Return Value
Puntatore a un CBrush oggetto se ha esito positivo; in caso contrario NULL, .
Remarks
Un pennello a metàtone mostra i pixel che sono in alternativa di primo piano e colori di sfondo per creare un motivo dithering. Il diagramma seguente mostra un esempio di modello dithering creato da un pennello mezzotone:
Il diagramma mostra in che modo il colore di sfondo del nero e il colore di primo piano del giallo vengono combinati in un motivo alternando i pixel neri e gialli tra loro per creare un tratto di penna dithered.
CDC::GetKerningPairs
Recupera le coppie di crenatura dei caratteri per il tipo di carattere attualmente selezionato nel contesto di dispositivo specificato.
int GetKerningPairs(
int nPairs,
LPKERNINGPAIR lpkrnpair) const;
Parameters
nPairs
Specifica il numero di KERNINGPAIR strutture a lpkrnpaircui punta . La funzione non copierà più coppie di crenatura rispetto a quelle specificate da nPairs.
lpkrnpair
Punta a una matrice di KERNINGPAIR strutture che ricevono le coppie di crenatura quando la funzione restituisce. Questa matrice deve contenere almeno il numero di strutture specificato da nPairs. Se questo parametro è NULL, la funzione restituisce il numero totale di coppie di crenatura per il tipo di carattere.
Return Value
Specifica il numero di coppie di crenatura recuperate o il numero totale di coppie di crenatura nel tipo di carattere, se la funzione ha esito positivo. Zero viene restituito se la funzione ha esito negativo o non sono presenti coppie di crenatura per il tipo di carattere.
CDC::GetLayout
Chiamare questa funzione membro per determinare il layout del testo e della grafica per un contesto di dispositivo, ad esempio una stampante o un metafile.
DWORD GetLayout() const;
Return Value
In caso di esito positivo, i flag di layout per il contesto di dispositivo corrente. In caso contrario, GDI_ERROR. Per informazioni sull'errore estese, chiamare GetLastError. Per un elenco dei flag di layout, vedere CDC::SetLayout.
Remarks
Il layout predefinito è da sinistra a destra.
CDC::GetMapMode
Recupera la modalità di mapping corrente.
int GetMapMode() const;
Return Value
Modalità di mapping.
Remarks
Per una descrizione delle modalità di mapping, vedere la SetMapMode funzione membro.
Note
Se si chiama SetLayout per modificare il controller di dominio in layout da destra a sinistra, SetLayout la modalità di mapping viene automaticamente modificata in MM_ISOTROPIC. Di conseguenza, qualsiasi chiamata successiva a GetMapMode restituirà MM_ISOTROPIC.
CDC::GetMiterLimit
Restituisce il limite di miter per il contesto di dispositivo.
float GetMiterLimit() const;
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il limite di miter viene utilizzato quando si disegnano linee geometriche con join di miter.
CDC::GetNearestColor
Restituisce il colore a tinta unita che meglio corrisponde a un colore logico specificato.
COLORREF GetNearestColor(COLORREF crColor) const;
Parameters
crColor
Specifica il colore da associare.
Return Value
Valore di colore RGB (rosso, verde, blu) che definisce il colore a tinta unita più vicino al crColor valore che il dispositivo può rappresentare.
Remarks
Il dispositivo specificato deve essere in grado di rappresentare questo colore.
CDC::GetOutlineTextMetrics
Recupera le informazioni sulle metriche per i tipi di carattere TrueType.
UINT GetOutlineTextMetrics(
UINT cbData,
LPOUTLINETEXTMETRIC lpotm) const;
Parameters
lpotm
Punta a una matrice di OUTLINETEXTMETRIC strutture. Se questo parametro è NULL, la funzione restituisce le dimensioni del buffer necessario per i dati delle metriche recuperati.
cbData
Specifica le dimensioni, in byte, del buffer in cui vengono restituite le informazioni.
lpotm
Punta a una OUTLINETEXTMETRIC struttura. Se questo parametro è NULL, la funzione restituisce le dimensioni del buffer necessario per le informazioni sulle metriche recuperate.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
La OUTLINETEXTMETRIC struttura contiene la maggior parte delle informazioni sulle metriche dei tipi di carattere fornite con il formato TrueType, inclusa una TEXTMETRIC struttura. Gli ultimi quattro membri della OUTLINETEXTMETRIC struttura sono puntatori alle stringhe. Le applicazioni devono allocare spazio per queste stringhe oltre allo spazio necessario per gli altri membri. Poiché non esiste alcun limite imposto dal sistema alle dimensioni delle stringhe, il metodo più semplice per allocare memoria consiste nel recuperare le dimensioni necessarie specificando NULL per lpotm nella prima chiamata alla GetOutlineTextMetrics funzione.
CDC::GetOutputCharWidth
Usa il contesto del dispositivo di output, m_hDCe recupera le larghezze dei singoli caratteri in un gruppo consecutivo di caratteri dal tipo di carattere corrente.
BOOL GetOutputCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
Parameters
nFirstChar
Specifica il primo carattere in un gruppo consecutivo di caratteri nel tipo di carattere corrente.
nLastChar
Specifica l'ultimo carattere in un gruppo consecutivo di caratteri nel tipo di carattere corrente.
lpBuffer
Punta a un buffer che riceverà i valori di larghezza per un gruppo consecutivo di caratteri nel tipo di carattere corrente.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Ad esempio, se nFirstChar identifica la lettera 'a' e nLastChar identifica la lettera 'z', la funzione recupera le larghezze di tutti i caratteri minuscoli.
La funzione archivia i valori nel buffer a lpBuffercui punta . Questo buffer deve essere sufficientemente grande da contenere tutte le larghezze; ovvero devono essere presenti almeno 26 voci nell'esempio specificato.
Se un carattere nel gruppo consecutivo di caratteri non esiste in un tipo di carattere specifico, verrà assegnato il valore di larghezza del carattere predefinito.
CDC::GetOutputTabbedTextExtent
Chiamare questa funzione membro per calcolare la larghezza e l'altezza di una stringa di caratteri usando m_hDC, il contesto del dispositivo di output.
CSize GetOutputTabbedTextExtent(
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions) const;
CSize GetOutputTabbedTextExtent(
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions) const;
Parameters
lpszString
Punta a una stringa di caratteri da misurare. È anche possibile passare un CString oggetto per questo parametro.
nCount
Specifica la lunghezza della stringa a lpszStringcui punta .
nTabPositions
Specifica il numero di posizioni tabulazioni nella matrice a lpnTabStopPositionscui punta .
lpnTabStopPositions
Punta a una matrice di numeri interi contenenti le posizioni tabulazione in unità logiche. Le tabulazioni devono essere ordinate in ordine crescente; il valore x più piccolo deve essere il primo elemento della matrice. Le schede indietro non sono consentite.
str
Oggetto CString contenente i caratteri specificati da misurare.
Return Value
Dimensioni della stringa (in unità logiche) in un CSize oggetto .
Remarks
Se la stringa contiene uno o più caratteri di tabulazione, la larghezza della stringa si basa sulle tabulazioni specificate da lpnTabStopPositions. La funzione usa il tipo di carattere attualmente selezionato per calcolare le dimensioni della stringa.
L'area di ritaglio corrente non sfalsa la larghezza e l'altezza restituita dalla GetOutputTabbedTextExtent funzione.
Poiché alcuni dispositivi non inseriscono caratteri in matrici di celle regolari (ovvero, crenaturano i caratteri), la somma degli extent dei caratteri in una stringa potrebbe non essere uguale alla misura della stringa.
Se nTabPositions è 0 e lpnTabStopPositions è NULL, le schede vengono espanse fino a otto larghezze medie dei caratteri. Se nTabPositions è 1, le tabulazioni verranno separate dalla distanza specificata dal primo valore della matrice a cui lpnTabStopPositions punta. Se lpnTabStopPositions punta a più di un singolo valore, viene impostata una tabulazione per ogni valore nella matrice, fino al numero specificato da nTabPositions.
CDC::GetOutputTextExtent
Chiamare questa funzione membro per usare il contesto del dispositivo di output, m_hDCe calcolare la larghezza e l'altezza di una riga di testo, usando il tipo di carattere corrente.
CSize GetOutputTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetOutputTextExtent(const CString& str) const;
Parameters
lpszString
Punta a una stringa di caratteri. È anche possibile passare un CString oggetto per questo parametro.
nCount
Specifica la lunghezza della stringa a lpszStringcui punta .
str
Oggetto CString contenente i caratteri specificati da misurare.
Return Value
Dimensioni della stringa (in unità logiche) restituite in un CSize oggetto .
Remarks
L'area di ritaglio corrente non influisce sulla larghezza e l'altezza restituita da GetOutputTextExtent.
Poiché alcuni dispositivi non inseriscono caratteri in matrici di celle regolari (ovvero, eseguono la crenatura), la somma degli extent dei caratteri in una stringa potrebbe non essere uguale alla misura della stringa.
CDC::GetOutputTextMetrics
Recupera le metriche per il tipo di carattere corrente usando m_hDC, il contesto del dispositivo di output.
BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
Parameters
lpMetrics
Punta alla TEXTMETRIC struttura che riceve le metriche.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
CDC::GetPath
Recupera le coordinate che definiscono gli endpoint delle linee e i punti di controllo delle curve presenti nel percorso selezionato nel contesto del dispositivo.
int GetPath(
LPPOINT lpPoints,
LPBYTE lpTypes,
int nCount) const;
Parameters
lpPoints
Punta a una matrice di POINT strutture di dati o CPoint oggetti in cui vengono posizionati gli endpoint di linea e i punti di controllo della curva.
lpTypes
Punta a una matrice di byte in cui vengono posizionati i tipi di vertice. I valori sono uno dei seguenti:
PT_MOVETOSpecifica che il punto corrispondente inlpPointsinizia una figura non contigua.PT_LINETOSpecifica che il punto precedente e il punto corrispondente inlpPointssono gli endpoint di una riga.PT_BEZIERTOSpecifica che il punto corrispondente inlpPointsè un punto di controllo o un punto finale per una curva Bzier.
PT_BEZIERTO i tipi si verificano sempre in set di tre. Il punto nel percorso immediatamente precedente definisce il punto iniziale per la curva Bzier. I primi due PT_BEZIERTO punti sono i punti di controllo e il terzo PT_BEZIERTO punto è il punto finale (se hardcoded).
Un PT_LINETO tipo o PT_BEZIERTO può essere combinato con il flag seguente (usando l'operatore bit per bit OR) per indicare che il punto corrispondente è l'ultimo punto di una figura e che la figura deve essere chiusa:
-
PT_CLOSEFIGURESpecifica che la figura viene chiusa automaticamente dopo il disegno della linea o della curva corrispondente. La figura viene chiusa disegnando una linea dalla linea o dall'endpoint della curva al punto corrispondente all'ultimoPT_MOVETOoggetto .
nCount
Specifica il numero totale di strutture di POINT dati che possono essere inserite nella lpPoints matrice. Questo valore deve essere uguale al numero di byte che possono essere inseriti nella lpTypes matrice.
Return Value
Se il nCount parametro è diverso da zero, il numero di punti enumerati. Se nCount è 0, il numero totale di punti nel percorso (e GetPath non scrive nulla nei buffer). Se nCount è diverso da zero e è minore del numero di punti nel percorso, il valore restituito è -1.
Remarks
Il contesto del dispositivo deve contenere un percorso chiuso. I punti del percorso vengono restituiti in coordinate logiche. I punti vengono archiviati nel percorso nelle coordinate del dispositivo, quindi GetPath cambiano i punti dalle coordinate del dispositivo alle coordinate logiche usando l'inverso della trasformazione corrente. La FlattenPath funzione membro può essere chiamata prima GetPathdi , per convertire tutte le curve nel percorso in segmenti di linea.
Example
Vedere l'esempio per CDC::BeginPath.
CDC::GetPixel
Recupera il valore del colore RGB del pixel nel punto specificato da x e y.
COLORREF GetPixel(
int x,
int y) const;
COLORREF GetPixel(POINT point) const;
Parameters
x
Specifica la coordinata x logica del punto da esaminare.
y
Specifica la coordinata y logica del punto da esaminare.
point
Specifica le coordinate x e y logiche del punto da esaminare.
Return Value
Per una delle due versioni della funzione, un valore di colore RGB per il colore del punto specificato. È -1 se le coordinate non specificano un punto nell'area di ritaglio.
Remarks
Il punto deve trovarsi nell'area di ritaglio. Se il punto non si trova nell'area di ritaglio, la funzione non ha alcun effetto e restituisce -1.
Non tutti i dispositivi supportano la funzione GetPixel. Per altre informazioni, vedere la RC_BITBLT funzionalità raster nella GetDeviceCaps funzione membro.
La GetPixel funzione membro ha due forme. Il primo accetta due valori di coordinata; il secondo accetta una POINT struttura o un CPoint oggetto .
CDC::GetPolyFillMode
Recupera la modalità di riempimento poligono corrente.
int GetPolyFillMode() const;
Return Value
Modalità con riempimento poligono corrente o ALTERNATEWINDING, se la funzione ha esito positivo.
Remarks
Per una descrizione delle modalità di riempimento poligono, vedere la SetPolyFillMode funzione membro.
CDC::GetROP2
Recupera la modalità di disegno corrente.
int GetROP2() const;
Return Value
Modalità di disegno. Per un elenco dei valori della modalità disegno, vedere la SetROP2 funzione membro.
Remarks
La modalità di disegno specifica il modo in cui i colori della penna e l'interno degli oggetti riempiti vengono combinati con il colore già presente sulla superficie di visualizzazione.
CDC::GetSafeHdc
Chiamare questa funzione membro per ottenere m_hDC, il contesto del dispositivo di output.
HDC GetSafeHdc() const;
Return Value
Handle del contesto di dispositivo.
Remarks
Questa funzione membro funziona anche con puntatori Null.
CDC::GetStretchBltMode
Recupera la modalità di estensione bitmap corrente.
int GetStretchBltMode() const;
Return Value
Il valore restituito specifica la modalità di estensione bitmap corrente , STRETCH_ANDSCANS, STRETCH_DELETESCANSo STRETCH_ORSCANS , se la funzione ha esito positivo.
Remarks
La modalità di estensione bitmap definisce il modo in cui le informazioni vengono rimosse dalle bitmap estese o compresse dalla StretchBlt funzione membro.
Le STRETCH_ANDSCANS modalità e STRETCH_ORSCANS vengono in genere usate per mantenere i pixel di primo piano nelle bitmap monocromatiche. La STRETCH_DELETESCANS modalità viene in genere usata per mantenere il colore nelle bitmap a colori.
CDC::GetTabbedTextExtent
Chiamare questa funzione membro per calcolare la larghezza e l'altezza di una stringa di caratteri usando m_hAttribDC, il contesto del dispositivo dell'attributo.
CSize GetTabbedTextExtent(
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions) const;
CSize GetTabbedTextExtent(
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions) const;
Parameters
lpszString
Punta a una stringa di caratteri. È anche possibile passare un CString oggetto per questo parametro.
nCount
Specifica la lunghezza della stringa a lpszStringcui punta .
nTabPositions
Specifica il numero di posizioni tabulazioni nella matrice a lpnTabStopPositionscui punta .
lpnTabStopPositions
Punta a una matrice di numeri interi contenenti le posizioni tabulazione in unità logiche. Le tabulazioni devono essere ordinate in ordine crescente; il valore x più piccolo deve essere il primo elemento della matrice. Le schede indietro non sono consentite.
str
Oggetto CString contenente i caratteri specificati da disegnare.
Return Value
Dimensioni della stringa (in unità logiche) in un CSize oggetto .
Remarks
Se la stringa contiene uno o più caratteri di tabulazione, la larghezza della stringa si basa sulle tabulazioni specificate da lpnTabStopPositions. La funzione usa il tipo di carattere attualmente selezionato per calcolare le dimensioni della stringa.
L'area di ritaglio corrente non sfalsa la larghezza e l'altezza restituita dalla GetTabbedTextExtent funzione.
Poiché alcuni dispositivi non inseriscono caratteri in matrici di celle regolari (ovvero, crenaturano i caratteri), la somma degli extent dei caratteri in una stringa potrebbe non essere uguale alla misura della stringa.
Se nTabPositions è 0 e lpnTabStopPositions è NULL, le schede vengono espanse fino a otto volte la larghezza media dei caratteri. Se nTabPositions è 1, le tabulazioni verranno separate dalla distanza specificata dal primo valore della matrice a cui lpnTabStopPositions punta. Se lpnTabStopPositions punta a più di un singolo valore, viene impostata una tabulazione per ogni valore nella matrice, fino al numero specificato da nTabPositions.
CDC::GetTextAlign
Recupera lo stato dei flag di allineamento del testo per il contesto di dispositivo.
UINT GetTextAlign() const;
Return Value
Stato dei flag di allineamento del testo. Il valore restituito è uno o più dei valori seguenti:
TA_BASELINESpecifica l'allineamento dell'asse x e la linea di base del tipo di carattere scelto all'interno del rettangolo di delimitazione.TA_BOTTOMSpecifica l'allineamento dell'asse x e della parte inferiore del rettangolo di delimitazione.TA_CENTERSpecifica l'allineamento dell'asse y e del centro del rettangolo di delimitazione.TA_LEFTSpecifica l'allineamento dell'asse y e del lato sinistro del rettangolo di delimitazione.TA_NOUPDATECPSpecifica che la posizione corrente non viene aggiornata.TA_RIGHTSpecifica l'allineamento dell'asse y e del lato destro del rettangolo di delimitazione.TA_TOPSpecifica l'allineamento dell'asse x e della parte superiore del rettangolo di delimitazione.TA_UPDATECPSpecifica che la posizione corrente viene aggiornata.
Remarks
I flag di allineamento del testo determinano il modo in cui le TextOut funzioni membro e ExtTextOut allineano una stringa di testo in relazione al punto iniziale della stringa. I flag di allineamento del testo non sono necessariamente flag a bit singolo e possono essere uguali a 0. Per verificare se è impostato un flag, un'applicazione deve seguire questa procedura:
Applicare l'operatore OR bit per bit (
|) al flag e ai relativi flag, raggruppati come indicato di seguito:TA_LEFT,TA_CENTEReTA_RIGHTTA_BASELINE,TA_BOTTOMeTA_TOPTA_NOUPDATECPeTA_UPDATECP
Applicare l'operatore AND bit per
GetTextAlignVerificare l'uguaglianza di questo risultato e il flag.
CDC::GetTextCharacterExtra
Recupera l'impostazione corrente per la quantità di spaziatura intercaracter.
int GetTextCharacterExtra() const;
Return Value
Quantità della spaziatura intercaracter.
Remarks
GDI aggiunge questa spaziatura a ogni carattere, inclusi i caratteri di interruzione, quando scrive una riga di testo nel contesto del dispositivo.
Il valore predefinito per la quantità di spaziatura intercaracter è 0.
CDC::GetTextColor
Recupera il colore del testo corrente.
COLORREF GetTextColor() const;
Return Value
Colore del testo corrente come valore di colore RGB.
Remarks
Il colore del testo è il colore di primo piano dei caratteri disegnati usando le funzioni TextOutmembro di output di testo GDI , ExtTextOute TabbedTextOut.
CDC::GetTextExtent
Chiamare questa funzione membro per calcolare la larghezza e l'altezza di una riga di testo usando il tipo di carattere corrente per determinare le dimensioni.
CSize GetTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetTextExtent(const CString& str) const;
Parameters
lpszString
Punta a una stringa di caratteri. È anche possibile passare un CString oggetto per questo parametro.
nCount
Specifica il numero di caratteri nella stringa.
str
Oggetto CString contenente i caratteri specificati.
Return Value
Dimensioni della stringa (in unità logiche) in un CSize oggetto .
Remarks
Le informazioni vengono recuperate da m_hAttribDC, il contesto del dispositivo dell'attributo.
Per impostazione predefinita, GetTextExtent presuppone che il testo per il quale recupera la dimensione sia impostata lungo una linea orizzontale, ovvero il carattere di escape è 0. Se si crea un tipo di carattere che specifica un carattere di escape diverso da zero, è necessario convertire l'angolo del testo in modo esplicito per ottenere le dimensioni della stringa.
L'area di ritaglio corrente non influisce sulla larghezza e l'altezza restituita da GetTextExtent.
Poiché alcuni dispositivi non inseriscono caratteri in matrici di celle regolari (ovvero, eseguono la crenatura), la somma degli extent dei caratteri in una stringa potrebbe non essere uguale alla misura della stringa.
CDC::GetTextExtentExPointI
Recupera il numero di caratteri in una stringa specificata che verrà inserita all'interno di uno spazio specificato e riempie una matrice con l'extent di testo per ognuno di questi caratteri.
BOOL GetTextExtentExPointI(
LPWORD pgiIn,
int cgi,
int nMaxExtent,
LPINT lpnFit,
LPINT alpDx,
LPSIZE lpSize) const;
Parameters
pgiIn
Puntatore a una matrice di indici del glifo per i quali devono essere recuperati extent.
cgi
Specifica il numero di glifi nella matrice a pgiIncui punta .
nMaxExtent
Specifica la larghezza massima consentita, in unità logiche, della stringa formattata.
lpnFit
Puntatore a un numero intero che riceve un conteggio del numero massimo di caratteri che verrà inserito nello spazio specificato da nMaxExtent. Quando lpnFit è NULL, nMaxExtent viene ignorato.
alpDx
Puntatore a una matrice di numeri interi che riceve extent parziali del glifo. Ogni elemento nella matrice assegna la distanza, in unità logiche, tra l'inizio della matrice degli indici del glifo e uno dei glifi che si inserisce nello spazio specificato da nMaxExtent. Anche se questa matrice deve avere almeno il numero di elementi specificati da cgi, la funzione riempie la matrice con extent solo per tutti gli indici glifi specificati da lpnFit. Se lpnDx è NULL, la funzione non calcola le larghezze parziali delle stringhe.
lpSize
Puntatore a una SIZE struttura che riceve le dimensioni della matrice di indici glifi, in unità logiche. Questo valore non può essere NULL.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Questa funzione membro emula la funzionalità della funzione GetTextExtentExPointI, come descritto in Windows SDK.
CDC::GetTextExtentPointI
Recupera la larghezza e l'altezza della matrice specificata di indici del glifo.
BOOL GetTextExtentPointI(
LPWORD pgiIn,
int cgi,
LPSIZE lpSize) const;
Parameters
pgiIn
Puntatore a una matrice di indici del glifo per i quali devono essere recuperati extent.
cgi
Specifica il numero di glifi nella matrice a pgiIncui punta .
lpSize
Puntatore a una SIZE struttura che riceve le dimensioni della matrice di indici glifi, in unità logiche. Questo valore non può essere NULL.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Questa funzione membro emula la funzionalità della funzione GetTextExtentPointI, come descritto in Windows SDK.
CDC::GetTextFace
Chiamare questa funzione membro per copiare il nome del carattere tipografico del tipo di carattere corrente in un buffer.
int GetTextFace(
int nCount,
LPTSTR lpszFacename) const;
int GetTextFace(CString& rString) const;
Parameters
nCount
Specifica le dimensioni del buffer (in byte). Se il nome del carattere tipografico è più lungo del numero di byte specificato da questo parametro, il nome viene troncato.
lpszFacename
Punta al buffer per il nome del carattere tipografico.
rString
Riferimento a un oggetto CString.
Return Value
Numero di byte copiati nel buffer, senza includere il carattere Null di terminazione. È 0 se si verifica un errore.
Remarks
Il nome del carattere tipografico viene copiato come stringa con terminazione Null.
CDC::GetTextMetrics
Recupera le metriche per il tipo di carattere corrente usando il contesto del dispositivo dell'attributo.
BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
Parameters
lpMetrics
Punta alla TEXTMETRIC struttura che riceve le metriche.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
CDC::GetViewportExt
Recupera gli extent x e y del riquadro di visualizzazione del contesto di dispositivo.
CSize GetViewportExt() const;
Return Value
Gli extent x e y (in unità dispositivo) come CSize oggetto .
CDC::GetViewportOrg
Recupera le coordinate x e y dell'origine del riquadro di visualizzazione associato al contesto di dispositivo.
CPoint GetViewportOrg() const;
Return Value
Origine del riquadro di visualizzazione (nelle coordinate del dispositivo) come CPoint oggetto .
CDC::GetWindow
Restituisce la finestra associata al contesto di dispositivo di visualizzazione.
CWnd* GetWindow() const;
Return Value
Puntatore a un CWnd oggetto se ha esito positivo; in caso contrario NULL, .
Remarks
Si tratta di una funzione avanzata. Ad esempio, questa funzione membro potrebbe non restituire la finestra di visualizzazione durante la stampa o l'anteprima di stampa. Restituisce sempre la finestra associata all'output. Funzioni di output che usano il disegno del controller di dominio specificato in questa finestra.
CDC::GetWindowExt
Recupera gli extent x e y della finestra associata al contesto di dispositivo.
CSize GetWindowExt() const;
Return Value
Gli extent x e y (in unità logiche) come CSize oggetto .
CDC::GetWindowOrg
Recupera le coordinate x e y dell'origine della finestra associata al contesto di dispositivo.
CPoint GetWindowOrg() const;
Return Value
Origine della finestra (in coordinate logiche) come CPoint oggetto .
CDC::GetWorldTransform
Recupera lo spazio globale corrente nella trasformazione dello spazio delle pagine.
BOOL GetWorldTransform(XFORM& rXform) const;
Parameters
rXform
Riferimento a una XFORM struttura che riceve la trasformazione dello spazio globale corrente nello spazio delle pagine.
Return Value
Restituisce un valore diverso da zero in caso di esito positivo.
Restituisce 0 in caso di errore.
Per ottenere informazioni estese sull'errore, chiamare GetLastError.
Remarks
Questo metodo esegue il wrapping della funzione GetWorldTransformGDI di Windows.
CDC::GradientFill
Chiamare questa funzione membro per riempire strutture di rettangolo e triangolo con colore che si dissolve uniformemente da un lato all'altro.
BOOL GradientFill(
TRIVERTEX* pVertices,
ULONG nVertices,
void* pMesh,
ULONG nMeshElements,
DWORD dwMode);
Parameters
pVertices
Puntatore a una matrice di TRIVERTEX strutture che definiscono ogni vertice di triangolo.
nVertices
Numero di vertici.
pMesh
Matrice di GRADIENT_TRIANGLE strutture in modalità triangolo o matrice di GRADIENT_RECT strutture in modalità rettangolo.
nMeshElements
Numero di elementi (triangoli o rettangoli) in pMesh.
dwMode
Specifica la modalità di riempimento sfumato. Per un elenco dei valori possibili, vedere GradientFill in Windows SDK.
Return Value
TRUE se l'esito è positivo; in caso contrario, FALSE.
Remarks
Per altre informazioni, vedere GradientFill in Windows SDK.
CDC::GrayString
Disegna testo in grigio (grigio) nella posizione specificata scrivendo il testo in una bitmap di memoria, oscurando la bitmap e quindi copiando la bitmap nella visualizzazione.
virtual BOOL GrayString(
CBrush* pBrush,
BOOL (CALLBACK* lpfnOutput)(
HDC,
LPARAM,
int),
LPARAM lpData,
int nCount,
int x,
int y,
int nWidth,
int nHeight);
Parameters
pBrush
Identifica il pennello da utilizzare per la colorazione (grigio).
lpfnOutput
Specifica l'indirizzo dell'istanza di routine della funzione di callback fornita dall'applicazione che disegnare la stringa. Per altre informazioni, vedere la descrizione della funzione di callback di Windows.OutputFunc Se questo parametro è NULL, il sistema usa la funzione Windows TextOut per disegnare la stringa e lpData si presuppone che sia un puntatore lungo alla stringa di caratteri da restituire.
lpData
Specifica un puntatore lontano ai dati da passare alla funzione di output. Se lpfnOutput è NULL, lpData deve essere un puntatore lungo alla stringa da restituire.
nCount
Specifica il numero di caratteri da restituire. Se questo parametro è 0, GrayString calcola la lunghezza della stringa (presupponendo che lpData sia un puntatore alla stringa). Se nCount è 1 e la funzione a cui lpfnOutput punta restituisce 0, l'immagine viene visualizzata ma non in grigio.
x
Specifica la coordinata x logica della posizione iniziale del rettangolo che racchiude la stringa.
y
Specifica la coordinata y logica della posizione iniziale del rettangolo che racchiude la stringa.
nWidth
Specifica la larghezza, espressa in unità logiche, del rettangolo che racchiude la stringa. Se nWidth è 0, GrayString calcola la larghezza dell'area, presupponendo lpData che sia un puntatore alla stringa.
nHeight
Specifica l'altezza (in unità logiche) del rettangolo che racchiude la stringa. Se nHeight è 0, GrayString calcola l'altezza dell'area, presupponendo lpData che sia un puntatore alla stringa.
Return Value
Diverso da zero se la stringa viene disegnata o 0 se la funzione o la funzione di output fornita dall'applicazione ha restituito 0 o se la memoria non è sufficiente per creare una bitmap di memoria per la TextOut riduzione.
Remarks
La funzione suddivide il testo indipendentemente dal pennello e dallo sfondo selezionati. La GrayString funzione membro utilizza il tipo di carattere attualmente selezionato. Prima di usare questa funzione, è necessario selezionare la MM_TEXT modalità di mapping.
Un'applicazione può disegnare stringhe in grigio (grigio) nei dispositivi che supportano un colore grigio a tinta unita senza chiamare la GrayString funzione membro. Il colore del sistema è il colore COLOR_GRAYTEXT di sistema a tinta unita utilizzato per disegnare testo disabilitato. L'applicazione può chiamare la GetSysColor funzione Windows per recuperare il valore del colore di COLOR_GRAYTEXT. Se il colore è diverso da 0 (nero), l'applicazione può chiamare la SetTextColor funzione membro per impostare il colore del testo sul valore del colore e quindi disegnare direttamente la stringa. Se il colore recuperato è nero, l'applicazione deve chiamare GrayString il testo dim (grigio).
Se lpfnOutput è NULL, GDI usa la funzione Windows TextOut e lpData si presuppone che sia un puntatore di lontano al carattere da restituire. Se i caratteri da restituire non possono essere gestiti dalla TextOut funzione membro , ad esempio la stringa viene archiviata come bitmap, l'applicazione deve fornire la propria funzione di output.
Tutte le funzioni di callback devono intercettare le eccezioni di Microsoft Foundation prima di tornare a Windows, perché le eccezioni non possono essere generate attraverso i limiti di callback. Per altre informazioni sulle eccezioni, vedere l'articolo Eccezioni.
La funzione di callback passata a GrayString deve usare la convenzione di __stdcall chiamata e deve essere esportata con __declspec.
Quando il framework è in modalità di anteprima, una chiamata alla GrayString funzione membro viene convertita in una TextOut chiamata e la funzione di callback non viene chiamata.
CDC::HIMETRICtoDP
Usare questa funzione quando si converte HIMETRIC le dimensioni da OLE a pixel.
void HIMETRICtoDP(LPSIZE lpSize) const;
Parameters
lpSize
Punta a una struttura o SIZE a un CSize oggetto .
Remarks
Se la modalità di mapping dell'oggetto contesto di dispositivo è MM_LOENGLISH, MM_HIENGLISHMM_LOMETRIC o MM_HIMETRIC, la conversione è basata sul numero di pixel nel pollice fisico. Se la modalità di mapping è una delle altre modalità non vincolate ,ad esempio MM_TEXT, la conversione è basata sul numero di pixel nel pollice logico.
CDC::HIMETRICtoLP
Chiamare questa funzione per convertire HIMETRIC le unità in unità logiche.
void HIMETRICtoLP(LPSIZE lpSize) const;
Parameters
lpSize
Punta a una struttura o SIZE a un CSize oggetto .
Remarks
Usare questa funzione quando si ottengono HIMETRIC dimensioni da OLE e si desidera convertirle nella modalità di mapping naturale dell'applicazione.
La conversione viene eseguita convertendo prima le HIMETRIC unità in pixel e quindi convertendo queste unità in unità logiche usando le unità di mapping correnti del contesto di dispositivo. Si noti che gli extent della finestra e del riquadro di visualizzazione del dispositivo influiranno sul risultato.
CDC::IntersectClipRect
Crea una nuova area di ritaglio formando l'intersezione dell'area corrente e il rettangolo specificato da x1, y1x2, e y2.
int IntersectClipRect(
int x1,
int y1,
int x2,
int y2);
int IntersectClipRect(LPCRECT lpRect);
Parameters
x1
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo.
y1
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo.
x2
Specifica la coordinata x logica dell'angolo inferiore destro del rettangolo.
y2
Specifica la coordinata y logica dell'angolo inferiore destro del rettangolo.
lpRect
Specifica il rettangolo. È possibile passare un CRect oggetto o un puntatore a una RECT struttura per questo parametro.
Return Value
Tipo della nuova area di ritaglio. Può essere uno dei valori seguenti:
COMPLEXREGIONLa nuova area di ritaglio ha bordi sovrapposti.ERRORIl contesto del dispositivo non è valido.NULLREGIONLa nuova area di ritaglio è vuota.SIMPLEREGIONLa nuova area di ritaglio non presenta bordi sovrapposti.
Remarks
GDI ritaglia tutto l'output successivo per rientrare all'interno del nuovo limite. La larghezza e l'altezza non devono superare 32.767.
CDC::InvertRect
Inverte il contenuto del rettangolo specificato.
void InvertRect(LPCRECT lpRect);
Parameters
lpRect
Punta a un RECT oggetto contenente le coordinate logiche del rettangolo da invertire. È anche possibile passare un CRect oggetto per questo parametro.
Remarks
L'inversione è un'operazione NOT logica e capovolge i bit di ogni pixel. Nei display monocromatici, la funzione rende bianchi i pixel neri e i pixel neri. Nei display a colori, l'inversione dipende dalla modalità di generazione dei colori per la visualizzazione. La chiamata InvertRect due volte con lo stesso rettangolo ripristina la visualizzazione ai colori precedenti.
Se il rettangolo è vuoto, non viene disegnato nulla.
Example
void CDCView::DoInvertRect(CDC *pDC)
{
// invert rect from 20,20 to 50,50
CRect rect(20, 20, 50, 50);
pDC->InvertRect(rect);
// inverting again restores to normal
::Sleep(1000);
pDC->InvertRect(rect);
}
CDC::InvertRgn
Inverte i colori nell'area specificata da pRgn.
BOOL InvertRgn(CRgn* pRgn);
Parameters
pRgn
Identifica l'area da invertire. Le coordinate per l'area vengono specificate in unità logiche.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Nei display monocromatici, la funzione rende bianchi i pixel neri e i pixel neri. Nei display a colori, l'inversione dipende dalla modalità di generazione dei colori per la visualizzazione.
CDC::IsPrinting
Determina se il contesto del dispositivo viene utilizzato per la stampa.
BOOL IsPrinting() const;
Return Value
Diverso da zero se l'oggetto CDC è un controller di dominio della stampante; in caso contrario, 0.
CDC::LineTo
Disegna una linea dalla posizione corrente fino a , ma non include, il punto specificato da x e y (o point).
BOOL LineTo(
int x,
int y);
BOOL LineTo(POINT point);
Parameters
x
Specifica la coordinata x logica dell'endpoint per la riga.
y
Specifica la coordinata y logica dell'endpoint per la linea.
point
Specifica l'endpoint per la riga. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Diverso da zero se la linea viene disegnata; in caso contrario, 0.
Remarks
La linea viene disegnata con la penna selezionata. La posizione corrente è impostata su xo y su point.
Example
Vedere l'esempio per CRect::CenterPoint.
CDC::LPtoDP
Converte le unità logiche in unità dispositivo.
void LPtoDP(
LPPOINT lpPoints,
int nCount = 1) const;
void LPtoDP(LPRECT lpRect) const;
void LPtoDP(LPSIZE lpSize) const;
Parameters
lpPoints
Punta a una matrice di punti. Ogni punto della matrice è una POINT struttura o un CPoint oggetto .
nCount
Numero di punti nella matrice.
lpRect
Punta a una RECT struttura o a un CRect oggetto . Questo parametro viene usato per il caso comune di mapping di un rettangolo da unità logiche a di dispositivo.
lpSize
Punta a una SIZE struttura o a un CSize oggetto .
Remarks
La funzione esegue il mapping delle coordinate di ogni punto, o dimensioni di una dimensione, dal sistema di coordinate logico GDI a un sistema di coordinate del dispositivo. La conversione dipende dalla modalità di mapping corrente e dalle impostazioni delle origini e degli extent della finestra e del riquadro di visualizzazione del dispositivo.
Le coordinate x e y dei punti sono interi con segno a 2 byte nell'intervallo da -32.768 a 32.767. Nei casi in cui la modalità di mapping genera valori superiori a questi limiti, il sistema imposta i valori rispettivamente su -32.768 e 32.767.
CDC::LPtoHIMETRIC
Chiamare questa funzione per convertire le unità logiche in HIMETRIC unità.
void LPtoHIMETRIC(LPSIZE lpSize) const;
Parameters
lpSize
Punta a una SIZE struttura o a un CSize oggetto .
Remarks
Usare questa funzione quando si assegnano HIMETRIC dimensioni a OLE, la conversione dalla modalità di mapping naturale dell'applicazione. Gli extent della finestra e del viewport del dispositivo influiranno sul risultato.
La conversione viene eseguita convertendo prima le unità logiche in pixel usando le unità di mapping correnti del contesto di dispositivo e quindi convertendo queste unità in HIMETRIC unità.
CDC::m_hAttribDC
Contesto del dispositivo dell'attributo per questo CDC oggetto.
HDC m_hAttribDC;
Remarks
Per impostazione predefinita, questo contesto di dispositivo è uguale a m_hDC. In generale, CDC le chiamate GDI che richiedono informazioni dal contesto di dispositivo vengono indirizzate a m_hAttribDC. Per altre informazioni sull'uso di questi due contesti di dispositivo, vedere la CDC descrizione della classe.
CDC::m_hDC
Contesto del dispositivo di output per questo CDC oggetto.
HDC m_hDC;
Remarks
Per impostazione predefinita, m_hDC è uguale a m_hAttribDC, l'altro contesto di dispositivo di cui è stato eseguito il wrapping da CDC. In generale, CDC le chiamate GDI che creano l'output passano al contesto di m_hDC dispositivo. È possibile inizializzare m_hDC e m_hAttribDC puntare a dispositivi diversi. Per altre informazioni sull'uso di questi due contesti di dispositivo, vedere la CDC descrizione della classe.
CDC::MaskBlt
Combina i dati di colore per le bitmap di origine e di destinazione usando l'operazione di maschera e raster specificata.
BOOL MaskBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
CBitmap& maskBitmap,
int xMask,
int yMask,
DWORD dwRop);
Parameters
x
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo di destinazione.
y
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo di destinazione.
nWidth
Specifica la larghezza, in unità logiche, del rettangolo di destinazione e della bitmap di origine.
nHeight
Specifica l'altezza, in unità logiche, del rettangolo di destinazione e della bitmap di origine.
pSrcDC
Identifica il contesto del dispositivo da cui copiare la bitmap. Deve essere zero se il dwRop parametro specifica un'operazione raster che non include un'origine.
xSrc
Specifica la coordinata x logica dell'angolo superiore sinistro della bitmap di origine.
ySrc
Specifica la coordinata y logica dell'angolo superiore sinistro della bitmap di origine.
maskBitmap
Identifica la bitmap della maschera monocromatica combinata con la bitmap del colore nel contesto del dispositivo di origine.
xMask
Specifica l'offset orizzontale dei pixel per la bitmap mask specificata dal maskBitmap parametro .
yMask
Specifica l'offset di pixel verticale per la bitmap mask specificata dal maskBitmap parametro .
dwRop
Specifica sia i codici di operazione raster in primo piano che in background, che la funzione usa per controllare la combinazione di dati di origine e di destinazione. Il codice dell'operazione raster in background viene archiviato nel byte elevato della parola alta di questo valore; il codice dell'operazione raster in primo piano viene archiviato nel byte basso della parola alta di questo valore; la parola bassa di questo valore viene ignorata e deve essere zero. La macro MAKEROP4 crea tali combinazioni di codici di operazione raster in primo piano e in background. Vedere la sezione Osservazioni per una discussione in primo piano e in background nel contesto di questa funzione. Per un elenco di codici di operazione raster comuni, vedere la BitBlt funzione membro.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il valore 1 nella maschera specificata da maskBitmap indica che il codice dell'operazione raster in primo piano specificato da dwRop deve essere applicato in tale posizione. Il valore 0 nella maschera indica che il codice dell'operazione raster in background specificato da dwRop deve essere applicato in tale posizione. Se le operazioni raster richiedono un'origine, il rettangolo della maschera deve coprire il rettangolo di origine. In caso contrario, la funzione ha esito negativo. Se le operazioni raster non richiedono un'origine, il rettangolo della maschera deve coprire il rettangolo di destinazione. In caso contrario, la funzione ha esito negativo.
Se una trasformazione rotazione o shear è attiva per il contesto del dispositivo di origine quando viene chiamata questa funzione, si verifica un errore. Sono tuttavia consentiti altri tipi di trasformazioni.
Se i formati di colore delle bitmap di origine, motivo e destinazione differiscono, questa funzione converte il modello o il formato di origine o entrambi in modo che corrispondano al formato di destinazione. Se la bitmap mask non è una bitmap monocromatica, si verifica un errore. Quando viene registrato un metafile avanzato, si verifica un errore (e la funzione restituisce 0) se il contesto del dispositivo di origine identifica un contesto di dispositivo metafile avanzato. Non tutti i dispositivi supportano MaskBlt. Un'applicazione deve chiamare GetDeviceCaps per determinare se un dispositivo supporta questa funzione. Se non viene fornita alcuna bitmap mask, questa funzione si comporta esattamente come BitBlt, usando il codice dell'operazione raster in primo piano. Gli offset di pixel nella mappa bitmap mask vengono mappati al punto (0,0) nella bitmap del contesto di dispositivo di origine. Questo è utile per i casi in cui una bitmap mask contiene un set di maschere; un'applicazione può applicare facilmente uno di essi a un'attività mask-blitting modificando gli offset dei pixel e le dimensioni del rettangolo inviati a MaskBlt.
CDC::ModifyWorldTransform
Modifica la trasformazione globale per un contesto di dispositivo usando la modalità specificata.
BOOL ModifyWorldTransform(
const XFORM& rXform,
DWORD iMode);
Parameters
rXform
Riferimento a una XFORM struttura usata per modificare la trasformazione globale per il contesto di dispositivo specificato.
iMode
Specifica il modo in cui i dati della trasformazione modificano la trasformazione globale corrente. Per un elenco dei valori che questo parametro può accettare, vedere ModifyWorldTransform.
Return Value
Restituisce un valore diverso da zero in caso di esito positivo.
Restituisce 0 in caso di errore.
Per ottenere informazioni estese sull'errore, chiamare GetLastError.
Remarks
Questo metodo esegue il wrapping della funzione ModifyWorldTransformGDI di Windows.
CDC::MoveTo
Sposta la posizione corrente nel punto specificato da x e y (o da point).
CPoint MoveTo(
int x,
int y);
CPoint MoveTo(POINT point);
Parameters
x
Specifica la coordinata x logica della nuova posizione.
y
Specifica la coordinata y logica della nuova posizione.
point
Specifica la nuova posizione. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Coordinate x e y della posizione precedente come CPoint oggetto .
Example
Vedere l'esempio per CRect::CenterPoint.
CDC::OffsetClipRgn
Sposta l'area di ritaglio del contesto di dispositivo in base agli offset specificati.
int OffsetClipRgn(
int x,
int y);
int OffsetClipRgn(SIZE size);
Parameters
x
Specifica il numero di unità logiche da spostare a sinistra o a destra.
y
Specifica il numero di unità logiche da spostare verso l'alto o verso il basso.
size
Specifica l'importo da sfalsare.
Return Value
Tipo della nuova area. Può essere uno dei valori seguenti:
COMPLEXREGIONL'area di ritaglio presenta bordi sovrapposti.ERRORIl contesto del dispositivo non è valido.NULLREGIONL'area di ritaglio è vuota.SIMPLEREGIONL'area di ritaglio non ha bordi sovrapposti.
Remarks
La funzione sposta le unità di area x lungo l'asse x e y le unità lungo l'asse y.
CDC::OffsetViewportOrg
Modifica le coordinate dell'origine del riquadro di visualizzazione rispetto alle coordinate dell'origine del riquadro di visualizzazione corrente.
virtual CPoint OffsetViewportOrg(
int nWidth,
int nHeight);
Parameters
nWidth
Specifica il numero di unità dispositivo da aggiungere alla coordinata x dell'origine corrente.
nHeight
Specifica il numero di unità dispositivo da aggiungere alla coordinata y dell'origine corrente.
Return Value
Origine del riquadro di visualizzazione precedente (nelle coordinate del dispositivo) come CPoint oggetto .
CDC::OffsetWindowOrg
Modifica le coordinate dell'origine della finestra rispetto alle coordinate dell'origine della finestra corrente.
CPoint OffsetWindowOrg(
int nWidth,
int nHeight);
Parameters
nWidth
Specifica il numero di unità logiche da aggiungere alla coordinata x dell'origine corrente.
nHeight
Specifica il numero di unità logiche da aggiungere alla coordinata y dell'origine corrente.
Return Value
Origine della finestra precedente (in coordinate logiche) come CPoint oggetto .
CDC::operator HDC
Usare questo operatore per recuperare l'handle del contesto di dispositivo dell'oggetto CDC .
operator HDC() const;
Return Value
In caso di esito positivo, l'handle dell'oggetto contesto di dispositivo; in caso contrario, NULL.
Remarks
È possibile usare l'handle per chiamare direttamente le API di Windows.
CDC::PaintRgn
Riempie l'area specificata pRgn utilizzando il pennello corrente.
BOOL PaintRgn(CRgn* pRgn);
Parameters
pRgn
Identifica l'area da riempire. Le coordinate per l'area specificata vengono specificate in unità logiche.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
CDC::PatBlt
Crea un modello di bit nel dispositivo.
BOOL PatBlt(
int x,
int y,
int nWidth,
int nHeight,
DWORD dwRop);
Parameters
x
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo che deve ricevere il criterio.
y
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo che deve ricevere il criterio.
nWidth
Specifica la larghezza(in unità logiche) del rettangolo che deve ricevere il criterio.
nHeight
Specifica l'altezza (in unità logiche) del rettangolo che deve ricevere il modello.
dwRop
Specifica il codice dell'operazione raster. I codici di operazione raster definiscono il modo in cui GDI combina i colori nelle operazioni di output che coinvolgono un pennello corrente, una possibile bitmap di origine e una bitmap di destinazione. Questo parametro può avere uno dei valori seguenti:
PATCOPYCopia il modello nella bitmap di destinazione.PATINVERTCombina la bitmap di destinazione con il modello usando l'operatore XOR booleano (^).DSTINVERTInverte la bitmap di destinazione.BLACKNESSTrasforma tutto l'output nero.WHITENESSAttiva tutto il bianco di output.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il motivo è una combinazione del pennello selezionato e del motivo già presente nel dispositivo. Il codice dell'operazione raster specificata da dwRop definisce la modalità di combinazione dei modelli. Le operazioni raster elencate per questa funzione sono un subset limitato dei codici raster-operation ternari completi 256; in particolare, non è possibile usare un codice di operazione raster che fa riferimento a un'origine.
Non tutti i contesti di dispositivo supportano la PatBlt funzione. Per determinare se un contesto di dispositivo supporta PatBlt, chiamare la GetDeviceCaps funzione membro con l'indice RASTERCAPS e controllare il valore restituito per il RC_BITBLT flag.
CDC::Pie
Disegna un arco a torta a forma di torta disegnando un arco ellittico il cui centro e due endpoint sono uniti da linee.
BOOL Pie(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4);
BOOL Pie(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd);
Parameters
x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).
y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).
x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).
y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).
x3
Specifica la coordinata x del punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
y3
Specifica la coordinata y del punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
x4
Specifica la coordinata x dell'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
y4
Specifica la coordinata y dell'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.
lpRect
Specifica il rettangolo di delimitazione. È possibile passare un CRect oggetto o un puntatore a una RECT struttura per questo parametro.
ptStart
Specifica il punto iniziale dell'arco. Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
ptEnd
Specifica l'endpoint dell'arco. Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il centro dell'arco è il centro del rettangolo di delimitazione specificato da x1, y1x2, e y2 (o da lpRect). I punti iniziali e finali dell'arco vengono specificati da x3, y3, x4e y4 (o da ptStart e ptEnd).
L'arco viene disegnato con la penna selezionata, spostandosi in senso antiorario. Altre due linee vengono disegnate da ogni endpoint al centro dell'arco. L'area a torta a forma di torta viene riempita con il pennello corrente. Se x3 è uguale x4 a e y3 uguale y4a , il risultato è un'ellisse con una singola riga dal centro dell'ellisse al punto (x3, y3) o (x4, y4).
La figura disegnata da questa funzione si estende fino a ma non include le coordinate destra e inferiore. Ciò significa che l'altezza della figura è y2 - y1 e la larghezza della figura è x2 - x1. Sia la larghezza che l'altezza del rettangolo di delimitazione devono essere maggiori di 2 unità e inferiori a 32.767 unità.
Example
void CDCView::DrawPie(CDC *pDC)
{
// Fill the client area with a simple pie chart. A
// big blue slice covers 75% of the pie, from
// 6 o'clock to 3 o'clock. This portion is filled
// with blue and has a blue edge. The remaining 25%
// is filled with a red, diagonal hatch and has
// a red edge.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens and similar brushes.
CPen penBlue, penRed;
CBrush brushBlue, brushRed;
CBrush *pOldBrush;
CPen *pOldPen;
brushBlue.CreateSolidBrush(RGB(0, 0, 255));
brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen with a solid blue fill.
pOldPen = pDC->SelectObject(&penBlue);
pOldBrush = pDC->SelectObject(&brushBlue);
pDC->Pie(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw the remaining quarter slice from 6 o'clock
// to 3 o'clock, counterclockwise, in a red pen with
// the hatched brush.
pDC->SelectObject(&penRed);
pDC->SelectObject(&brushRed);
// Same parameters, but reverse start and end points.
pDC->Pie(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
CDC::PlayMetaFile
Riproduce il contenuto del metafile specificato nel contesto di dispositivo.
BOOL PlayMetaFile(HMETAFILE hMF);
BOOL PlayMetaFile(
HENHMETAFILE hEnhMetaFile,
LPCRECT lpBounds);
Parameters
hMF
Identifica il metafile da riprodurre.
hEnhMetaFile
Identifica il metafile avanzato.
lpBounds
Punta a una RECT struttura o a un CRect oggetto che contiene le coordinate del rettangolo di delimitazione utilizzato per visualizzare l'immagine. Le coordinate vengono specificate in unità logiche.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il metafile può essere riprodotto un numero qualsiasi di volte.
La seconda versione di PlayMetaFile visualizza l'immagine archiviata nel metafile in formato avanzato specificato. Quando un'applicazione chiama la seconda versione di PlayMetaFile, Windows usa la cornice dell'immagine nell'intestazione metafile avanzata per eseguire il mapping dell'immagine sul rettangolo a cui punta il parametro lpBounds . (Questa immagine può essere sheared o ruotata impostando la trasformazione globale nel dispositivo di output prima di chiamare PlayMetaFile.) I punti lungo i bordi del rettangolo sono inclusi nell'immagine. Un'immagine metafile avanzata può essere ritagliata definendo l'area di ritaglio nel dispositivo di output prima di riprodurre il metafile avanzato.
Se un metafile avanzato contiene una tavolozza facoltativa, un'applicazione può ottenere colori coerenti impostando una tavolozza dei colori nel dispositivo di output prima di chiamare la seconda versione di PlayMetaFile. Per recuperare la tavolozza facoltativa, usare la GetEnhMetaFilePaletteEntries funzione Windows. Un metafile avanzato può essere incorporato in un metafile avanzato appena creato chiamando la seconda versione di e riproducendo il metafile avanzato di PlayMetaFile origine nel contesto di dispositivo per il nuovo metafile avanzato.
Gli stati del contesto del dispositivo di output vengono mantenuti da questa funzione. Qualsiasi oggetto creato ma non eliminato nel metafile avanzato viene eliminato da questa funzione. Per arrestare questa funzione, un'applicazione può chiamare la CancelDC funzione Windows da un altro thread per terminare l'operazione. In questo caso, la funzione restituisce zero.
CDC::PlgBlt
Esegue un trasferimento bit-block dei bit dei dati di colore dal rettangolo specificato nel contesto del dispositivo di origine al parallelogramma specificato nel contesto di dispositivo specificato nel contesto di dispositivo specificato.
BOOL PlgBlt(
LPPOINT lpPoint,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nWidth,
int nHeight,
CBitmap& maskBitmap,
int xMask,
int yMask);
Parameters
lpPoint
Punta a una matrice di tre punti nello spazio logico che identifica tre angoli del parallelogramma di destinazione. L'angolo superiore sinistro del rettangolo di origine viene mappato al primo punto di questa matrice, all'angolo superiore destro del secondo punto della matrice e all'angolo inferiore sinistro del terzo punto. L'angolo inferiore destro del rettangolo di origine viene mappato al quarto punto implicito nel parallelogramma.
pSrcDC
Identifica il contesto del dispositivo di origine.
xSrc
Specifica la coordinata x, in unità logiche, dell'angolo superiore sinistro del rettangolo di origine.
ySrc
Specifica la coordinata y, in unità logiche, dell'angolo superiore sinistro del rettangolo di origine.
nWidth
Specifica la larghezza, in unità logiche, del rettangolo di origine.
nHeight
Specifica l'altezza, in unità logiche, del rettangolo di origine.
maskBitmap
Identifica una bitmap monocromatica facoltativa usata per mascherare i colori del rettangolo di origine.
xMask
Specifica la coordinata x dell'angolo superiore sinistro della bitmap monocromatica.
yMask
Specifica la coordinata y dell'angolo superiore sinistro della bitmap monocromatica.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Se l'handle di maschera di bit specificato identifica una bitmap monocromatica valida, la funzione usa questa bitmap per mascherare i bit di dati colore dal rettangolo di origine.
Il quarto vertice del parallelogramma (D) è definito trattando i primi tre punti (A, B e C) come vettori e calcolando D = B + C - A.
Se la maschera di bit esiste, il valore 1 nella maschera indica che il colore del pixel di origine deve essere copiato nella destinazione. Un valore pari a 0 nella maschera indica che il colore del pixel di destinazione non deve essere modificato.
Se il rettangolo della maschera è inferiore ai rettangoli di origine e di destinazione, la funzione replica il modello mask.
Le trasformazioni di ridimensionamento, traduzione e reflection sono consentite nel contesto del dispositivo di origine; Tuttavia, le trasformazioni di rotazione e di taglio non sono. Se la bitmap mask non è una bitmap monocromatica, si verifica un errore. La modalità di estensione per il contesto di dispositivo di destinazione viene usata per determinare come estendere o comprimere i pixel, se necessario. Quando viene registrato un metafile avanzato, si verifica un errore se il contesto del dispositivo di origine identifica un contesto di dispositivo metafile avanzato.
Le coordinate di destinazione vengono trasformate in base al contesto del dispositivo di destinazione; le coordinate di origine vengono trasformate in base al contesto del dispositivo di origine. Se la trasformazione di origine ha una rotazione o un taglio, viene restituito un errore. Se i rettangoli di destinazione e di origine non hanno lo stesso formato di colore, PlgBlt converte il rettangolo di origine in modo che corrisponda al rettangolo di destinazione. Non tutti i dispositivi supportano PlgBlt. Per altre informazioni, vedere la descrizione della RC_BITBLT funzionalità raster nella CDC::GetDeviceCaps funzione membro.
Se i contesti di dispositivo di origine e di destinazione rappresentano dispositivi incompatibili, PlgBlt restituisce un errore.
CDC::PolyBezier
Disegna una o più spline di Bzier.
BOOL PolyBezier(
const POINT* lpPoints,
int nCount);
Parameters
lpPoints
Punta a una matrice di strutture di POINT dati che contengono gli endpoint e i punti di controllo delle spline.
nCount
Specifica il numero di punti nella lpPoints matrice. Questo valore deve essere uno più di tre volte il numero di spline da disegnare, perché ogni spline di Bzier richiede due punti di controllo e un endpoint e la spline iniziale richiede un altro punto iniziale.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Questa funzione disegna spline Bzier cubiche usando gli endpoint e i punti di controllo specificati dal lpPoints parametro . La prima spline viene disegnata dal primo punto al quarto punto utilizzando il secondo e il terzo punto come punti di controllo. Ogni spline successiva nella sequenza richiede esattamente tre punti: il punto finale della spline precedente viene usato come punto iniziale, i due punti successivi nella sequenza sono punti di controllo e il terzo è il punto finale.
La posizione corrente non viene usata o aggiornata dalla PolyBezier funzione. La figura non viene riempita. Questa funzione disegna linee utilizzando la penna corrente.
CDC::PolyBezierTo
Disegna una o più spline di Bzier.
BOOL PolyBezierTo(
const POINT* lpPoints,
int nCount);
Parameters
lpPoints
Punta a una matrice di strutture di POINT dati che contiene gli endpoint e i punti di controllo.
nCount
Specifica il numero di punti nella lpPoints matrice. Questo valore deve essere tre volte il numero di spline da disegnare, perché ogni spline di Bzier richiede due punti di controllo e un punto finale.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Questa funzione disegna spline Bzier cubiche usando i punti di controllo specificati dal lpPoints parametro . La prima spline viene disegnata dalla posizione corrente al terzo punto utilizzando i primi due punti come punti di controllo. Per ogni spline successiva, la funzione richiede esattamente tre punti e usa il punto finale della spline precedente come punto iniziale per il successivo.
PolyBezierTo sposta la posizione corrente al punto finale dell'ultima spline di Bzier. La figura non viene riempita. Questa funzione disegna linee utilizzando la penna corrente.
Example
Vedere l'esempio per CDC::BeginPath.
CDC::PolyDraw
Disegna un set di segmenti di linea e spline di Bzier.
BOOL PolyDraw(
const POINT* lpPoints,
const BYTE* lpTypes,
int nCount);
Parameters
lpPoints
Punta a una matrice di strutture di dati che contiene gli endpoint per ogni segmento di POINT linea e gli endpoint e i punti di controllo per ogni spline di Bzier.
lpTypes
Punta a una matrice che specifica la modalità di utilizzo di ogni punto nella lpPoints matrice. I valori possono essere uno dei seguenti:
PT_MOVETOSpecifica che questo punto inizia una figura non contigua. Questo punto diventa la nuova posizione corrente.PT_LINETOSpecifica che una linea deve essere disegnata dalla posizione corrente a questo punto, che diventa quindi la nuova posizione corrente.PT_BEZIERTOSpecifica che questo punto è un punto di controllo o un punto finale per una spline di Bzier.
PT_BEZIERTO i tipi si verificano sempre in set di tre. La posizione corrente definisce il punto iniziale per la spline di Bzier. I primi due PT_BEZIERTO punti sono i punti di controllo e il terzo PT_BEZIERTO punto è il punto finale. Il punto finale diventa la nuova posizione corrente. Se non sono presenti tre punti consecutivi PT_BEZIERTO , viene restituito un errore.
Un PT_LINETO tipo o PT_BEZIERTO può essere combinato con la costante seguente utilizzando l'operatore bit per bit OR per indicare che il punto corrispondente è l'ultimo punto di una figura e la figura è chiusa:
PT_CLOSEFIGURESpecifica che la figura viene chiusa automaticamente dopo il completamento delPT_LINETOtipo oPT_BEZIERTOper questo punto. Una linea viene disegnata da questo punto al punto oPT_MOVETOpiù recenteMoveTo.Questo flag viene combinato con il
PT_LINETOtipo per una riga o con ilPT_BEZIERTOtipo di punto finale per una spline Bzier, usando l'operatore OR bit per bit. La posizione corrente è impostata sul punto finale della riga di chiusura.
nCount
Specifica il numero totale di punti nella lpPoints matrice, uguale al numero di byte nella lpTypes matrice.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Questa funzione può essere usata per disegnare figure non contigue al posto di chiamate consecutive alle CDC::MoveTofunzioni membro , CDC::LineToe CDC::PolyBezierTo . Le linee e le spline vengono disegnate usando la penna corrente e le figure non vengono riempite. Se è stato avviato un percorso attivo chiamando la CDC::BeginPath funzione membro, PolyDraw aggiunge al percorso. I punti contenuti nella lpPoints matrice e in lpTypes indicano se ogni punto fa parte di un'operazione CDC::MoveTo, CDC::LineToo CDC::BezierTo . È anche possibile chiudere le figure. Questa funzione aggiorna la posizione corrente.
Example
Vedere l'esempio per CDC::BeginPath.
CDC::Polygon
Disegna un poligono costituito da due o più punti (vertici) collegati da linee, utilizzando la penna corrente.
BOOL Polygon(
LPPOINT lpPoints,
int nCount);
Parameters
lpPoints
Punta a una matrice di punti che specifica i vertici del poligono. Ogni punto della matrice è una POINT struttura o un CPoint oggetto .
nCount
Specifica il numero di vertici nella matrice.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il sistema chiude automaticamente il poligono, se necessario, disegnando una linea dall'ultimo vertice al primo.
La modalità di riempimento poligono corrente può essere recuperata o impostata usando le GetPolyFillMode funzioni membro e SetPolyFillMode .
Example
void CDCView::DrawPolygon(CDC *pDC)
{
// find the client area
CRect rect;
GetClientRect(rect);
// draw with a thick blue pen
CPen penBlue(PS_SOLID, 5, RGB(0, 0, 255));
CPen *pOldPen = pDC->SelectObject(&penBlue);
// and a solid red brush
CBrush brushRed(RGB(255, 0, 0));
CBrush *pOldBrush = pDC->SelectObject(&brushRed);
// Find the midpoints of the top, right, left, and bottom
// of the client area. They will be the vertices of our polygon.
CPoint pts[4];
pts[0].x = rect.left + rect.Width() / 2;
pts[0].y = rect.top;
pts[1].x = rect.right;
pts[1].y = rect.top + rect.Height() / 2;
pts[2].x = pts[0].x;
pts[2].y = rect.bottom;
pts[3].x = rect.left;
pts[3].y = pts[1].y;
// Calling Polygon() on that array will draw three lines
// between the points, as well as an additional line to
// close the shape--from the last point to the first point
// we specified.
pDC->Polygon(pts, 4);
// Put back the old objects.
pDC->SelectObject(pOldPen);
pDC->SelectObject(pOldBrush);
}
CDC::Polyline
Disegna un set di segmenti di linea che collegano i punti specificati da lpPoints.
BOOL Polyline(
LPPOINT lpPoints,
int nCount);
Parameters
lpPoints
Punta a una matrice di POINT strutture o CPoint oggetti da connettere.
nCount
Specifica il numero di punti nella matrice. Questo valore deve essere almeno 2.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Le linee vengono disegnate dal primo punto attraverso i punti successivi utilizzando la penna corrente. A differenza della LineTo funzione membro, la Polyline funzione non usa o aggiorna la posizione corrente.
Per altre informazioni, vedere PolyLine in Windows SDK.
CDC::PolylineTo
Disegna una o più linee rette.
BOOL PolylineTo(
const POINT* lpPoints,
int nCount);
Parameters
lpPoints
Punta a una matrice di strutture di POINT dati che contiene i vertici della linea.
nCount
Specifica il numero di punti nella matrice.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Una linea viene disegnata dalla posizione corrente al primo punto specificato dal lpPoints parametro utilizzando la penna corrente. Per ogni riga aggiuntiva, la funzione disegna dal punto finale della riga precedente al punto successivo specificato da lpPoints.
PolylineTo sposta la posizione corrente al punto finale dell'ultima riga. Se i segmenti di linea tracciati da questa funzione formano una figura chiusa, la figura non viene riempita.
CDC::PolyPolygon
Crea due o più poligoni riempiti usando la modalità di riempimento poligono corrente.
BOOL PolyPolygon(
LPPOINT lpPoints,
LPINT lpPolyCounts,
int nCount);
Parameters
lpPoints
Punta a una matrice di POINT strutture o CPoint oggetti che definiscono i vertici dei poligoni.
lpPolyCounts
Punta a una matrice di numeri interi, ognuno dei quali specifica il numero di punti in uno dei poligoni nella lpPoints matrice.
nCount
Numero di voci nella lpPolyCounts matrice. Questo numero specifica il numero di poligoni da disegnare. Questo valore deve essere almeno 2.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
I poligoni possono essere disgiunti o sovrapposti.
Ogni poligono specificato in una chiamata alla PolyPolygon funzione deve essere chiuso. A differenza dei poligoni creati dalla Polygon funzione membro, i poligoni creati da PolyPolygon non vengono chiusi automaticamente.
La funzione crea due o più poligoni. Per creare un singolo poligono, un'applicazione deve usare la Polygon funzione membro.
La modalità di riempimento poligono corrente può essere recuperata o impostata usando le GetPolyFillMode funzioni membro e SetPolyFillMode .
CDC::PolyPolyline
Disegna più serie di segmenti di linea collegati.
BOOL PolyPolyline(
const POINT* lpPoints,
const DWORD* lpPolyPoints,
int nCount);
Parameters
lpPoints
Punta a una matrice di strutture che contiene i vertici delle polilinee. Le polilinee vengono specificate consecutivamente.
lpPolyPoints
Punta a una matrice di variabili che specifica il numero di punti nella lpPoints matrice per il poligono corrispondente. Ogni voce deve essere maggiore o uguale a 2.
nCount
Specifica il numero totale di conteggi nella lpPolyPoints matrice.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
I segmenti di linea vengono disegnati utilizzando la penna corrente. Le cifre formate dai segmenti non vengono riempite. La posizione corrente non viene usata o aggiornata da questa funzione.
CDC::PtVisible
Determina se il punto specificato si trova all'interno dell'area di ritaglio del contesto di dispositivo.
virtual BOOL PtVisible(
int x,
int y) const;
BOOL PtVisible(POINT point) const;
Parameters
x
Specifica la coordinata x logica del punto.
y
Specifica la coordinata y logica del punto.
point
Specifica il punto da archiviare nelle coordinate logiche. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Diverso da zero se il punto specificato si trova all'interno dell'area di ritaglio; in caso contrario, 0.
CDC::QueryAbort
Chiama la funzione di interruzione installata dalla SetAbortProc funzione membro per un'applicazione di stampa e chiede se la stampa deve essere terminata.
BOOL QueryAbort() const;
Return Value
Il valore restituito è diverso da zero se la stampa deve continuare o se non è presente alcuna procedura di interruzione. È 0 se il processo di stampa deve essere terminato. Il valore restituito viene fornito dalla funzione di interruzione.
CDC::RealizePalette
Esegue il mapping delle voci dalla tavolozza logica corrente alla tavolozza del sistema.
UINT RealizePalette();
Return Value
Indica il numero di voci nella tavolozza logica mappate a voci diverse nel riquadro di sistema. Rappresenta il numero di voci mappate da questa funzione per adattarsi alle modifiche apportate alla tavolozza di sistema dall'ultima realizzazione della tavolozza logica.
Remarks
Una tavolozza dei colori logica funge da buffer tra le applicazioni a elevato utilizzo di colori e il sistema, consentendo a un'applicazione di usare il numero di colori necessario senza interferire con i propri colori visualizzati o con i colori visualizzati da altre finestre.
Quando una finestra ha lo stato attivo e chiama RealizePalette, Windows garantisce che la finestra visualizzi tutti i colori richiesti, fino al numero massimo disponibile contemporaneamente sullo schermo. Windows visualizza anche i colori non trovati nella tavolozza della finestra associandoli ai colori disponibili.
Windows corrisponde inoltre ai colori richiesti da finestre inattive che chiamano la funzione il più vicino possibile ai colori disponibili. In questo modo si riducono significativamente le modifiche indesiderate nei colori visualizzati in finestre inattive.
CDC::Rectangle
Disegna un rettangolo utilizzando la penna corrente.
BOOL Rectangle(
int x1,
int y1,
int x2,
int y2);
BOOL Rectangle(LPCRECT lpRect);
Parameters
x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo (in unità logiche).
y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo (in unità logiche).
x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo (in unità logiche).
y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo (in unità logiche).
lpRect
Specifica il rettangolo in unità logiche. È possibile passare un CRect oggetto o un puntatore a una RECT struttura per questo parametro.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
L'interno del rettangolo viene riempito utilizzando il pennello corrente.
Il rettangolo si estende fino a, ma non include le coordinate destra e inferiore. Ciò significa che l'altezza del rettangolo è y2 - y1 e la larghezza del rettangolo è .x2 - x1 Sia la larghezza che l'altezza di un rettangolo devono essere maggiori di 2 unità e inferiori a 32.767 unità.
Example
void CDCView::DrawRectangle(CDC *pDC)
{
// create and select a solid blue brush
CBrush brushBlue(RGB(0, 0, 255));
CBrush *pOldBrush = pDC->SelectObject(&brushBlue);
// create and select a thick, black pen
CPen penBlack;
penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
CPen *pOldPen = pDC->SelectObject(&penBlack);
// get our client rectangle
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels in each direction
rect.DeflateRect(20, 20);
// draw a thick black rectangle filled with blue
pDC->Rectangle(rect);
// put back the old objects
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
CDC::RectVisible
Determina se una parte del rettangolo specificato si trova all'interno dell'area di ritaglio del contesto di visualizzazione.
virtual BOOL RectVisible(LPCRECT lpRect) const;
Parameters
lpRect
Punta a una RECT struttura o a un CRect oggetto che contiene le coordinate logiche del rettangolo specificato.
Return Value
Diverso da zero se una parte del rettangolo specificato si trova all'interno dell'area di ritaglio; in caso contrario, 0.
CDC::ReleaseAttribDC
Chiamare questa funzione membro per impostare su m_hAttribDC NULL.
virtual void ReleaseAttribDC();
Remarks
Ciò non causa Detach un problema. Solo il contesto del dispositivo di output è collegato all'oggetto CDC e può essere scollegato solo.
CDC::ReleaseOutputDC
Chiamare questa funzione membro per impostare il m_hDC membro su NULL.
virtual void ReleaseOutputDC();
Remarks
Questa funzione membro non può essere chiamata quando il contesto del dispositivo di output è collegato all'oggetto CDC . Usare la Detach funzione membro per scollegare il contesto del dispositivo di output.
CDC::ResetDC
Chiamare questa funzione membro per aggiornare il contesto di dispositivo di cui è stato eseguito il wrapping dall'oggetto CDC .
BOOL ResetDC(const DEVMODE* lpDevMode);
Parameters
lpDevMode
Puntatore a una struttura di Windows DEVMODE .
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il contesto del dispositivo viene aggiornato dalle informazioni specificate nella struttura di Windows DEVMODE . Questa funzione membro reimposta solo il contesto del dispositivo dell'attributo.
Un'applicazione userà in genere la ResetDC funzione membro quando una finestra elabora un WM_DEVMODECHANGE messaggio. È anche possibile utilizzare questa funzione membro per modificare l'orientamento della carta o i contenitori di carta durante la stampa di un documento.
Non è possibile usare questa funzione membro per modificare il nome del driver, il nome del dispositivo o la porta di output. Quando l'utente modifica la connessione alla porta o il nome del dispositivo, è necessario eliminare il contesto di dispositivo originale e creare un nuovo contesto di dispositivo con le nuove informazioni.
Prima di chiamare questa funzione membro, è necessario assicurarsi che tutti gli oggetti (diversi dagli oggetti stock) selezionati nel contesto di dispositivo siano stati selezionati.
CDC::RestoreDC
Ripristina il contesto del dispositivo allo stato precedente identificato da nSavedDC.
virtual BOOL RestoreDC(int nSavedDC);
Parameters
nSavedDC
Specifica il contesto di dispositivo da ripristinare. Può essere un valore restituito da una chiamata di funzione precedente SaveDC . Se nSavedDC è -1, viene ripristinato il contesto di dispositivo salvato più di recente.
Return Value
Diverso da zero se il contesto specificato è stato ripristinato; in caso contrario, 0.
Remarks
RestoreDC ripristina il contesto del dispositivo rimuovendo le informazioni sullo stato da uno stack creato da chiamate precedenti alla SaveDC funzione membro.
Lo stack può contenere le informazioni sullo stato per diversi contesti di dispositivo. Se il contesto specificato da nSavedDC non si trova all'inizio dello stack, RestoreDC elimina tutte le informazioni sullo stato tra il contesto di dispositivo specificato da nSavedDC e la parte superiore dello stack. Le informazioni eliminate vengono perse.
CDC::RoundRect
Disegna un rettangolo con angoli arrotondati utilizzando la penna corrente.
BOOL RoundRect(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3);
BOOL RoundRect(
LPCRECT lpRect,
POINT point);
Parameters
x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo (in unità logiche).
y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo (in unità logiche).
x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo (in unità logiche).
y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo (in unità logiche).
x3
Specifica la larghezza dell'ellisse utilizzata per disegnare gli angoli arrotondati (in unità logiche).
y3
Specifica l'altezza dell'ellisse utilizzata per disegnare gli angoli arrotondati (in unità logiche).
lpRect
Specifica il rettangolo di delimitazione in unità logiche. È possibile passare un CRect oggetto o un puntatore a una RECT struttura per questo parametro.
point
La coordinata x di point specifica la larghezza dell'ellisse per disegnare gli angoli arrotondati (in unità logiche). La coordinata y di point specifica l'altezza dell'ellisse per disegnare gli angoli arrotondati (in unità logiche). È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
L'interno del rettangolo viene riempito utilizzando il pennello corrente.
La figura che questa funzione disegna si estende fino a ma non include le coordinate destra e inferiore. Ciò significa che l'altezza della figura è y2 - y1 e la larghezza della figura è x2 - x1. Sia l'altezza che la larghezza del rettangolo di delimitazione devono essere maggiori di 2 unità e inferiori a 32.767 unità.
Example
void CDCView::DrawRoundRect(CDC *pDC)
{
// create and select a solid blue brush
CBrush brushBlue(RGB(0, 0, 255));
CBrush *pOldBrush = pDC->SelectObject(&brushBlue);
// create and select a thick, black pen
CPen penBlack;
penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
CPen *pOldPen = pDC->SelectObject(&penBlack);
// get our client rectangle
CRect rect;
GetClientRect(rect);
// shrink our rect 20 pixels in each direction
rect.DeflateRect(20, 20);
// Draw a thick black rectangle filled with blue
// corners rounded at a 17-unit radius. Note that
// a radius of three or less is not noticeable because
// the pen is three units wide.
pDC->RoundRect(rect, CPoint(17, 17));
// put back the old objects
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
}
CDC::SaveDC
Salva lo stato corrente del contesto di dispositivo copiando le informazioni sullo stato (ad esempio l'area di ritaglio, gli oggetti selezionati e la modalità di mapping) in uno stack di contesto gestito da Windows.
virtual int SaveDC();
Return Value
Intero che identifica il contesto di dispositivo salvato. È 0 se si verifica un errore. Questo valore restituito può essere usato per ripristinare il contesto di dispositivo chiamando RestoreDC.
Remarks
Il contesto di dispositivo salvato può essere ripristinato in un secondo momento usando RestoreDC.
SaveDC può essere usato un numero qualsiasi di volte per salvare un numero qualsiasi di stati del contesto di dispositivo.
CDC::ScaleViewportExt
Modifica gli extent del riquadro di visualizzazione rispetto ai valori correnti.
virtual CSize ScaleViewportExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Parameters
xNum
Specifica l'importo in base al quale moltiplicare l'extent x corrente.
xDenom
Specifica la quantità in base alla quale dividere il risultato della moltiplicazione dell'extent x corrente per il valore del xNum parametro.
yNum
Specifica l'importo in base al quale moltiplicare l'extent y corrente.
yDenom
Specifica l'importo in base al quale dividere il risultato della moltiplicazione dell'extent y corrente per il valore del yNum parametro.
Return Value
Gli extent del riquadro di visualizzazione precedenti (in unità dispositivo) come CSize oggetto .
Remarks
Le formule vengono scritte come segue:
xNewVE = ( xOldVE * xNum ) / xDenom
yNewVE = ( yOldVE * yNum ) / yDenom
I nuovi extent del riquadro di visualizzazione vengono calcolati moltiplicando gli extent correnti per il numeratore specificato e quindi dividendo per il denominatore specificato.
CDC::ScaleWindowExt
Modifica gli extent della finestra rispetto ai valori correnti.
virtual CSize ScaleWindowExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Parameters
xNum
Specifica l'importo in base al quale moltiplicare l'extent x corrente.
xDenom
Specifica la quantità in base alla quale dividere il risultato della moltiplicazione dell'extent x corrente per il valore del xNum parametro.
yNum
Specifica l'importo in base al quale moltiplicare l'extent y corrente.
yDenom
Specifica l'importo in base al quale dividere il risultato della moltiplicazione dell'extent y corrente per il valore del yNum parametro.
Return Value
Gli extent della finestra precedente (in unità logiche) come CSize oggetto .
Remarks
Le formule vengono scritte come segue:
xNewWE = ( xOldWE * xNum ) / xDenom
yNewWE = ( yOldWE * yNum ) / yDenom
I nuovi extent finestra vengono calcolati moltiplicando gli extent correnti per il numeratore specificato e quindi dividendo per il denominatore specificato.
CDC::ScrollDC
Scorre un rettangolo di bit orizzontalmente e verticalmente.
BOOL ScrollDC(
int dx,
int dy,
LPCRECT lpRectScroll,
LPCRECT lpRectClip,
CRgn* pRgnUpdate,
LPRECT lpRectUpdate);
Parameters
dx
Specifica il numero di unità di scorrimento orizzontali.
dy
Specifica il numero di unità di scorrimento verticali.
lpRectScroll
Punta alla struttura o RECT all'oggetto CRect che contiene le coordinate del rettangolo di scorrimento.
lpRectClip
Punta alla struttura o RECT all'oggetto CRect che contiene le coordinate del rettangolo di ritaglio. Quando questo rettangolo è inferiore a quello originale a lpRectScrollcui punta , lo scorrimento si verifica solo nel rettangolo più piccolo.
pRgnUpdate
Identifica l'area individuata dal processo di scorrimento. La ScrollDC funzione definisce questa area. Non è necessariamente un rettangolo.
lpRectUpdate
Punta alla struttura o RECT all'oggetto CRect che riceve le coordinate del rettangolo che delimita l'area di aggiornamento di scorrimento. Si tratta della più grande area rettangolare che richiede il ripainting. I valori nella struttura o nell'oggetto quando la funzione restituisce sono in coordinate client, indipendentemente dalla modalità di mapping per il contesto di dispositivo specificato.
Return Value
Diverso da zero se viene eseguito lo scorrimento; in caso contrario, 0.
Remarks
Se lpRectUpdate è NULL, Windows non calcola il rettangolo di aggiornamento. Se e pRgnUpdatelpRectUpdate sono NULL, Windows non calcola l'area di aggiornamento. Se pRgnUpdate non NULLè , Windows presuppone che contenga un puntatore valido all'area individuata dal processo di scorrimento (definito dalla ScrollDC funzione membro). L'area di aggiornamento restituita in lpRectUpdate può essere passata a CWnd::InvalidateRgn , se necessario.
Un'applicazione deve usare la ScrollWindow funzione membro della classe CWnd quando è necessario scorrere l'intera area client di una finestra. In caso contrario, deve usare ScrollDC.
CDC::SelectClipPath
Seleziona il percorso corrente come area di ritaglio per il contesto di dispositivo, combinando la nuova area con qualsiasi area di ritaglio esistente usando la modalità specificata.
BOOL SelectClipPath(int nMode);
Parameters
nMode
Specifica il modo di utilizzare il percorso. Sono consentiti i valori seguenti:
RGN_ANDLa nuova area di ritaglio include l'intersezione (aree sovrapposte) dell'area di ritaglio corrente e il percorso corrente.RGN_COPYLa nuova area di ritaglio è il percorso corrente.RGN_DIFFLa nuova area di ritaglio include le aree dell'area di ritaglio corrente e quelle del percorso corrente vengono escluse.RGN_ORLa nuova area di ritaglio include l'unione (aree combinate) dell'area di ritaglio corrente e il percorso corrente.RGN_XORLa nuova area di ritaglio include l'unione dell'area di ritaglio corrente e del percorso corrente, ma senza le aree sovrapposte.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il contesto di dispositivo identificato deve contenere un percorso chiuso.
CDC::SelectClipRgn
Seleziona l'area specificata come area di ritaglio corrente per il contesto del dispositivo.
int SelectClipRgn(CRgn* pRgn);
int SelectClipRgn(
CRgn* pRgn,
int nMode);
Parameters
pRgn
Identifica l'area da selezionare.
Per la prima versione di questa funzione, se questo valore è
NULL, l'intera area client è selezionata e l'output viene ancora ritagliato nella finestra.Per la seconda versione di questa funzione, questo handle può essere
NULLsolo quando viene specificata laRGN_COPYmodalità .
nMode
Specifica l'operazione da eseguire. Deve essere uno dei valori seguenti:
RGN_ANDLa nuova area di ritaglio combina le aree sovrapposte dell'area di ritaglio corrente e l'area identificata dapRgn.RGN_COPYLa nuova area di ritaglio è una copia dell'area identificata dapRgn. Questa funzionalità è identica alla prima versione diSelectClipRgn. Se l'area identificata dapRgnèNULL, la nuova area di ritaglio diventa l'area di ritaglio predefinita (un'area Null).RGN_DIFFLa nuova area di ritaglio combina le aree dell'area di ritaglio corrente con quelle escluse dall'area identificata dapRgn.RGN_ORLa nuova area di ritaglio combina l'area di ritaglio corrente e l'area identificata dapRgn.RGN_XORLa nuova area di ritaglio combina l'area di ritaglio corrente e l'area identificata dapRgnma esclude eventuali aree sovrapposte.
Return Value
Tipo dell'area. Può essere uno dei valori seguenti:
COMPLEXREGIONLa nuova area di ritaglio ha bordi sovrapposti.ERRORIl contesto di dispositivo o l'area non è valido.NULLREGIONLa nuova area di ritaglio è vuota.SIMPLEREGIONLa nuova area di ritaglio non presenta bordi sovrapposti.
Remarks
Viene usata solo una copia dell'area selezionata. L'area stessa può essere selezionata per un numero qualsiasi di altri contesti di dispositivo oppure può essere eliminata.
La funzione presuppone che le coordinate per l'area specificata siano specificate nelle unità dispositivo. Alcuni dispositivi stampanti supportano l'output di testo a una risoluzione superiore rispetto all'output grafico per mantenere la precisione necessaria per esprimere le metriche del testo. Questi dispositivi segnalano le unità dispositivo a una risoluzione più elevata, ovvero in unità di testo. Questi dispositivi ridimensionano quindi le coordinate per la grafica in modo che diverse unità dispositivo segnalate eseseguono il mapping a una sola unità grafica. È consigliabile chiamare sempre la SelectClipRgn funzione usando le unità di testo.
Le applicazioni che devono scalare gli oggetti grafici in GDI possono usare l'escape della GETSCALINGFACTOR stampante per determinare il fattore di ridimensionamento. Questo fattore di ridimensionamento influisce sul ritaglio. Se un'area viene usata per ritagliare elementi grafici, GDI divide le coordinate in base al fattore di ridimensionamento. Se l'area viene usata per ritagliare il testo, GDI non esegue alcuna regolazione del ridimensionamento. Un fattore di ridimensionamento pari a 1 determina la divisione delle coordinate per 2; un fattore di ridimensionamento pari a 2 determina la divisione delle coordinate per 4; E così via.
CDC::SelectObject
Seleziona un oggetto nel contesto del dispositivo.
CPen* SelectObject(CPen* pPen);
CBrush* SelectObject(CBrush* pBrush);
virtual CFont* SelectObject(CFont* pFont);
CBitmap* SelectObject(CBitmap* pBitmap);
int SelectObject(CRgn* pRgn);
CGdiObject* SelectObject(CGdiObject* pObject);
Parameters
pPen
Puntatore a un CPen oggetto da selezionare.
pBrush
Puntatore a un CBrush oggetto da selezionare.
pFont
Puntatore a un CFont oggetto da selezionare.
pBitmap
Puntatore a un CBitmap oggetto da selezionare.
pRgn
Puntatore a un CRgn oggetto da selezionare.
pObject
Puntatore a un CGdiObject oggetto da selezionare.
Return Value
Puntatore all'oggetto da sostituire. Si tratta di un puntatore a un oggetto di una delle classi derivate da CGdiObject, ad esempio CPen, a seconda della versione della funzione utilizzata. Il valore restituito è NULL se si verifica un errore. Questa funzione può restituire un puntatore a un oggetto temporaneo. Questo oggetto temporaneo è valido solo durante l'elaborazione di un messaggio di Windows. Per ulteriori informazioni, vedere CGdiObject::FromHandle.
La versione della funzione membro che accetta un parametro region esegue la stessa attività della SelectClipRgn funzione membro. Il valore restituito può essere uno dei seguenti:
COMPLEXREGIONLa nuova area di ritaglio ha bordi sovrapposti.ERRORIl contesto di dispositivo o l'area non è valido.NULLREGIONLa nuova area di ritaglio è vuota.SIMPLEREGIONLa nuova area di ritaglio non presenta bordi sovrapposti.
Remarks
La classe CDC fornisce cinque versioni specializzate per determinati tipi di oggetti GDI, tra cui penne, pennelli, tipi di carattere, bitmap e aree geografiche. L'oggetto appena selezionato sostituisce l'oggetto precedente dello stesso tipo. Ad esempio, se pObject della versione generale di SelectObject punta a un CPen oggetto , la funzione sostituisce la penna corrente con la penna specificata da pObject.
Un'applicazione può selezionare una bitmap in contesti di dispositivo di memoria solo e in un solo contesto di dispositivo di memoria alla volta. Il formato della bitmap deve essere monocromatico o compatibile con il contesto del dispositivo; in caso contrario, SelectObject restituisce un errore.
Per Windows 3.1 e versioni successive, la SelectObject funzione restituisce lo stesso valore, indipendentemente dal fatto che venga usato in un metafile o meno. Nelle versioni precedenti di Windows, SelectObject è stato restituito un valore diverso da zero per l'esito positivo e 0 per l'errore quando è stato usato in un metafile.
CDC::SelectPalette
Seleziona la tavolozza logica specificata da pPalette come oggetto tavolozza selezionato del contesto di dispositivo.
CPalette* SelectPalette(
CPalette* pPalette,
BOOL bForceBackground);
Parameters
pPalette
Identifica la tavolozza logica da selezionare. Questa tavolozza deve essere già stata creata con la CPalette funzione CreatePalettemembro .
bForceBackground
Specifica se la tavolozza logica deve essere una tavolozza di sfondo. Se bForceBackground è diverso da zero, la tavolozza selezionata è sempre una tavolozza di sfondo, indipendentemente dal fatto che la finestra abbia lo stato attivo per l'input. Se bForceBackground è 0 e il contesto del dispositivo è collegato a una finestra, la tavolozza logica è una tavolozza in primo piano quando la finestra ha lo stato attivo per l'input.
Return Value
Puntatore a un CPalette oggetto che identifica la tavolozza logica sostituita dalla tavolozza specificata da pPalette.
NULL È se si verifica un errore.
Remarks
La nuova tavolozza diventa l'oggetto tavolozza usato da GDI per controllare i colori visualizzati nel contesto del dispositivo e sostituisce la tavolozza precedente.
Un'applicazione può selezionare una tavolozza logica in più contesti di dispositivo. Tuttavia, le modifiche apportate a una tavolozza logica influiranno su tutti i contesti di dispositivo per cui è selezionata. Se un'applicazione seleziona una tavolozza in più contesti di dispositivo, i contesti di dispositivo devono appartenere tutti allo stesso dispositivo fisico.
CDC::SelectStockObject
Seleziona un CGdiObject oggetto che corrisponde a una delle penne, pennelli o tipi di carattere predefiniti.
virtual CGdiObject* SelectStockObject(int nIndex);
Parameters
nIndex
Specifica il tipo di oggetto stock desiderato. Può essere uno dei valori seguenti:
BLACK_BRUSHPennello nero.DKGRAY_BRUSHPennello grigio scuro.GRAY_BRUSHPennello grigio.HOLLOW_BRUSHPennello vuoto.LTGRAY_BRUSHPennello grigio chiaro.NULL_BRUSHPennello Null.WHITE_BRUSHPennello bianco.BLACK_PENPenna nera.NULL_PENPenna Null.WHITE_PENPenna bianca.ANSI_FIXED_FONTTipo di carattere di sistema FISSO ANSI.ANSI_VAR_FONTTipo di carattere del sistema di variabili ANSI.DEVICE_DEFAULT_FONTTipo di carattere dipendente dal dispositivo.OEM_FIXED_FONTTipo di carattere fisso dipendente dall'OEM.SYSTEM_FONTTipo di carattere di sistema. Per impostazione predefinita, Windows usa il tipo di carattere di sistema per disegnare menu, controlli finestra di dialogo e altro testo. È preferibile, tuttavia, non fare affidamento suSYSTEM_FONTper ottenere il tipo di carattere usato da finestre e finestre di dialogo. Usare invece laSystemParametersInfofunzione con ilSPI_GETNONCLIENTMETRICSparametro per recuperare il tipo di carattere corrente.SystemParametersInfotiene conto del tema corrente e fornisce informazioni sul carattere per didascalie, menu e dialoghi di messaggio.SYSTEM_FIXED_FONTTipo di carattere di sistema a larghezza fissa usato in Windows prima della versione 3.0. Questo oggetto è disponibile per la compatibilità con le versioni precedenti di Windows.DEFAULT_PALETTETavolozza dei colori predefinita. Questa tavolozza è costituita dai 20 colori statici nella tavolozza del sistema.
Return Value
Puntatore all'oggetto CGdiObject sostituito se la funzione ha esito positivo. L'oggetto effettivo a cui punta è un CPenoggetto , CBrusho CFont . Se la chiamata ha esito negativo, il valore restituito è NULL.
CDC::SetAbortProc
Installa la procedura di interruzione per il processo di stampa.
int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
Parameters
lpfn
Puntatore alla funzione di interruzione da installare come procedura di interruzione. Per altre informazioni sulla funzione di callback, vedere Funzione di callback per CDC::SetAbortProc.
Return Value
Specifica il risultato della SetAbortProc funzione. Alcuni dei valori seguenti sono più probabili di altri, ma tutti sono possibili.
SP_ERRORErrore generale.SP_OUTOFDISKSpazio su disco insufficiente attualmente disponibile per lo spooling e non sarà più disponibile spazio.SP_OUTOFMEMORYMemoria insufficiente per lo spooling.SP_USERABORTL'utente ha terminato il processo tramite Gestione stampa.
Remarks
Se un'applicazione deve consentire l'annullamento del processo di stampa durante lo spooling, deve impostare la funzione di interruzione prima dell'avvio del processo di stampa con la StartDoc funzione membro. Print Manager chiama la funzione di interruzione durante lo spooling per consentire all'applicazione di annullare il processo di stampa o di elaborare condizioni di spazio su disco insufficiente. Se non è impostata alcuna funzione di interruzione, il processo di stampa avrà esito negativo se non è disponibile spazio su disco sufficiente per lo spooling.
Le funzionalità di Microsoft Visual C++ semplificano la creazione della funzione di callback passata a SetAbortProc. L'indirizzo passato alla EnumObjects funzione membro è un puntatore a una funzione esportata con __declspec(dllexport) e con la convenzione di __stdcall chiamata.
Non è inoltre necessario esportare il nome della funzione in un'istruzione EXPORTS nel file di definizione del modulo dell'applicazione. È invece possibile usare il modificatore di EXPORT funzione, come in
BOOL CALLBACK EXPORT AFunction( HDC, int );
per fare in modo che il compilatore emetta il record di esportazione appropriato per l'esportazione in base al nome senza aliasing. Questo funziona per la maggior parte delle esigenze. Per alcuni casi speciali, ad esempio l'esportazione di una funzione ordinale o l'aliasing dell'esportazione, è comunque necessario usare un'istruzione EXPORTS in un file di definizione del modulo.
Le interfacce di registrazione del callback sono ora indipendenti dai tipi (è necessario passare un puntatore a funzione che punta al tipo di funzione corretto per il callback specifico).
Tutte le funzioni di callback devono intercettare le eccezioni di Microsoft Foundation prima di tornare a Windows, perché le eccezioni non possono essere generate attraverso i limiti di callback. Per altre informazioni sulle eccezioni, vedere l'articolo Eccezioni.
CDC::SetArcDirection
Imposta la direzione del disegno da utilizzare per le funzioni arco e rettangolo.
int SetArcDirection(int nArcDirection);
Parameters
nArcDirection
Specifica la nuova direzione dell'arco. Questo parametro può essere uno dei valori seguenti:
AD_COUNTERCLOCKWISEFigure disegnate in senso antiorario.AD_CLOCKWISEFigure disegnate in senso orario.
Return Value
Specifica la direzione dell'arco precedente, se ha esito positivo; in caso contrario, 0.
Remarks
La direzione predefinita è antiorario. La SetArcDirection funzione specifica la direzione in cui disegnare le funzioni seguenti:
| Arc | Pie |
|---|---|
ArcTo |
Rectangle |
Chord |
RoundRect |
Ellipse |
CDC::SetAttribDC
Chiamare questa funzione per impostare il contesto del dispositivo dell'attributo, m_hAttribDC.
virtual void SetAttribDC(HDC hDC);
Parameters
hDC
Contesto di dispositivo Windows.
Remarks
Questa funzione membro non collega il contesto di dispositivo all'oggetto CDC . Solo il contesto del dispositivo di output è collegato a un CDC oggetto .
CDC::SetBkColor
Imposta il colore di sfondo corrente sul colore specificato.
virtual COLORREF SetBkColor(COLORREF crColor);
Parameters
crColor
Specifica il nuovo colore di sfondo.
Return Value
Colore di sfondo precedente come valore di colore RGB. Se si verifica un errore, il valore restituito viene 0x80000000.
Remarks
Se la modalità di sfondo è OPAQUE, il sistema usa il colore di sfondo per riempire le lacune nelle linee in stile, le lacune tra le linee trattette nei pennelli e lo sfondo nelle celle di caratteri. Il sistema usa anche il colore di sfondo durante la conversione delle bitmap tra contesti di dispositivo a colori e monocromatici.
Se il dispositivo non può visualizzare il colore specificato, il sistema imposta il colore di sfondo sul colore fisico più vicino.
CDC::SetBkMode
Imposta la modalità di sfondo.
int SetBkMode(int nBkMode);
Parameters
nBkMode
Specifica la modalità da impostare. Questo parametro può essere uno dei valori seguenti:
OPAQUELo sfondo viene riempito con il colore di sfondo corrente prima che venga disegnato il testo, il pennello tratteggiato o la penna. Questa è la modalità di sfondo predefinita.TRANSPARENTLo sfondo non viene modificato prima del disegno.
Return Value
Modalità di sfondo precedente.
Remarks
La modalità di sfondo definisce se il sistema rimuove i colori di sfondo esistenti sull'area di disegno prima di disegnare testo, pennelli tratteggi o qualsiasi stile di penna che non sia una linea continua.
Example
Vedere l'esempio per CWnd::OnCtlColor.
CDC::SetBoundsRect
Controlla l'accumulo di informazioni sul rettangolo di delimitazione per il contesto di dispositivo specificato.
UINT SetBoundsRect(
LPCRECT lpRectBounds,
UINT flags);
Parameters
lpRectBounds
Punta a una struttura o RECT a un CRect oggetto utilizzato per impostare il rettangolo di delimitazione. Le dimensioni del rettangolo vengono specificate in coordinate logiche. Questo parametro può essere NULL.
flags
Specifica il modo in cui il nuovo rettangolo verrà combinato con il rettangolo accumulato. Questo parametro può essere una combinazione dei valori seguenti:
DCB_ACCUMULATEAggiungere il rettangolo specificato dalpRectBoundsal rettangolo di delimitazione (usando un'operazione di unione rettangolo).DCB_DISABLEDisattivare l'accumulo dei limiti.DCB_ENABLEAttivare l'accumulo di limiti. L'impostazione predefinita per l'accumulo dei limiti è disabilitata.
Return Value
Stato corrente del rettangolo di delimitazione, se la funzione ha esito positivo. Come flags, il valore restituito può essere una combinazione di DCB_ valori:
DCB_ACCUMULATEIl rettangolo di delimitazione non è vuoto. Questo valore verrà sempre impostato.DCB_DISABLEL'accumulo di limiti è disattivato.DCB_ENABLEL'accumulo dei limiti è attivo.
Remarks
Windows può mantenere un rettangolo di delimitazione per tutte le operazioni di disegno. Questo rettangolo può essere sottoposto a query e reimpostato dall'applicazione. I limiti del disegno sono utili per invalidare le cache bitmap.
CDC::SetBrushOrg
Specifica l'origine che GDI assegnerà al pennello successivo selezionato dall'applicazione nel contesto del dispositivo.
CPoint SetBrushOrg(
int x,
int y);
CPoint SetBrushOrg(POINT point);
Parameters
x
Specifica la coordinata x (in unità dispositivo) della nuova origine. Questo valore deve essere compreso nell'intervallo 0-7.
y
Specifica la coordinata y (in unità dispositivo) della nuova origine. Questo valore deve essere compreso nell'intervallo 0-7.
point
Specifica le coordinate x e y della nuova origine. Ogni valore deve essere compreso nell'intervallo 0-7. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Origine precedente del pennello nelle unità dispositivo.
Remarks
Le coordinate predefinite per l'origine del pennello sono (0, 0). Per modificare l'origine di un pennello, chiamare la UnrealizeObject funzione per l'oggetto CBrush , chiamare e quindi chiamare SetBrushOrgla SelectObject funzione membro per selezionare il pennello nel contesto del dispositivo.
Non usare SetBrushOrg con oggetti stock CBrush .
CDC::SetColorAdjustment
Imposta i valori di regolazione del colore per il contesto di dispositivo usando i valori specificati.
BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
Parameters
lpColorAdjust
Punta a una COLORADJUSTMENT struttura di dati contenente i valori di regolazione del colore.
Return Value
Diverso da zero se ha esito positivo; in caso contrario 0.
Remarks
I valori di regolazione del colore vengono usati per regolare il colore di input della bitmap di origine per le chiamate alla funzione membro quando CDC::StretchBlt viene impostata la HALFTONE modalità.
CDC::SetDCBrushColor
Imposta il colore del pennello del contesto di dispositivo corrente sul valore di colore specificato.
COLORREF SetDCBrushColor(COLORREF crColor);
Parameters
crColor
Specifica il nuovo colore del pennello.
Return Value
Se la funzione ha esito positivo, il valore restituito specifica il colore del pennello DC precedente come COLORREF valore.
Se la funzione ha esito negativo, il valore restituito è CLR_INVALID.
Remarks
Questo metodo emula la funzionalità della funzione SetDCBrushColor, come descritto in Windows SDK.
CDC::SetDCPenColor
Imposta il colore della penna corrente del contesto di dispositivo (DC) sul valore di colore specificato.
COLORREF SetDCPenColor(COLORREF crColor);
Parameters
crColor
Specifica il nuovo colore della penna.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Questa funzione membro usa la funzione SetDCPenColorWin32 , come descritto in Windows SDK.
CDC::SetGraphicsMode
Imposta la modalità grafica per il contesto di dispositivo specificato.
int SetGraphicsMode(int iMode);
Parameters
iMode
Specifica la modalità grafica. Per un elenco dei valori che questo parametro può accettare, vedere SetGraphicsMode.
Return Value
Restituisce la modalità grafica precedente in caso di esito positivo.
Restituisce 0 in caso di errore. Per ottenere informazioni estese sull'errore, chiamare GetLastError.
Remarks
Questo metodo esegue il wrapping della funzione SetGraphicsModeGDI di Windows.
CDC::SetLayout
Chiamare questa funzione membro per modificare il layout del testo e della grafica per un contesto di dispositivo da destra a sinistra, il layout standard per le impostazioni cultura, ad esempio arabo ed ebraico.
DWORD SetLayout(DWORD dwLayout);
Parameters
dwLayout
Layout del contesto di dispositivo e flag di controllo bitmap. Può essere una combinazione dei valori seguenti.
| Value | Meaning |
|---|---|
LAYOUT_BITMAPORIENTATIONPRESERVED |
Disabilita qualsiasi reflection per le chiamate a CDC::BitBlt e CDC::StretchBlt. |
LAYOUT_RTL |
Imposta il layout orizzontale predefinito da destra a sinistra. |
LAYOUT_LTR |
Imposta il layout predefinito da sinistra a destra. |
Return Value
In caso di esito positivo, il layout precedente del contesto di dispositivo.
In caso di esito negativo, GDI_ERROR. Per ottenere informazioni estese sull'errore, chiamare GetLastError.
Remarks
Normalmente, non SetLayout chiameresti una finestra. È invece possibile controllare il layout da destra a sinistra in una finestra impostando gli stili delle finestre estese, WS_EX_RTLREADINGad esempio . Un contesto di dispositivo, ad esempio una stampante o un metafile, non eredita questo layout. L'unico modo per impostare il contesto di dispositivo per un layout da destra a sinistra consiste nel chiamare SetLayout.
Se si chiama SetLayout(LAYOUT_RTL), SetLayout la modalità di mapping viene automaticamente modificata in MM_ISOTROPIC. Di conseguenza, una chiamata successiva a GetMapMode restituirà MM_ISOTROPIC invece di MM_TEXT.
In alcuni casi, ad esempio con molte bitmap, è possibile mantenere il layout da sinistra a destra. In questi casi, eseguire il rendering dell'immagine chiamando BitBlt o StretchBlt, quindi impostare il flag di controllo bitmap per dwLayout su LAYOUT_BITMAPORIENTATIONPRESERVED.
Dopo aver modificato il layout con il LAYOUT_RTL flag, i flag che normalmente specificano destra o sinistra vengono invertiti. Per evitare confusione, è possibile definire nomi alternativi per i flag standard. Per un elenco dei nomi di flag alternativi suggeriti, vedere SetLayout in Windows SDK.
CDC::SetMapMode
Imposta la modalità di mapping.
virtual int SetMapMode(int nMapMode);
Parameters
nMapMode
Specifica la nuova modalità di mapping. Può essere uno dei valori seguenti:
MM_ANISOTROPICLe unità logiche vengono convertite in unità arbitrarie con assi scalati in modo arbitrario. L'impostazione della modalità di mapping suMM_ANISOTROPICnon modifica le impostazioni correnti della finestra o del riquadro di visualizzazione. Per modificare le unità, l'orientamento e il ridimensionamento, chiamare leSetWindowExtfunzioni membro eSetViewportExt.MM_HIENGLISHOgni unità logica viene convertita in 0,001 pollici. Positivo x è a destra; positivo y è in su.MM_HIMETRICOgni unità logica viene convertita in 0,01 millimetri. Positivo x è a destra; positivo y è in su.MM_ISOTROPICLe unità logiche vengono convertite in unità arbitrarie con assi altrettanto ridimensionati; ovvero 1 unità lungo l'asse x è uguale a 1 unità lungo l'asse y. Utilizzare leSetWindowExtfunzioni membro eSetViewportExtper specificare le unità desiderate e l'orientamento degli assi. GDI apporta modifiche in base alle esigenze per garantire che le unità x e y rimangano le stesse dimensioni.MM_LOENGLISHOgni unità logica viene convertita in 0,01 pollici. Positivo x è a destra; positivo y è in su.MM_LOMETRICOgni unità logica viene convertita in 0,1 millimetri. Positivo x è a destra; positivo y è in su.MM_TEXTOgni unità logica viene convertita in 1 pixel del dispositivo. Positivo x è a destra; positivo y è giù.MM_TWIPSOgni unità logica viene convertita in 1/20 di un punto. Poiché un punto è 1/72 pollici, una twip è di 1/1440 pollici. Positivo x è a destra; positivo y è in su.
Return Value
Modalità di mapping precedente.
Remarks
La modalità di mapping definisce l'unità di misura usata per convertire le unità logiche in unità dispositivo; definisce anche l'orientamento degli assi x e y del dispositivo. GDI usa la modalità di mapping per convertire le coordinate logiche nelle coordinate del dispositivo appropriate. La MM_TEXT modalità consente alle applicazioni di lavorare in pixel del dispositivo, dove 1 unità è uguale a 1 pixel. Le dimensioni fisiche di un pixel variano da dispositivo a dispositivo.
Le MM_HIENGLISHmodalità , MM_HIMETRICMM_LOENGLISH, MM_LOMETRIC, e MM_TWIPS sono utili per le applicazioni che devono disegnare in unità fisicamente significative (ad esempio pollici o millimetri). La MM_ISOTROPIC modalità garantisce una proporzione di 1:1, utile quando è importante mantenere la forma esatta di un'immagine. La MM_ANISOTROPIC modalità consente di regolare in modo indipendente le coordinate x e y.
Note
Se si chiama SetLayout per modificare il controller di dominio (contesto di dispositivo) in layout da destra a sinistra, SetLayout la modalità di mapping viene automaticamente modificata in MM_ISOTROPIC.
Example
Vedere l'esempio per CView::OnPrepareDC.
CDC::SetMapperFlags
Modifica il metodo utilizzato dal mapper del tipo di carattere quando converte un tipo di carattere logico in un tipo di carattere fisico.
DWORD SetMapperFlags(DWORD dwFlag);
Parameters
dwFlag
Specifica se il mapper del tipo di carattere tenta di associare l'altezza e la larghezza dell'aspetto di un tipo di carattere al dispositivo. Quando questo valore è ASPECT_FILTERING, il mapper seleziona solo i tipi di carattere il cui aspetto x e l'aspetto y corrispondono esattamente a quelli del dispositivo specificato.
Return Value
Valore precedente del flag font-mapper.
Remarks
Un'applicazione può usare SetMapperFlags per fare in modo che il mapper del carattere tenti di scegliere solo un tipo di carattere fisico che corrisponda esattamente alle proporzioni del dispositivo specificato.
Un'applicazione che usa solo tipi di carattere raster può usare la SetMapperFlags funzione per garantire che il tipo di carattere selezionato dal mapper del carattere sia attraente e leggibile nel dispositivo specificato. Le applicazioni che usano tipi di carattere scalabili (TrueType) in genere non usano SetMapperFlags.
Se nessun tipo di carattere fisico ha proporzioni corrispondenti alla specifica nel tipo di carattere logico, GDI sceglie una nuova proporzioni e seleziona un tipo di carattere corrispondente a questa nuova proporzioni.
CDC::SetMiterLimit
Imposta il limite per la lunghezza dei join di miter per il contesto di dispositivo.
BOOL SetMiterLimit(float fMiterLimit);
Parameters
fMiterLimit
Specifica il nuovo limite di miter per il contesto di dispositivo.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
La lunghezza del miter è definita come la distanza dall'intersezione delle pareti di linea all'interno del join all'intersezione delle pareti di linea all'esterno del join. Il limite di miter è il rapporto massimo consentito tra la lunghezza del miter e la larghezza della linea. Il limite di miter predefinito è 10,0.
CDC::SetOutputDC
Chiamare questa funzione membro per impostare il contesto del dispositivo di output, m_hDC.
virtual void SetOutputDC(HDC hDC);
Parameters
hDC
Contesto di dispositivo Windows.
Remarks
Questa funzione membro può essere chiamata solo quando un contesto di dispositivo non è stato collegato all'oggetto CDC . Questa funzione membro imposta m_hDC ma non collega il contesto di dispositivo all'oggetto CDC .
CDC::SetPixel
Imposta il pixel nel punto specificato sull'approssimazione più vicina del colore specificato da crColor.
COLORREF SetPixel(
int x,
int y,
COLORREF crColor);
COLORREF SetPixel(
POINT point,
COLORREF crColor);
Parameters
x
Specifica la coordinata x logica del punto da impostare.
y
Specifica la coordinata y logica del punto da impostare.
crColor
Valore COLORREF RGB che specifica il colore utilizzato per disegnare il punto. Per una descrizione di questo valore, vedere COLORREF in Windows SDK.
point
Specifica le coordinate x e y logiche del punto da impostare. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Valore RGB per il colore disegnato dal punto. Questo valore può essere diverso da quello specificato da crColor se viene utilizzata un'approssimazione di tale colore. Se la funzione ha esito negativo (se il punto si trova all'esterno dell'area di ritaglio), il valore restituito è -1.
Remarks
Il punto deve trovarsi nell'area di ritaglio. Se il punto non si trova nell'area di ritaglio, la funzione non esegue alcuna operazione.
Non tutti i dispositivi supportano la funzione SetPixel. Per determinare se un dispositivo supporta SetPixel, chiamare la GetDeviceCaps funzione membro con l'indice RASTERCAPS e controllare il valore restituito per il RC_BITBLT flag.
CDC::SetPixelV
Imposta il pixel in corrispondenza delle coordinate specificate sull'approssimazione più vicina del colore specificato.
BOOL SetPixelV(
int x,
int y,
COLORREF crColor);
BOOL SetPixelV(
POINT point,
COLORREF crColor);
Parameters
x
Specifica la coordinata x, in unità logiche, del punto da impostare.
y
Specifica la coordinata y, in unità logiche, del punto da impostare.
crColor
Specifica il colore da utilizzare per disegnare il punto.
point
Specifica le coordinate x e y logiche del punto da impostare. È possibile passare una POINT struttura di dati o un CPoint oggetto per questo parametro.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il punto deve trovarsi sia nell'area di ritaglio che nella parte visibile della superficie del dispositivo. Non tutti i dispositivi supportano la funzione membro. Per altre informazioni, vedere la RC_BITBLT funzionalità nella CDC::GetDeviceCaps funzione membro.
SetPixelV è più veloce rispetto SetPixel al fatto che non è necessario restituire il valore di colore del punto disegnato.
CDC::SetPolyFillMode
Imposta la modalità di riempimento poligono.
int SetPolyFillMode(int nPolyFillMode);
Parameters
nPolyFillMode
Specifica la nuova modalità di riempimento. Questo valore può essere ALTERNATE o WINDING. La modalità predefinita impostata in Windows è ALTERNATE.
Return Value
La modalità di riempimento precedente, se ha esito positivo; in caso contrario, 0.
Remarks
Quando la modalità di riempimento poligono è ALTERNATE, il sistema riempie l'area tra lati poligoni numerati e pari su ogni linea di scansione. Ovvero, il sistema riempie l'area tra il primo e il secondo lato, tra il terzo e il quarto lato e così via. Questa modalità è la predefinita.
Quando la modalità di riempimento poligono è WINDING, il sistema usa la direzione in cui è stata disegnata una figura per determinare se riempire un'area. Ogni segmento di linea in un poligono viene disegnato in senso orario o in senso antiorario. Ogni volta che una linea immaginaria disegnata da un'area racchiusa all'esterno di una figura passa attraverso un segmento di linea in senso orario, viene incrementato un conteggio. Quando la linea passa attraverso un segmento di linea antiorario, il conteggio viene decrementato. L'area viene riempita se il conteggio è diverso da zero quando la riga raggiunge l'esterno della figura.
CDC::SetROP2
Imposta la modalità di disegno corrente.
int SetROP2(int nDrawMode);
Parameters
nDrawMode
Specifica la nuova modalità di disegno. Può essere uno dei valori seguenti:
R2_BLACKPixel è sempre nero.R2_WHITEIl pixel è sempre bianco.R2_NOPIl pixel rimane invariato.R2_NOTPixel è l'inverso del colore dello schermo.R2_COPYPENPixel è il colore della penna.R2_NOTCOPYPENPixel è l'inverso del colore della penna.R2_MERGEPENNOTPixel è una combinazione del colore della penna e dell'inversa del colore dello schermo (pixel finale = (~pixel schermo)|penna).R2_MASKPENNOTPixel è una combinazione dei colori comuni sia alla penna che all'inversa della penna (pixel finale = (~pixel dello schermo).&R2_MERGENOTPENPixel è una combinazione del colore dello schermo e dell'inverso del colore della penna (pixel finale = (~penna)|del pixel dello schermo.R2_MASKNOTPENPixel è una combinazione dei colori comuni sia allo schermo che all'inverso del pixel della penna (pixel finale = (~penna).&R2_MERGEPENPixel è una combinazione del colore della penna e del colore dello schermo (pixel finale = pixel dello schermo della penna|).R2_NOTMERGEPENPixel è l'inverso delR2_MERGEPENcolore (pixel finale =~(pixel dello schermo della penna|)).R2_MASKPENPixel è una combinazione dei colori comuni sia alla penna che allo schermo (pixel finale = pixel dello schermo della penna&).R2_NOTMASKPENPixel è l'inverso delR2_MASKPENcolore (pixel finale =~(pixel dello schermo della penna&)).R2_XORPENPixel è una combinazione dei colori presenti nella penna o nello schermo, ma non in entrambi (pixel finale =^pixel penna pixel).R2_NOTXORPENPixel è l'inverso delR2_XORPENcolore (pixel finale =~(pixel dello schermo della penna^)).
Return Value
Modalità di disegno precedente.
Può essere uno dei valori specificati in Windows SDK.
Remarks
La modalità di disegno specifica il modo in cui i colori della penna e l'interno degli oggetti riempiti vengono combinati con il colore già presente sulla superficie di visualizzazione.
La modalità di disegno è solo per i dispositivi raster; non si applica ai dispositivi vettoriali. Le modalità di disegno sono codici di operazioni raster binarie che rappresentano tutte le possibili combinazioni booleane di due variabili, usando gli operatori &binari , |e ^ (esclusivi |) e l'operazione ~unaria .
CDC::SetStretchBltMode
Imposta la modalità di estensione bitmap per la StretchBlt funzione membro.
int SetStretchBltMode(int nStretchMode);
Parameters
nStretchMode
Specifica la modalità di estensione. Può essere uno dei valori seguenti:
| Value | Description |
|---|---|
BLACKONWHITE |
Esegue un'operazione booleana & utilizzando i valori di colore per i pixel eliminati ed esistenti. Se la bitmap è una bitmap monocromatica, questa modalità mantiene i pixel neri a scapito dei pixel bianchi. |
COLORONCOLOR |
Elimina i pixel. Questa modalità elimina tutte le righe di pixel eliminate senza tentare di conservare le informazioni. |
HALFTONE |
Esegue il mapping dei pixel dal rettangolo di origine in blocchi di pixel nel rettangolo di destinazione. Il colore medio del blocco di pixel di destinazione approssima il colore dei pixel di origine. |
Dopo aver impostato la HALFTONE modalità di estensione, un'applicazione deve chiamare la funzione SetBrushOrgEx Win32 per impostare l'origine del pennello. In caso contrario, si verifica un errore di allineamento del pennello. |
|
STRETCH_ANDSCANS |
Windows 95/98: uguale a BLACKONWHITE |
STRETCH_DELETESCANS |
Windows 95/98: uguale a COLORONCOLOR |
STRETCH_HALFTONE |
Windows 95/98: uguale a HALFTONE. |
STRETCH_ORSCANS |
Windows 95/98: uguale a WHITEONBLACK |
WHITEONBLACK |
Esegue un'operazione booleana | utilizzando i valori di colore per i pixel eliminati ed esistenti. Se la bitmap è una bitmap monocromatica, questa modalità mantiene i pixel bianchi a scapito dei pixel neri. |
Return Value
Modalità di estensione precedente. Può essere STRETCH_ANDSCANS, STRETCH_DELETESCANS o STRETCH_ORSCANS.
Remarks
La modalità di estensione bitmap definisce il modo in cui le informazioni vengono rimosse dalle bitmap compresse tramite la funzione .
Le BLACKONWHITEmodalità (STRETCH_ANDSCANS) e WHITEONBLACK(STRETCH_ORSCANS) vengono in genere usate per mantenere i pixel di primo piano nelle bitmap monocromatiche. La COLORONCOLORmodalità (STRETCH_DELETESCANS) viene in genere usata per mantenere il colore nelle bitmap a colori.
La HALFTONE modalità richiede più elaborazione dell'immagine di origine rispetto alle altre tre modalità, ma è più lenta rispetto alle altre, ma produce immagini di qualità superiore. Inoltre, SetBrushOrgEx deve essere chiamato dopo aver impostato la HALFTONE modalità per evitare il disallineamento del pennello.
Altre modalità di estensione potrebbero anche essere disponibili a seconda delle funzionalità del driver di dispositivo.
CDC::SetTextAlign
Imposta i flag di allineamento del testo.
UINT SetTextAlign(UINT nFlags);
Parameters
nFlags
Specifica i flag di allineamento del testo. I flag specificano la relazione tra un punto e un rettangolo che delimita il testo. Il punto può essere la posizione corrente o le coordinate specificate da una funzione di output di testo. Il rettangolo che delimita il testo è definito dalle celle di caratteri adiacenti nella stringa di testo. Il nFlags parametro può essere uno o più flag delle tre categorie seguenti. Scegliere un solo flag da ogni categoria. La prima categoria influisce sull'allineamento del testo nella direzione x:
TA_CENTERAllinea il punto al centro orizzontale del rettangolo di delimitazione.TA_LEFTAllinea il punto al lato sinistro del rettangolo di delimitazione. Si tratta dell'impostazione predefinita.TA_RIGHTAllinea il punto al lato destro del rettangolo di delimitazione.
La seconda categoria influisce sull'allineamento del testo nella direzione y:
TA_BASELINEAllinea il punto alla linea di base del tipo di carattere scelto.TA_BOTTOMAllinea il punto alla parte inferiore del rettangolo di delimitazione.TA_TOPAllinea il punto alla parte superiore del rettangolo di delimitazione. Si tratta dell'impostazione predefinita.
La terza categoria determina se la posizione corrente viene aggiornata quando viene scritto il testo:
TA_NOUPDATECPNon aggiorna la posizione corrente dopo ogni chiamata a una funzione di output di testo. Si tratta dell'impostazione predefinita.TA_UPDATECPAggiorna la posizione x corrente dopo ogni chiamata a una funzione di output di testo. La nuova posizione si trova sul lato destro del rettangolo di delimitazione per il testo. Quando questo flag è impostato, le coordinate specificate nelle chiamate allaTextOutfunzione membro vengono ignorate.
Return Value
L'impostazione di allineamento del testo precedente, se ha esito positivo. Il byte di ordine basso contiene l'impostazione orizzontale e il byte di ordine elevato contiene l'impostazione verticale; in caso contrario, 0.
Remarks
Le TextOut funzioni membro e ExtTextOut usano questi flag quando si posiziona una stringa di testo in uno schermo o in un dispositivo. I flag specificano la relazione tra un punto specifico e un rettangolo che delimita il testo. Le coordinate di questo punto vengono passate come parametri alla TextOut funzione membro. Il rettangolo che delimita il testo è formato dalle celle di caratteri adiacenti nella stringa di testo.
CDC::SetTextCharacterExtra
Imposta la quantità di spaziatura intercharacter.
int SetTextCharacterExtra(int nCharExtra);
Parameters
nCharExtra
Specifica la quantità di spazio aggiuntivo (in unità logiche) da aggiungere a ogni carattere. Se la modalità di mapping corrente non MM_TEXTè , nCharExtra viene trasformata e arrotondata al pixel più vicino.
Return Value
Quantità della spaziatura intercaracter precedente.
Remarks
GDI aggiunge questa spaziatura a ogni carattere, inclusi i caratteri di interruzione, quando scrive una riga di testo nel contesto del dispositivo. Il valore predefinito per la quantità di spaziatura intercaracter è 0.
CDC::SetTextColor
Imposta il colore del testo sul colore specificato.
virtual COLORREF SetTextColor(COLORREF crColor);
Parameters
crColor
Specifica il colore del testo come valore di colore RGB.
Return Value
Valore RGB per il colore del testo precedente.
Remarks
Il sistema usa questo colore del testo durante la scrittura di testo in questo contesto di dispositivo e anche durante la conversione di bitmap tra contesti di dispositivo a colori e monocromatici.
Se il dispositivo non può rappresentare il colore specificato, il sistema imposta il colore del testo sul colore fisico più vicino. Il colore di sfondo per un carattere viene specificato dalle SetBkColor funzioni membro e SetBkMode .
Example
Vedere l'esempio per CWnd::OnCtlColor.
CDC::SetTextJustification
Aggiunge spazio ai caratteri di interruzione in una stringa.
int SetTextJustification(
int nBreakExtra,
int nBreakCount);
Parameters
nBreakExtra
Specifica lo spazio aggiuntivo totale da aggiungere alla riga di testo (in unità logiche). Se la modalità di mapping corrente non MM_TEXTè , il valore specificato da questo parametro viene convertito nella modalità di mapping corrente e arrotondato all'unità dispositivo più vicina.
nBreakCount
Specifica il numero di caratteri di interruzione nella riga.
Return Value
Uno se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Un'applicazione può utilizzare le GetTextMetrics funzioni membro per recuperare il carattere di interruzione di un tipo di carattere.
Dopo la chiamata alla SetTextJustification funzione membro, una chiamata a una funzione di output di testo (ad esempio TextOut) distribuisce lo spazio aggiuntivo specificato in modo uniforme tra il numero specificato di caratteri di interruzione. Il carattere di interruzione è in genere lo spazio (ASCII 32), ma può essere definito da un tipo di carattere come un altro carattere.
La funzione GetTextExtent membro viene in genere usata con SetTextJustification.
GetTextExtent calcola la larghezza di una determinata linea prima dell'allineamento. Un'applicazione può determinare la quantità di spazio da specificare nel nBreakExtra parametro sottraendo il valore restituito dalla GetTextExtent larghezza della stringa dopo l'allineamento.
La SetTextJustification funzione può essere usata per allineare una linea che contiene più esecuzioni in tipi di carattere diversi. In questo caso, la riga deve essere creata a fasi allineando e scrivendo ogni esecuzione separatamente.
Poiché gli errori di arrotondamento possono verificarsi durante l'allineamento, il sistema mantiene un termine di errore in esecuzione che definisce l'errore corrente. Quando si allinea una riga che contiene più esecuzioni, GetTextExtent usa automaticamente questo termine di errore quando calcola l'extent dell'esecuzione successiva. Ciò consente alla funzione di output di testo di combinare l'errore nella nuova esecuzione.
Dopo l'allineamento di ogni riga, questo termine di errore deve essere cancellato per evitare che venga incorporato nella riga successiva. Il termine può essere cancellato chiamando SetTextJustification con nBreakExtra impostato su 0.
CDC::SetViewportExt
Imposta gli extent x e y del riquadro di visualizzazione del contesto di dispositivo.
virtual CSize SetViewportExt(
int cx,
int cy);
CSize SetViewportExt(SIZE size);
Parameters
cx
Specifica l'extent x del viewport (in unità dispositivo).
cy
Specifica l'extent y del viewport (in unità dispositivo).
size
Specifica gli extent x e y del viewport (in unità dispositivo).
Return Value
Extent precedenti del riquadro di visualizzazione come CSize oggetto . Quando si verifica un errore, le coordinate x e y dell'oggetto restituito CSize sono entrambe impostate su 0.
Remarks
Il riquadro di visualizzazione, insieme alla finestra del contesto di dispositivo, definisce il modo in cui GDI esegue il mapping dei punti nel sistema di coordinate logico ai punti nel sistema di coordinate del dispositivo effettivo. In altre parole, definiscono il modo in cui GDI converte le coordinate logiche in coordinate del dispositivo.
Quando vengono impostate le modalità di mapping seguenti, le chiamate a SetWindowExt e SetViewportExt vengono ignorate:
MM_HIENGLISH |
MM_LOMETRIC |
|---|---|
MM_HIMETRIC |
MM_TEXT |
MM_LOENGLISH |
MM_TWIPS |
Quando MM_ISOTROPIC la modalità è impostata, un'applicazione deve chiamare la SetWindowExt funzione membro prima di chiamare SetViewportExt.
Example
Vedere l'esempio per CView::OnPrepareDC.
CDC::SetViewportOrg
Imposta l'origine del riquadro di visualizzazione del contesto di dispositivo.
virtual CPoint SetViewportOrg(
int x,
int y);
CPoint SetViewportOrg(POINT point);
Parameters
x
Specifica la coordinata x (in unità dispositivo) dell'origine del riquadro di visualizzazione. Il valore deve essere compreso nell'intervallo del sistema di coordinate del dispositivo.
y
Specifica la coordinata y (in unità dispositivo) dell'origine del riquadro di visualizzazione. Il valore deve essere compreso nell'intervallo del sistema di coordinate del dispositivo.
point
Specifica l'origine del riquadro di visualizzazione. I valori devono essere compresi nell'intervallo del sistema di coordinate del dispositivo. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Origine precedente del riquadro di visualizzazione (nelle coordinate del dispositivo) come CPoint oggetto .
Remarks
Il riquadro di visualizzazione, insieme alla finestra del contesto di dispositivo, definisce il modo in cui GDI esegue il mapping dei punti nel sistema di coordinate logico ai punti nel sistema di coordinate del dispositivo effettivo. In altre parole, definiscono il modo in cui GDI converte le coordinate logiche in coordinate del dispositivo.
L'origine del riquadro di visualizzazione contrassegna il punto nel sistema di coordinate del dispositivo a cui GDI esegue il mapping dell'origine della finestra, un punto nel sistema di coordinate logico specificato dalla SetWindowOrg funzione membro. GDI esegue il mapping di tutti gli altri punti seguendo lo stesso processo necessario per eseguire il mapping dell'origine della finestra all'origine del riquadro di visualizzazione. Ad esempio, tutti i punti in un cerchio intorno al punto in corrispondenza dell'origine della finestra saranno in un cerchio intorno al punto all'origine del riquadro di visualizzazione. Analogamente, tutti i punti di una riga che passano attraverso l'origine della finestra si trovano in una riga che passa attraverso l'origine del riquadro di visualizzazione.
Example
Vedere l'esempio per CView::OnPrepareDC.
CDC::SetWindowExt
Imposta gli extent x e y della finestra associata al contesto di dispositivo.
virtual CSize SetWindowExt(
int cx,
int cy);
CSize SetWindowExt(SIZE size);
Parameters
cx
Specifica l'extent x (in unità logiche) della finestra.
cy
Specifica l'extent y (in unità logiche) della finestra.
size
Specifica gli extent x e y (in unità logiche) della finestra.
Return Value
Gli extent precedenti della finestra (in unità logiche) come CSize oggetto . Se si verifica un errore, le coordinate x e y dell'oggetto restituito CSize sono entrambe impostate su 0.
Remarks
La finestra, insieme al viewport del contesto di dispositivo, definisce il modo in cui GDI esegue il mapping dei punti nel sistema di coordinate logico ai punti nel sistema di coordinate del dispositivo.
Quando vengono impostate le modalità di mapping seguenti, le chiamate a SetWindowExt e SetViewportExt le funzioni vengono ignorate:
MM_HIENGLISHMM_HIMETRICMM_LOENGLISHMM_LOMETRICMM_TEXTMM_TWIPS
Quando MM_ISOTROPIC la modalità è impostata, un'applicazione deve chiamare la SetWindowExt funzione membro prima di chiamare SetViewportExt.
Example
Vedere l'esempio per CView::OnPrepareDC.
CDC::SetWindowOrg
Imposta l'origine della finestra del contesto di dispositivo.
CPoint SetWindowOrg(
int x,
int y);
CPoint SetWindowOrg(POINT point);
Parameters
x
Specifica la coordinata x logica della nuova origine della finestra.
y
Specifica la coordinata y logica della nuova origine della finestra.
point
Specifica le coordinate logiche della nuova origine della finestra. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.
Return Value
Origine precedente della finestra come CPoint oggetto .
Remarks
La finestra, insieme al viewport del contesto di dispositivo, definisce il modo in cui GDI esegue il mapping dei punti nel sistema di coordinate logico ai punti nel sistema di coordinate del dispositivo.
L'origine della finestra contrassegna il punto nel sistema di coordinate logico da cui GDI esegue il mapping dell'origine del viewport, un punto nel sistema di coordinate del SetWindowOrg dispositivo specificato dalla funzione. GDI esegue il mapping di tutti gli altri punti seguendo lo stesso processo necessario per eseguire il mapping dell'origine della finestra all'origine del riquadro di visualizzazione. Ad esempio, tutti i punti in un cerchio intorno al punto in corrispondenza dell'origine della finestra saranno in un cerchio intorno al punto all'origine del riquadro di visualizzazione. Analogamente, tutti i punti di una riga che passano attraverso l'origine della finestra si trovano in una riga che passa attraverso l'origine del riquadro di visualizzazione.
CDC::SetWorldTransform
Imposta una trasformazione lineare bidimensionale tra lo spazio globale e lo spazio di pagina per il contesto di dispositivo specificato. Questa trasformazione può essere usata per ridimensionare, ruotare, taglio o tradurre l'output grafico.
BOOL SetWorldTransform(const XFORM& rXform);
Parameters
rXform
Riferimento a una XFORM struttura che contiene i dati di trasformazione.
Return Value
Restituisce un valore diverso da zero in caso di esito positivo.
Restituisce 0 in caso di errore.
Per ottenere informazioni estese sull'errore, chiamare GetLastError.
Remarks
Questo metodo esegue il wrapping della funzione SetWorldTransformGDI di Windows.
CDC::StartDoc
Informa il driver di dispositivo che viene avviato un nuovo processo di stampa e che tutte le chiamate successive StartPage e EndPage devono essere sottoposte a spooling nello stesso processo fino a quando non si verifica una EndDoc chiamata.
int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);
Parameters
lpDocInfo
Punta a una DOCINFO struttura contenente il nome del file di documento e il nome del file di output.
lpszDocName
Puntatore a una stringa contenente il nome del file di documento.
Return Value
Se la funzione ha esito positivo, il valore restituito è maggiore di zero. Questo valore è l'identificatore del processo di stampa per il documento.
Se la funzione ha esito negativo, il valore restituito è minore o uguale a zero.
Remarks
In questo modo, i documenti più lunghi di una pagina non verranno interspersi con altri processi.
Per Windows versioni 3.1 e successive, questa funzione sostituisce l'escape della STARTDOC stampante. L'uso di questa funzione garantisce che i documenti contenenti più pagine non vengano interpersi con altri processi di stampa.
StartDoc non deve essere usato all'interno di metafile.
Example
Questo frammento di codice ottiene la stampante predefinita, apre un processo di stampa e esegue lo spooling di una pagina con "Hello, World!" su di esso. Poiché il testo stampato da questo codice non viene ridimensionato alle unità logiche della stampante, il testo di output può essere in lettere così piccole che il risultato è illeggibile. Le funzioni di ridimensionamento CDC, ad esempio SetMapMode, SetViewportOrge SetWindowExt, possono essere usate per correggere il ridimensionamento.
void CDCView::DoStartDoc()
{
// get the default printer
CPrintDialog dlg(FALSE);
dlg.GetDefaults();
// is a default printer set up?
HDC hdcPrinter = dlg.GetPrinterDC();
if (hdcPrinter == NULL)
{
MessageBox(_T("Buy a printer!"));
}
else
{
// create a CDC and attach it to the default printer
CDC dcPrinter;
dcPrinter.Attach(hdcPrinter);
// call StartDoc() to begin printing
DOCINFO docinfo;
memset(&docinfo, 0, sizeof(docinfo));
docinfo.cbSize = sizeof(docinfo);
docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");
// if it fails, complain and exit gracefully
if (dcPrinter.StartDoc(&docinfo) < 0)
{
MessageBox(_T("Printer wouldn't initialize"));
}
else
{
// start a page
if (dcPrinter.StartPage() < 0)
{
MessageBox(_T("Could not start page"));
dcPrinter.AbortDoc();
}
else
{
// actually do some printing
CGdiObject *pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);
dcPrinter.TextOut(50, 50, _T("Hello World!"), 12);
dcPrinter.EndPage();
dcPrinter.EndDoc();
dcPrinter.SelectObject(pOldFont);
}
}
}
}
CDC::StartPage
Chiamare questa funzione membro per preparare il driver della stampante per ricevere i dati.
int StartPage();
Return Value
Maggiore o uguale a 0 se la funzione ha esito positivo o negativo se si è verificato un errore.
Remarks
StartPage sostituisce le NEWFRAMEBANDINFO e le escape.
Per una panoramica della sequenza di chiamate di stampa, vedere la StartDoc funzione membro.
Il sistema disabilita la ResetDC funzione membro tra le chiamate a StartPage e EndPage.
Example
Vedere l'esempio per CDC::StartDoc.
CDC::StretchBlt
Copia una bitmap da un rettangolo di origine in un rettangolo di destinazione, allungando o comprimendo la bitmap se necessario per adattarla alle dimensioni del rettangolo di destinazione.
BOOL StretchBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
DWORD dwRop);
Parameters
x
Specifica la coordinata x (in unità logiche) dell'angolo superiore sinistro del rettangolo di destinazione.
y
Specifica la coordinata y (in unità logiche) dell'angolo superiore sinistro del rettangolo di destinazione.
nWidth
Specifica la larghezza (in unità logiche) del rettangolo di destinazione.
nHeight
Specifica l'altezza (in unità logiche) del rettangolo di destinazione.
pSrcDC
Specifica il contesto del dispositivo di origine.
xSrc
Specifica la coordinata x (in unità logiche) dell'angolo superiore sinistro del rettangolo di origine.
ySrc
Specifica la coordinata y (in unità logiche) dell'angolo superiore sinistro del rettangolo di origine.
nSrcWidth
Specifica la larghezza (in unità logiche) del rettangolo di origine.
nSrcHeight
Specifica l'altezza (in unità logiche) del rettangolo di origine.
dwRop
Specifica l'operazione raster da eseguire. I codici dell'operazione raster definiscono in che modo GDI combina i colori nelle operazioni di output che includono un pennello corrente, una possibile bitmap di origine e una bitmap di destinazione. Il parametro può avere uno dei valori seguenti:
BLACKNESSTrasforma tutto l'output nero.DSTINVERTInverte la bitmap di destinazione.MERGECOPYCombina il modello e la bitmap di origine usando l'operatore AND booleano.MERGEPAINTCombina la bitmap di origine invertita con la bitmap di destinazione usando l'operatore OR booleano.NOTSRCCOPYCopia la bitmap di origine invertita nella destinazione.NOTSRCERASEInverte il risultato della combinazione delle bitmap di destinazione e di origine usando l'operatore OR booleano.PATCOPYCopia il modello nella bitmap di destinazione.PATINVERTCombina la bitmap di destinazione con il modello usando l'operatore XOR booleano.PATPAINTCombina la bitmap di origine invertita con il modello usando l'operatore OR booleano. Combina il risultato di questa operazione con la bitmap di destinazione usando l'operatore OR booleano.SRCANDCombina i pixel delle bitmap di destinazione e di origine usando l'operatore AND booleano.SRCCOPYCopia la bitmap di origine nella bitmap di destinazione.SRCERASEInverte la bitmap di destinazione e combina il risultato con la bitmap di origine usando l'operatore AND booleano.SRCINVERTCombina i pixel delle bitmap di destinazione e di origine usando l'operatore XOR booleano.SRCPAINTCombina i pixel delle bitmap di destinazione e di origine usando l'operatore OR booleano.WHITENESSAttiva tutto il bianco di output.
Return Value
Se la bitmap viene tracciata è diverso da zero; in caso contrario, 0.
Remarks
La funzione utilizza la modalità di adattamento del contesto del dispositivo di destinazione (impostata da SetStretchBltMode) per determinare come allungare o comprimere la bitmap.
La StretchBlt funzione sposta la bitmap dal dispositivo di origine specificato dal pSrcDC dispositivo di destinazione rappresentato dall'oggetto contesto dispositivo la cui funzione membro viene chiamata. I xSrcparametri , ySrcnSrcWidth, e nSrcHeight definiscono l'angolo superiore sinistro e le dimensioni del rettangolo di origine. I xparametri , ynWidth, e nHeight forniscono l'angolo superiore sinistro e le dimensioni del rettangolo di destinazione. L'operazione raster specificata da dwRop definisce la modalità di combinazione della bitmap di origine e dei bit già presenti nel dispositivo di destinazione.
La StretchBlt funzione crea un'immagine mirror di una bitmap se i segni dei nSrcWidth parametri e e e nWidthnSrcHeightnHeight sono diversi. Se nSrcWidth e nWidth hanno segni diversi, la funzione crea un'immagine speculare della bitmap lungo l'asse x. Se nSrcHeight e nHeight hanno segni diversi, la funzione crea un'immagine speculare della bitmap lungo l'asse y.
La funzione StretchBlt allunga o comprime la bitmap di origine in memoria, quindi copia il risultato nella destinazione. Se un criterio deve essere unito al risultato, non viene unito finché la bitmap di origine estesa non viene copiata nella destinazione. Se viene usato un pennello, è il pennello selezionato nel contesto del dispositivo di destinazione. Le coordinate di destinazione vengono trasformate in base al contesto del dispositivo di destinazione; le coordinate di origine vengono trasformate in base al contesto del dispositivo di origine.
Se le bitmap di destinazione, origine e motivo non hanno lo stesso formato di colore, StretchBlt converte le bitmap di origine e pattern in modo che corrispondano alle bitmap di destinazione. Nella conversione vengono utilizzati i colori di primo piano e di sfondo del contesto del dispositivo di destinazione.
Se StretchBlt deve convertire a colori una bitmap monocromatica, imposta i bit bianchi (1) sui bit del colore di sfondo e i bit neri (0) sul colore di primo piano. Per la conversione da colore a monocromatico, imposta i pixel corrispondenti al colore di sfondo sul bianco (1) e tutti gli altri pixel sul nero (0). Vengono utilizzati i colori di primo piano e di sfondo del contesto del dispositivo a colori.
Non tutti i dispositivi supportano la funzione StretchBlt. Per determinare se un dispositivo supporta StretchBlt, chiamare la GetDeviceCaps funzione membro con l'indice RASTERCAPS e controllare il valore restituito per il RC_STRETCHBLT flag.
CDC::StrokeAndFillPath
Chiude tutte le figure aperte in un tracciato, traccia il contorno del percorso utilizzando la penna corrente e riempie l'interno utilizzando il pennello corrente.
BOOL StrokeAndFillPath();
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il contesto del dispositivo deve contenere un percorso chiuso. La StrokeAndFillPath funzione membro ha lo stesso effetto di chiudere tutte le figure aperte nel percorso e di riempire il percorso separatamente, ad eccezione del fatto che l'area riempita non sovrapporrà l'area tracciata anche se la penna è larga.
CDC::StrokePath
Esegue il rendering del percorso specificato utilizzando la penna corrente.
BOOL StrokePath();
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Il contesto del dispositivo deve contenere un percorso chiuso.
CDC::TabbedTextOut
Chiamare questa funzione membro per scrivere una stringa di caratteri nella posizione specificata, espandendo le schede ai valori specificati nella matrice di posizioni tabulazioni.
virtual CSize TabbedTextOut(
int x,
int y,
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions,
int nTabOrigin);
CSize TabbedTextOut(
int x,
int y,
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions,
int nTabOrigin);
Parameters
x
Specifica la coordinata x logica del punto iniziale della stringa.
y
Specifica la coordinata y logica del punto iniziale della stringa.
lpszString
Punta alla stringa di caratteri da disegnare. È possibile passare un puntatore a una matrice di caratteri o a un CString oggetto per questo parametro.
nCount
Specifica la lunghezza della stringa a lpszStringcui punta .
nTabPositions
Specifica il numero di valori nella matrice di posizioni tabulazioni.
lpnTabStopPositions
Punta a una matrice contenente le posizioni tabulazioni (in unità logiche). Le tabulazioni devono essere ordinate in ordine crescente; il valore x più piccolo deve essere il primo elemento della matrice.
nTabOrigin
Specifica la coordinata x della posizione iniziale da cui vengono espanse le schede (in unità logiche).
str
Oggetto CString contenente i caratteri specificati.
Return Value
Dimensioni della stringa (in unità logiche) come CSize oggetto .
Remarks
Il testo viene scritto nel tipo di carattere attualmente selezionato. Se nTabPositions è 0 e lpnTabStopPositions è NULL, le schede vengono espanse fino a otto volte la larghezza media dei caratteri.
Se nTabPositions è 1, le tabulazioni sono separate dalla distanza specificata dal primo valore della lpnTabStopPositions matrice. Se la lpnTabStopPositions matrice contiene più di un valore, viene impostata una tabulazione per ogni valore nella matrice, fino al numero specificato da nTabPositions. Il nTabOrigin parametro consente a un'applicazione di chiamare la TabbedTextOut funzione più volte per una singola riga. Se l'applicazione chiama la funzione più di una volta con l'oggetto nTabOrigin impostato sullo stesso valore ogni volta, la funzione espande tutte le schede rispetto alla posizione specificata da nTabOrigin.
Per impostazione predefinita, la posizione corrente non viene usata o aggiornata dalla funzione. Se un'applicazione deve aggiornare la posizione corrente quando chiama la funzione, l'applicazione può chiamare la SetTextAlign funzione membro con nFlags impostato su TA_UPDATECP. Quando questo flag è impostato, Windows ignora i x parametri e y nelle chiamate successive a TabbedTextOut, usando invece la posizione corrente.
CDC::TextOut
Scrive una stringa di caratteri nella posizione specificata utilizzando il tipo di carattere attualmente selezionato.
virtual BOOL TextOut(
int x,
int y,
LPCTSTR lpszString,
int nCount);
BOOL TextOut(
int x,
int y,
const CString& str);
Parameters
x
Specifica la coordinata x logica del punto iniziale del testo.
y
Specifica la coordinata y logica del punto iniziale del testo.
lpszString
Punta alla stringa di caratteri da tracciare.
nCount
Specifica il numero di caratteri nella stringa.
str
Oggetto CString che contiene i caratteri da tracciare.
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Le origini del carattere si trovano nell'angolo superiore sinistro della cella del carattere. Per impostazione predefinita, la posizione corrente non viene usata o aggiornata dalla funzione.
Se un'applicazione deve aggiornare la posizione corrente quando chiama TextOut, l'applicazione può chiamare la SetTextAlign funzione membro con nFlags impostato su TA_UPDATECP. Quando questo flag è impostato, Windows ignora i x parametri e y nelle chiamate successive a TextOut, usando invece la posizione corrente.
Example
Vedere l'esempio per CDC::BeginPath.
CDC::TransparentBlt
Chiamare questa funzione membro per trasferire un blocco di bit dei dati di colore, che corrisponde a un rettangolo di pixel dal contesto di dispositivo di origine specificato, in un contesto di dispositivo di destinazione.
BOOL TransparentBlt(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
UINT clrTransparent);
Parameters
xDest
Specifica la coordinata x, in unità logiche, dell'angolo superiore sinistro del rettangolo di destinazione.
yDest
Specifica la coordinata y, in unità logiche, dell'angolo superiore sinistro del rettangolo di destinazione.
nDestWidth
Specifica la larghezza, in unità logiche, del rettangolo di destinazione.
nDestHeight
Specifica l'altezza, in unità logiche, del rettangolo di destinazione.
pSrcDC
Puntatore al contesto del dispositivo di origine.
xSrc
Specifica la coordinata x, in unità logiche, del rettangolo di origine.
ySrc
Specifica la coordinata y, in unità logiche, del rettangolo di origine.
nSrcWidth
Specifica la larghezza, in unità logiche, del rettangolo di origine.
nSrcHeight
Specifica l'altezza, in unità logiche, del rettangolo di origine.
clrTransparent
Colore RGB nella bitmap di origine da considerare trasparente.
Return Value
TRUE se l'esito è positivo; in caso contrario, FALSE.
Remarks
TransparentBlt consente la trasparenza; ovvero, il colore RGB indicato da clrTransparent viene reso trasparente per il trasferimento.
Per altre informazioni, vedere TransparentBlt in Windows SDK.
CDC::UpdateColors
Aggiorna l'area client del contesto di dispositivo associando i colori correnti nell'area client alla tavolozza del sistema in base a pixel per pixel.
void UpdateColors();
Remarks
Una finestra inattiva con una tavolozza logica realizzata può chiamare UpdateColors come alternativa per ridisegnare l'area client quando cambia la tavolozza del sistema.
Per altre informazioni sull'uso delle tavolozze dei colori, vedere UpdateColors in Windows SDK.
La UpdateColors funzione membro aggiorna in genere un'area client più veloce rispetto alla ridisegnazione dell'area. Tuttavia, poiché la funzione esegue la conversione dei colori in base al colore di ogni pixel prima della modifica della tavolozza di sistema, ogni chiamata a questa funzione comporta la perdita di un'accuratezza del colore.
CDC::WidenPath
Ridefinisce il percorso corrente come area che verrebbe disegnata se il percorso fosse tracciato utilizzando la penna attualmente selezionata nel contesto del dispositivo.
BOOL WidenPath();
Return Value
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Remarks
Questa funzione ha esito positivo solo se la penna corrente è una penna geometrica creata dalla seconda versione della CreatePen funzione membro o se la penna viene creata con la prima versione di CreatePen e ha una larghezza, in unità dispositivo, maggiore di 1. Il contesto del dispositivo deve contenere un percorso chiuso. Qualsiasi curva di Bzier nel percorso viene convertita in sequenze di linee rette che approssimano le curve ampliate. Di conseguenza, nessuna curva di Bzier rimane nel percorso dopo WidenPath la chiamata.
See also
CObject Classe
Hierarchy Chart
CPaintDC Classe
CWindowDC Classe
CClientDC Classe
CMetaFileDC Classe