Classe CDC
Definisce una classe di oggetti di un contesto di dispositivo.
Sintassi
class CDC : public CObject
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CDC::CDC |
Costruisce un oggetto CDC . |
Metodi pubblici
Nome | Descrizione |
---|---|
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. |
Operatori pubblici
Nome | Descrizione |
---|---|
CDC::operator HDC |
Recupera l'handle del contesto di dispositivo. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CDC::m_hAttribDC |
Contesto attributo-dispositivo utilizzato da questo CDC oggetto. |
CDC::m_hDC |
Contesto del dispositivo di output usato da questo CDC oggetto. |
Osservazioni:
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.
Nota
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_hDC
m_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à:
Usa m_hAttribDC | Usa m_hDC |
---|---|
GetTextExtent |
GetOutputTextExtent |
GetTabbedTextExtent |
GetOutputTabbedTextExtent |
GetTextMetrics |
GetOutputTextMetrics |
GetCharWidth |
GetOutputCharWidth |
Per altre informazioni su CDC
, vedere Contesti di dispositivo.
Gerarchia di ereditarietà
CDC
Requisiti
Intestazione: 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();
Valore restituito
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_ERROR
Errore generale.SP_OUTOFDISK
Spazio su disco insufficiente attualmente disponibile per lo spooling e non sarà più disponibile spazio.SP_OUTOFMEMORY
Memoria insufficiente per lo spooling.SP_USERABORT
L'utente ha terminato il processo tramite Gestione stampa.
Osservazioni:
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
NEWFRAME
chiamata 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.
Esempio
Vedere l'esempio per CDC::StartDoc
.
CDC::AbortPath
Chiude e rimuove tutti i percorsi nel contesto del dispositivo.
BOOL AbortPath();
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
nDataSize
Specifica la lunghezza in byte del buffer dei commenti.
pCommentData
Punta al buffer che contiene il commento.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
TRUE
se l'esito è positivo; in caso contrario, FALSE
.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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à.
Esempio
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
hDC
Contesto di dispositivo Windows.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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();
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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.
Esempio
// 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);
Parametri
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 dwRop
e le relative descrizioni, vedere BitBlt
in Windows SDK
Per un elenco completo dei codici di operazione raster, vedere Informazioni sui codici di operazione raster in Windows SDK.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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 AfxRegisterWndClass
globale .
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.
Esempio
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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
.
Esempio
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();
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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::GetDeviceCaps
membro .
Esempio
// 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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
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();
Valore restituito
Diverso da zero se la funzione è stata completata correttamente; in caso contrario, 0.
Osservazioni:
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
, CreateIC
o CreateCompatibleDC
.
Esempio
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 (hDC
s) 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();
Valore restituito
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;
Parametri
lpSize
Punta a una struttura o a un oggetto SIZE.CSize
Osservazioni:
Se la modalità di mapping dell'oggetto contesto di dispositivo è MM_LOENGLISH
, , MM_HIENGLISH
MM_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::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;
Parametri
lpPoints
Punta a una matrice di POINT
strutture o CPoint
oggetti.
nCount
Numero di punti nella matrice.
lpRect
Punta a una struttura o CRect
a un RECT
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 CSize
a un SIZE
oggetto .
Osservazioni:
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);
Parametri
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.
Osservazioni:
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
.
Esempio
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);
Parametri
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.
Osservazioni:
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);
Parametri
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.
Valore restituito
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);
Parametri
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.
Valore restituito
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.
Osservazioni:
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);
Parametri
lpRect
Punta a una RECT
struttura o a un CRect
oggetto che specifica le coordinate logiche del rettangolo da disegnare.
Osservazioni:
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.
Attenzione
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);
Parametri
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.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
In diversi casi, nState
dipende dal nType
parametro . L'elenco seguente mostra la relazione tra i quattro nType
valori e nState
:
DFC_BUTTON
DFCS_BUTTON3STATE
Pulsante a tre statiDFCS_BUTTONCHECK
Casella di controlloDFCS_BUTTONPUSH
PulsanteDFCS_BUTTONRADIO
Pulsante di opzioneDFCS_BUTTONRADIOIMAGE
Immagine per il pulsante di opzione (non è necessaria l'immagine)DFCS_BUTTONRADIOMASK
Maschera per il pulsante di opzione (nonsquare needs mask)
DFC_CAPTION
DFCS_CAPTIONCLOSE
Pulsante ChiudiDFCS_CAPTIONHELP
Pulsante ?DFCS_CAPTIONMAX
Pulsante IngrandisciDFCS_CAPTIONMIN
Pulsante Riduci a iconaDFCS_CAPTIONRESTORE
Pulsante Ripristina
DFC_MENU
DFCS_MENUARROW
Freccia sottomenuDFCS_MENUBULLET
PallottolaDFCS_MENUCHECK
Segno di spunta
DFC_SCROLL
DFCS_SCROLLCOMBOBOX
Barra di scorrimento casella combinataDFCS_SCROLLDOWN
Freccia giù della barra di scorrimentoDFCS_SCROLLLEFT
Freccia sinistra della barra di scorrimentoDFCS_SCROLLRIGHT
Freccia destra della barra di scorrimentoDFCS_SCROLLSIZEGRIP
Ridimensiona il grip nell'angolo inferiore destro della finestraDFCS_SCROLLUP
Freccia su della barra di scorrimento
Esempio
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione è stata completata correttamente; in caso contrario, 0.
Osservazioni:
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::LoadStandardIcon
o CWinApp::LoadOEMIcon
. È necessario selezionare la MM_TEXT
modalità di mapping prima di usare questa funzione.
Esempio
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.
Nota
Per tutti gli nFlag
stati ad eccezione DSS_NORMAL
di , 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);
Parametri
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 lpszText
cui 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.
Valore restituito
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);
Parametri
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 CRect
a un RECT
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):
Nota
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_INTERNAL
DT_NOCLIP
, e DT_NOPREFIX
non possono essere usati con il DT_TABSTOP
valore .
Valore restituito
Altezza del testo se la funzione ha esito positivo.
Osservazioni:
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);
Parametri
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 CRect
a un RECT
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 :
Nota
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_INTERNAL
DT_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
.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
Il centro dell'ellisse è il centro del rettangolo di delimitazione specificato da x1
, y1
x2
, e y2
o 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();
Valore restituito
Maggiore o uguale a 0 se la funzione ha esito positivo o negativo se si è verificato un errore.
Osservazioni:
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.
Esempio
Vedere l'esempio per CDC::StartDoc
.
CDC::EndPage
Informa il dispositivo che l'applicazione ha completato la scrittura in una pagina.
int EndPage();
Valore restituito
Maggiore o uguale a 0 se la funzione ha esito positivo o negativo se si è verificato un errore.
Osservazioni:
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.
Esempio
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();
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Esempio
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);
Parametri
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.
Valore restituito
Specifica l'ultimo valore restituito dalla funzione di callback. Il suo significato è definito dall'utente.
Osservazioni:
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 MakeProcInstance
Windows , 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.
Esempio
// 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);
Parametri
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 lpszInData
cui 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.
Valore restituito
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_ERROR
Errore generale.SP_OUTOFDISK
Spazio su disco insufficiente attualmente disponibile per lo spooling e non sarà più disponibile spazio.SP_OUTOFMEMORY
Memoria insufficiente per lo spooling.SP_USERABORT
L'utente ha terminato il processo tramite Gestione stampa.
Osservazioni:
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);
Parametri
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 .
Valore restituito
Specifica il tipo della nuova area di ritaglio. Può essere uno dei valori seguenti:
COMPLEXREGION
L'area ha bordi sovrapposti.ERROR
Nessuna area creata.NULLREGION
L'area è vuota.SIMPLEREGION
L'area non ha bordi sovrapposti.
Osservazioni:
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);
Parametri
pWnd
Punta all'oggetto finestra la cui finestra viene aggiornata.
Valore restituito
Tipo di area esclusa. Può essere uno dei valori seguenti:
COMPLEXREGION
L'area ha bordi sovrapposti.ERROR
Nessuna area creata.NULLREGION
L'area è vuota.SIMPLEREGION
L'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);
Parametri
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:
FLOODFILLBORDER
L'area di riempimento è delimitata dal colore specificato dacrColor
. Questo stile è identico al riempimento eseguito daFloodFill
.FLOODFILLSURFACE
L'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.
Valore restituito
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.
Osservazioni:
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);
Parametri
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_CLIPPED
Specifica che il testo viene ritagliato nel rettangolo.ETO_OPAQUE
Specifica che il colore di sfondo corrente riempie il rettangolo. È possibile impostare ed eseguire query sul colore di sfondo corrente con leSetBkColor
funzioni 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, [ lpDxWidths
i
] le unità logiche separano le origini della cella di caratteri e della cella i
i
di caratteri + 1. Se lpDxWidths
è NULL
, ExtTextOut
usa la spaziatura predefinita tra i caratteri.
str
Oggetto CString
contenente i caratteri specificati da disegnare.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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 lpDxWidths
cui 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();
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Osservazioni:
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 CreateHatchBrush
membro , CreatePatternBrush
e CreateSolidBrush
o 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 top
membri , bottom
, left
e right
del rettangolo specificato. Se bottom
è minore o uguale a oppure se right
è minore o uguale a top
left
, 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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
Il pennello deve essere creato usando le CBrush
funzioni CreateHatchBrush
membro , , CreateSolidBrush
CreatePatternBrush
o essere recuperato da GetStockObject
.
Esempio
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);
Parametri
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.
Osservazioni:
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
.
Nota
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();
Valore restituito
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);
Parametri
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.
Valore restituito
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 crColor
o il punto si trova all'esterno dell'area di ritaglio.
Osservazioni:
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);
Parametri
lpRect
Punta a una struttura o CRect
a un RECT
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.
Osservazioni:
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 top
o 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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Esempio
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);
Parametri
hDC
Contiene un handle per un contesto di dispositivo Windows.
Valore restituito
Il puntatore può essere temporaneo e non deve essere archiviato oltre l'uso immediato.
Osservazioni:
Se un CDC
oggetto non è collegato all'handle, viene creato e collegato un oggetto temporaneo CDC
.
Esempio
Vedere l'esempio per CPrintDialog::GetPrinterDC
.
CDC::GetArcDirection
Restituisce la direzione dell'arco corrente per il contesto di dispositivo.
int GetArcDirection() const;
Valore restituito
Specifica la direzione dell'arco corrente, se ha esito positivo. Di seguito sono riportati i valori restituiti validi:
AD_COUNTERCLOCKWISE
Archi e rettangoli disegnati in senso antiorario.AD_CLOCKWISE Arcs
e rettangoli disegnati in senso orario.
Se si verifica un errore, il valore restituito è zero.
Osservazioni:
Le funzioni arc e rettangolo usano la direzione dell'arco.
CDC::GetAspectRatioFilter
Recupera l'impostazione per il filtro delle proporzioni corrente.
CSize GetAspectRatioFilter() const;
Valore restituito
Oggetto CSize
che rappresenta le proporzioni utilizzate dal filtro delle proporzioni corrente.
Osservazioni:
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;
Valore restituito
Valore di colore RGB.
Osservazioni:
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;
Valore restituito
Modalità di sfondo corrente, che può essere OPAQUE
o TRANSPARENT
.
Osservazioni:
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);
Parametri
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_RESET
Forza la cancellazione del rettangolo di delimitazione dopo la restituzione.
Valore restituito
Specifica lo stato corrente del rettangolo di delimitazione se la funzione ha esito positivo. Può essere una combinazione dei valori seguenti:
DCB_ACCUMULATE
Si sta verificando l'accumulo del rettangolo di delimitazione.DCB_RESET
Il rettangolo di delimitazione è vuoto.DCB_SET
Il rettangolo di delimitazione non è vuoto.DCB_ENABLE
L'accumulo di delimitazione è attivo.DCB_DISABLE
L'accumulo di delimitazione è disattivato.
CDC::GetBrushOrg
Recupera l'origine (in unità dispositivo) del pennello attualmente selezionato per il contesto di dispositivo.
CPoint GetBrushOrg() const;
Valore restituito
Origine corrente del pennello (in unità dispositivo) come CPoint
oggetto .
Osservazioni:
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;
Parametri
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.
Valore restituito
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.
Osservazioni:
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;
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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;
Parametri
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 .
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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;
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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 lpBuffer
cui 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;
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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;
Parametri
lpRect
Punta alla struttura o CRect
all'oggetto RECT
che deve ricevere le dimensioni del rettangolo.
Valore restituito
Tipo dell'area di ritaglio. Può essere uno dei valori seguenti:
COMPLEXREGION
L'area di ritaglio presenta bordi sovrapposti.ERROR
Il contesto del dispositivo non è valido.NULLREGION
L'area di ritaglio è vuota.SIMPLEREGION
L'area di ritaglio non ha bordi sovrapposti.
Osservazioni:
Le dimensioni vengono copiate nel buffer a lpRect
cui punta .
CDC::GetColorAdjustment
Recupera i valori di regolazione del colore per il contesto di dispositivo.
BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
Parametri
lpColorAdjust
Punta a una COLORADJUSTMENT
struttura di dati per ricevere i valori di regolazione del colore.
Valore restituito
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;
Valore restituito
Puntatore a un CBitmap
oggetto, se ha esito positivo; in caso contrario NULL
, .
Osservazioni:
Questa funzione membro può restituire oggetti temporanei.
CDC::GetCurrentBrush
Restituisce un puntatore all'oggetto attualmente selezionato CBrush
.
CBrush* GetCurrentBrush() const;
Valore restituito
Puntatore a un CBrush
oggetto, se ha esito positivo; in caso contrario NULL
, .
Osservazioni:
Questa funzione membro può restituire oggetti temporanei.
CDC::GetCurrentFont
Restituisce un puntatore all'oggetto attualmente selezionato CFont
.
CFont* GetCurrentFont() const;
Valore restituito
Puntatore a un CFont
oggetto, se ha esito positivo; in caso contrario NULL
, .
Osservazioni:
Questa funzione membro può restituire oggetti temporanei.
CDC::GetCurrentPalette
Restituisce un puntatore all'oggetto attualmente selezionato CPalette
.
CPalette* GetCurrentPalette() const;
Valore restituito
Puntatore a un CPalette
oggetto, se ha esito positivo; in caso contrario NULL
, .
Osservazioni:
Questa funzione membro può restituire oggetti temporanei.
CDC::GetCurrentPen
Restituisce un puntatore all'oggetto attualmente selezionato CPen
.
CPen* GetCurrentPen() const;
Valore restituito
Puntatore a un CPen
oggetto, se ha esito positivo; in caso contrario NULL
, .
Osservazioni:
Questa funzione membro può restituire oggetti temporanei.
CDC::GetCurrentPosition
Recupera la posizione corrente (in coordinate logiche).
CPoint GetCurrentPosition() const;
Valore restituito
Posizione corrente come CPoint
oggetto .
Osservazioni:
La posizione corrente può essere impostata con la MoveTo
funzione membro.
CDC::GetDCBrushColor
Recupera il colore corrente del pennello.
COLORREF GetDCBrushColor() const;
Valore restituito
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
.
Osservazioni:
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;
Valore restituito
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
.
Osservazioni:
Questa funzione membro usa la funzione GetDCPenColor
Win32 , 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;
Parametri
nIndex
Specifica il tipo di informazioni da restituire. Per un elenco di valori, vedere GetDeviceCaps
in Windows SDK.
Valore restituito
Valore della funzionalità richiesta se la funzione ha esito positivo.
Esempio
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;
Parametri
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 .
Valore restituito
Specifica il numero di byte restituiti nel buffer a lpData
cui punta se la funzione ha esito positivo; in caso contrario, -1.
Osservazioni:
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 dwTable
parametri , dwOffset
e 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;
Valore restituito
Il valore restituito identifica le caratteristiche del tipo di carattere attualmente selezionato. Per un elenco completo dei valori possibili, vedere GetFontLanguageInfo
.
Osservazioni:
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;
Parametri
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:
Valore | Significato |
---|---|
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
.
Valore restituito
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.
Osservazioni:
Un'applicazione può ruotare i caratteri recuperati in formato bitmap specificando una matrice di trasformazione 2 by-2 nella struttura a lpmat2
cui 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;
Valore restituito
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
.
Osservazioni:
Questo metodo esegue il wrapping della funzione GetGraphicsMode
GDI di Windows.
CDC::GetHalftoneBrush
Chiamare questa funzione membro per recuperare un pennello halftone.
static CBrush* PASCAL GetHalftoneBrush();
Valore restituito
Puntatore a un CBrush
oggetto se ha esito positivo; in caso contrario NULL
, .
Osservazioni:
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;
Parametri
nPairs
Specifica il numero di KERNINGPAIR
strutture a lpkrnpair
cui 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.
Valore restituito
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;
Valore restituito
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
.
Osservazioni:
Il layout predefinito è da sinistra a destra.
CDC::GetMapMode
Recupera la modalità di mapping corrente.
int GetMapMode() const;
Valore restituito
Modalità di mapping.
Osservazioni:
Per una descrizione delle modalità di mapping, vedere la SetMapMode
funzione membro.
Nota
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;
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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;
Parametri
crColor
Specifica il colore da associare.
Valore restituito
Valore di colore RGB (rosso, verde, blu) che definisce il colore a tinta unita più vicino al crColor
valore che il dispositivo può rappresentare.
Osservazioni:
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;
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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_hDC
e 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;
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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 lpBuffer
cui 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;
Parametri
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 lpszString
cui punta .
nTabPositions
Specifica il numero di posizioni tabulazioni nella matrice a lpnTabStopPositions
cui 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.
Valore restituito
Dimensioni della stringa (in unità logiche) in un CSize
oggetto .
Osservazioni:
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_hDC
e 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;
Parametri
lpszString
Punta a una stringa di caratteri. È anche possibile passare un CString
oggetto per questo parametro.
nCount
Specifica la lunghezza della stringa a lpszString
cui punta .
str
Oggetto CString
contenente i caratteri specificati da misurare.
Valore restituito
Dimensioni della stringa (in unità logiche) restituite in un CSize
oggetto .
Osservazioni:
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;
Parametri
lpMetrics
Punta alla TEXTMETRIC
struttura che riceve le metriche.
Valore restituito
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;
Parametri
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_MOVETO
Specifica che il punto corrispondente inlpPoints
inizia una figura non contigua.PT_LINETO
Specifica che il punto precedente e il punto corrispondente inlpPoints
sono gli endpoint di una riga.PT_BEZIERTO
Specifica 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_CLOSEFIGURE
Specifica 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_MOVETO
oggetto .
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.
Valore restituito
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.
Osservazioni:
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 GetPath
di , per convertire tutte le curve nel percorso in segmenti di linea.
Esempio
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;
Parametri
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.
Valore restituito
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.
Osservazioni:
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;
Valore restituito
Modalità con riempimento poligono corrente o ALTERNATE
WINDING
, se la funzione ha esito positivo.
Osservazioni:
Per una descrizione delle modalità di riempimento poligono, vedere la SetPolyFillMode
funzione membro.
CDC::GetROP2
Recupera la modalità di disegno corrente.
int GetROP2() const;
Valore restituito
Modalità di disegno. Per un elenco dei valori della modalità disegno, vedere la SetROP2
funzione membro.
Osservazioni:
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;
Valore restituito
Handle del contesto di dispositivo.
Osservazioni:
Questa funzione membro funziona anche con puntatori Null.
CDC::GetStretchBltMode
Recupera la modalità di estensione bitmap corrente.
int GetStretchBltMode() const;
Valore restituito
Il valore restituito specifica la modalità di estensione bitmap corrente , STRETCH_ANDSCANS
, STRETCH_DELETESCANS
o STRETCH_ORSCANS
, se la funzione ha esito positivo.
Osservazioni:
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;
Parametri
lpszString
Punta a una stringa di caratteri. È anche possibile passare un CString
oggetto per questo parametro.
nCount
Specifica la lunghezza della stringa a lpszString
cui punta .
nTabPositions
Specifica il numero di posizioni tabulazioni nella matrice a lpnTabStopPositions
cui 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.
Valore restituito
Dimensioni della stringa (in unità logiche) in un CSize
oggetto .
Osservazioni:
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;
Valore restituito
Stato dei flag di allineamento del testo. Il valore restituito è uno o più dei valori seguenti:
TA_BASELINE
Specifica l'allineamento dell'asse x e la linea di base del tipo di carattere scelto all'interno del rettangolo di delimitazione.TA_BOTTOM
Specifica l'allineamento dell'asse x e della parte inferiore del rettangolo di delimitazione.TA_CENTER
Specifica l'allineamento dell'asse y e del centro del rettangolo di delimitazione.TA_LEFT
Specifica l'allineamento dell'asse y e del lato sinistro del rettangolo di delimitazione.TA_NOUPDATECP
Specifica che la posizione corrente non viene aggiornata.TA_RIGHT
Specifica l'allineamento dell'asse y e del lato destro del rettangolo di delimitazione.TA_TOP
Specifica l'allineamento dell'asse x e della parte superiore del rettangolo di delimitazione.TA_UPDATECP
Specifica che la posizione corrente viene aggiornata.
Osservazioni:
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_CENTER
eTA_RIGHT
TA_BASELINE
,TA_BOTTOM
eTA_TOP
TA_NOUPDATECP
eTA_UPDATECP
Applicare l'operatore AND bit per bit (
&
) C++ al risultato e al valore restituito diGetTextAlign
.Verificare l'uguaglianza di questo risultato e il flag.
CDC::GetTextCharacterExtra
Recupera l'impostazione corrente per la quantità di spaziatura intercaracter.
int GetTextCharacterExtra() const;
Valore restituito
Quantità della spaziatura intercaracter.
Osservazioni:
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;
Valore restituito
Colore del testo corrente come valore di colore RGB.
Osservazioni:
Il colore del testo è il colore di primo piano dei caratteri disegnati usando le funzioni TextOut
membro di output di testo GDI , ExtTextOut
e 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;
Parametri
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.
Valore restituito
Dimensioni della stringa (in unità logiche) in un CSize
oggetto .
Osservazioni:
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;
Parametri
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 pgiIn
cui 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
.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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;
Parametri
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 pgiIn
cui 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
.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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;
Parametri
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
.
Valore restituito
Numero di byte copiati nel buffer, senza includere il carattere Null di terminazione. È 0 se si verifica un errore.
Osservazioni:
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;
Parametri
lpMetrics
Punta alla TEXTMETRIC
struttura che riceve le metriche.
Valore restituito
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;
Valore restituito
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;
Valore restituito
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;
Valore restituito
Puntatore a un CWnd
oggetto se ha esito positivo; in caso contrario NULL
, .
Osservazioni:
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;
Valore restituito
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;
Valore restituito
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;
Parametri
rXform
Riferimento a una XFORM
struttura che riceve la trasformazione dello spazio globale corrente nello spazio delle pagine.
Valore restituito
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
.
Osservazioni:
Questo metodo esegue il wrapping della funzione GetWorldTransform
GDI 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);
Parametri
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.
Valore restituito
TRUE
se l'esito è positivo; in caso contrario, FALSE
.
Osservazioni:
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);
Parametri
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.
Valore restituito
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.
Osservazioni:
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;
Parametri
lpSize
Punta a una struttura o CSize
a un SIZE
oggetto .
Osservazioni:
Se la modalità di mapping dell'oggetto contesto di dispositivo è MM_LOENGLISH
, MM_HIENGLISH
MM_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;
Parametri
lpSize
Punta a una struttura o CSize
a un SIZE
oggetto .
Osservazioni:
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
, y1
x2
, e y2
.
int IntersectClipRect(
int x1,
int y1,
int x2,
int y2);
int IntersectClipRect(LPCRECT lpRect);
Parametri
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.
Valore restituito
Tipo della nuova area di ritaglio. Può essere uno dei valori seguenti:
COMPLEXREGION
La nuova area di ritaglio ha bordi sovrapposti.ERROR
Il contesto del dispositivo non è valido.NULLREGION
La nuova area di ritaglio è vuota.SIMPLEREGION
La nuova area di ritaglio non presenta bordi sovrapposti.
Osservazioni:
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);
Parametri
lpRect
Punta a un RECT
oggetto contenente le coordinate logiche del rettangolo da invertire. È anche possibile passare un CRect
oggetto per questo parametro.
Osservazioni:
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.
Esempio
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);
Parametri
pRgn
Identifica l'area da invertire. Le coordinate per l'area vengono specificate in unità logiche.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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;
Valore restituito
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);
Parametri
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.
Valore restituito
Diverso da zero se la linea viene disegnata; in caso contrario, 0.
Osservazioni:
La linea viene disegnata con la penna selezionata. La posizione corrente è impostata su x
o y
su point
.
Esempio
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;
Parametri
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 .
Osservazioni:
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;
Parametri
lpSize
Punta a una SIZE
struttura o a un CSize
oggetto .
Osservazioni:
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;
Osservazioni:
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;
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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
.
Valore restituito
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
.
Osservazioni:
Questo metodo esegue il wrapping della funzione ModifyWorldTransform
GDI 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);
Parametri
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.
Valore restituito
Coordinate x e y della posizione precedente come CPoint
oggetto .
Esempio
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);
Parametri
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.
Valore restituito
Tipo della nuova area. Può essere uno dei valori seguenti:
COMPLEXREGION
L'area di ritaglio presenta bordi sovrapposti.ERROR
Il contesto del dispositivo non è valido.NULLREGION
L'area di ritaglio è vuota.SIMPLEREGION
L'area di ritaglio non ha bordi sovrapposti.
Osservazioni:
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);
Parametri
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.
Valore restituito
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);
Parametri
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.
Valore restituito
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;
Valore restituito
In caso di esito positivo, l'handle dell'oggetto contesto di dispositivo; in caso contrario, NULL
.
Osservazioni:
È 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);
Parametri
pRgn
Identifica l'area da riempire. Le coordinate per l'area specificata vengono specificate in unità logiche.
Valore restituito
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);
Parametri
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:
PATCOPY
Copia il modello nella bitmap di destinazione.PATINVERT
Combina la bitmap di destinazione con il modello usando l'operatore XOR booleano (^
).DSTINVERT
Inverte la bitmap di destinazione.BLACKNESS
Trasforma tutto l'output nero.WHITENESS
Attiva tutto il bianco di output.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
Il centro dell'arco è il centro del rettangolo di delimitazione specificato da x1
, x2
y1
, e y2
(o da lpRect
). I punti iniziali e finali dell'arco vengono specificati da x3
, y3
, x4
e 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 y4
a , 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à.
Esempio
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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.
Esempio
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);
Parametri
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_MOVETO
Specifica che questo punto inizia una figura non contigua. Questo punto diventa la nuova posizione corrente.PT_LINETO
Specifica che una linea deve essere disegnata dalla posizione corrente a questo punto, che diventa quindi la nuova posizione corrente.PT_BEZIERTO
Specifica 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_CLOSEFIGURE
Specifica che la figura viene chiusa automaticamente dopo il completamento delPT_LINETO
tipo oPT_BEZIERTO
per questo punto. Una linea viene disegnata da questo punto al punto oMoveTo
più recentePT_MOVETO
.Questo flag viene combinato con il
PT_LINETO
tipo per una riga o con ilPT_BEZIERTO
tipo 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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
Questa funzione può essere usata per disegnare figure non contigue al posto di chiamate consecutive alle CDC::MoveTo
funzioni membro , CDC::LineTo
e 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::LineTo
o CDC::BezierTo
. È anche possibile chiudere le figure. Questa funzione aggiorna la posizione corrente.
Esempio
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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
.
Esempio
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
lpPoints
Punta a una matrice di strutture di POINT
dati che contiene i vertici della linea.
nCount
Specifica il numero di punti nella matrice.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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;
Parametri
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.
Valore restituito
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;
Valore restituito
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();
Valore restituito
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.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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à.
Esempio
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;
Parametri
lpRect
Punta a una RECT
struttura o a un CRect
oggetto che contiene le coordinate logiche del rettangolo specificato.
Valore restituito
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();
Osservazioni:
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();
Osservazioni:
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);
Parametri
lpDevMode
Puntatore a una struttura di Windows DEVMODE
.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se il contesto specificato è stato ripristinato; in caso contrario, 0.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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à.
Esempio
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();
Valore restituito
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
.
Osservazioni:
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);
Parametri
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.
Valore restituito
Gli extent del riquadro di visualizzazione precedenti (in unità dispositivo) come CSize
oggetto .
Osservazioni:
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);
Parametri
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.
Valore restituito
Gli extent della finestra precedente (in unità logiche) come CSize
oggetto .
Osservazioni:
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);
Parametri
dx
Specifica il numero di unità di scorrimento orizzontali.
dy
Specifica il numero di unità di scorrimento verticali.
lpRectScroll
Punta alla struttura o CRect
all'oggetto RECT
che contiene le coordinate del rettangolo di scorrimento.
lpRectClip
Punta alla struttura o CRect
all'oggetto RECT
che contiene le coordinate del rettangolo di ritaglio. Quando questo rettangolo è inferiore a quello originale a lpRectScroll
cui 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 CRect
all'oggetto RECT
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.
Valore restituito
Diverso da zero se viene eseguito lo scorrimento; in caso contrario, 0.
Osservazioni:
Se lpRectUpdate
è NULL
, Windows non calcola il rettangolo di aggiornamento. Se e pRgnUpdate
lpRectUpdate
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);
Parametri
nMode
Specifica il modo di utilizzare il percorso. Sono consentiti i valori seguenti:
RGN_AND
La nuova area di ritaglio include l'intersezione (aree sovrapposte) dell'area di ritaglio corrente e il percorso corrente.RGN_COPY
La nuova area di ritaglio è il percorso corrente.RGN_DIFF
La nuova area di ritaglio include le aree dell'area di ritaglio corrente e quelle del percorso corrente vengono escluse.RGN_OR
La nuova area di ritaglio include l'unione (aree combinate) dell'area di ritaglio corrente e il percorso corrente.RGN_XOR
La nuova area di ritaglio include l'unione dell'area di ritaglio corrente e del percorso corrente, ma senza le aree sovrapposte.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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
NULL
solo quando viene specificata laRGN_COPY
modalità .
nMode
Specifica l'operazione da eseguire. Deve essere uno dei valori seguenti:
RGN_AND
La nuova area di ritaglio combina le aree sovrapposte dell'area di ritaglio corrente e l'area identificata dapRgn
.RGN_COPY
La 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_DIFF
La nuova area di ritaglio combina le aree dell'area di ritaglio corrente con quelle escluse dall'area identificata dapRgn
.RGN_OR
La nuova area di ritaglio combina l'area di ritaglio corrente e l'area identificata dapRgn
.RGN_XOR
La nuova area di ritaglio combina l'area di ritaglio corrente e l'area identificata dapRgn
ma esclude eventuali aree sovrapposte.
Valore restituito
Tipo dell'area. Può essere uno dei valori seguenti:
COMPLEXREGION
La nuova area di ritaglio ha bordi sovrapposti.ERROR
Il contesto di dispositivo o l'area non è valido.NULLREGION
La nuova area di ritaglio è vuota.SIMPLEREGION
La nuova area di ritaglio non presenta bordi sovrapposti.
Osservazioni:
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);
Parametri
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.
Valore restituito
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:
COMPLEXREGION
La nuova area di ritaglio ha bordi sovrapposti.ERROR
Il contesto di dispositivo o l'area non è valido.NULLREGION
La nuova area di ritaglio è vuota.SIMPLEREGION
La nuova area di ritaglio non presenta bordi sovrapposti.
Osservazioni:
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);
Parametri
pPalette
Identifica la tavolozza logica da selezionare. Questa tavolozza deve essere già stata creata con la CPalette
funzione CreatePalette
membro .
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.
Valore restituito
Puntatore a un CPalette
oggetto che identifica la tavolozza logica sostituita dalla tavolozza specificata da pPalette
. NULL
È se si verifica un errore.
Osservazioni:
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);
Parametri
nIndex
Specifica il tipo di oggetto stock desiderato. Può essere uno dei valori seguenti:
BLACK_BRUSH
Pennello nero.DKGRAY_BRUSH
Pennello grigio scuro.GRAY_BRUSH
Pennello grigio.HOLLOW_BRUSH
Pennello vuoto.LTGRAY_BRUSH
Pennello grigio chiaro.NULL_BRUSH
Pennello Null.WHITE_BRUSH
Pennello bianco.BLACK_PEN
Penna nera.NULL_PEN
Penna Null.WHITE_PEN
Penna bianca.ANSI_FIXED_FONT
Tipo di carattere di sistema FISSO ANSI.ANSI_VAR_FONT
Tipo di carattere del sistema di variabili ANSI.DEVICE_DEFAULT_FONT
Tipo di carattere dipendente dal dispositivo.OEM_FIXED_FONT
Tipo di carattere fisso dipendente dall'OEM.SYSTEM_FONT
Tipo 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_FONT
per ottenere il tipo di carattere usato da finestre e finestre di dialogo. Usare invece laSystemParametersInfo
funzione con ilSPI_GETNONCLIENTMETRICS
parametro per recuperare il tipo di carattere corrente.SystemParametersInfo
tiene conto del tema corrente e fornisce informazioni sul carattere per didascalie, menu e dialoghi di messaggio.SYSTEM_FIXED_FONT
Tipo 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_PALETTE
Tavolozza dei colori predefinita. Questa tavolozza è costituita dai 20 colori statici nella tavolozza del sistema.
Valore restituito
Puntatore all'oggetto CGdiObject
sostituito se la funzione ha esito positivo. L'oggetto effettivo a cui punta è un CPen
oggetto , CBrush
o 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));
Parametri
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
.
Valore restituito
Specifica il risultato della SetAbortProc
funzione. Alcuni dei valori seguenti sono più probabili di altri, ma tutti sono possibili.
SP_ERROR
Errore generale.SP_OUTOFDISK
Spazio su disco insufficiente attualmente disponibile per lo spooling e non sarà più disponibile spazio.SP_OUTOFMEMORY
Memoria insufficiente per lo spooling.SP_USERABORT
L'utente ha terminato il processo tramite Gestione stampa.
Osservazioni:
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);
Parametri
nArcDirection
Specifica la nuova direzione dell'arco. Questo parametro può essere uno dei valori seguenti:
AD_COUNTERCLOCKWISE
Figure disegnate in senso antiorario.AD_CLOCKWISE
Figure disegnate in senso orario.
Valore restituito
Specifica la direzione dell'arco precedente, se ha esito positivo; in caso contrario, 0.
Osservazioni:
La direzione predefinita è antiorario. La SetArcDirection
funzione specifica la direzione in cui disegnare le funzioni seguenti:
Arc | Torta |
---|---|
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);
Parametri
hDC
Contesto di dispositivo Windows.
Osservazioni:
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);
Parametri
crColor
Specifica il nuovo colore di sfondo.
Valore restituito
Colore di sfondo precedente come valore di colore RGB. Se si verifica un errore, il valore restituito viene 0x80000000.
Osservazioni:
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);
Parametri
nBkMode
Specifica la modalità da impostare. Questo parametro può essere uno dei valori seguenti:
OPAQUE
Lo 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.TRANSPARENT
Lo sfondo non viene modificato prima del disegno.
Valore restituito
Modalità di sfondo precedente.
Osservazioni:
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.
Esempio
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);
Parametri
lpRectBounds
Punta a una struttura o CRect
a un RECT
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_ACCUMULATE
Aggiungere il rettangolo specificato dalpRectBounds
al rettangolo di delimitazione (usando un'operazione di unione rettangolo).DCB_DISABLE
Disattivare l'accumulo dei limiti.DCB_ENABLE
Attivare l'accumulo di limiti. L'impostazione predefinita per l'accumulo dei limiti è disabilitata.
Valore restituito
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_ACCUMULATE
Il rettangolo di delimitazione non è vuoto. Questo valore verrà sempre impostato.DCB_DISABLE
L'accumulo di limiti è disattivato.DCB_ENABLE
L'accumulo dei limiti è attivo.
Osservazioni:
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);
Parametri
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.
Valore restituito
Origine precedente del pennello nelle unità dispositivo.
Osservazioni:
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 SetBrushOrg
la 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);
Parametri
lpColorAdjust
Punta a una COLORADJUSTMENT
struttura di dati contenente i valori di regolazione del colore.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
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 HALFTONE
viene impostata la CDC::StretchBlt
modalità.
CDC::SetDCBrushColor
Imposta il colore del pennello del contesto di dispositivo corrente sul valore di colore specificato.
COLORREF SetDCBrushColor(COLORREF crColor);
Parametri
crColor
Specifica il nuovo colore del pennello.
Valore restituito
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
.
Osservazioni:
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);
Parametri
crColor
Specifica il nuovo colore della penna.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
Questa funzione membro usa la funzione SetDCPenColor
Win32 , come descritto in Windows SDK.
CDC::SetGraphicsMode
Imposta la modalità grafica per il contesto di dispositivo specificato.
int SetGraphicsMode(int iMode);
Parametri
iMode
Specifica la modalità grafica. Per un elenco dei valori che questo parametro può accettare, vedere SetGraphicsMode
.
Valore restituito
Restituisce la modalità grafica precedente in caso di esito positivo.
Restituisce 0 in caso di errore. Per ottenere informazioni estese sull'errore, chiamare GetLastError
.
Osservazioni:
Questo metodo esegue il wrapping della funzione SetGraphicsMode
GDI 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);
Parametri
dwLayout
Layout del contesto di dispositivo e flag di controllo bitmap. Può essere una combinazione dei valori seguenti.
Valore | Significato |
---|---|
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. |
Valore restituito
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
.
Osservazioni:
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_RTLREADING
ad 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);
Parametri
nMapMode
Specifica la nuova modalità di mapping. Può essere uno dei valori seguenti:
MM_ANISOTROPIC
Le unità logiche vengono convertite in unità arbitrarie con assi scalati in modo arbitrario. L'impostazione della modalità di mapping suMM_ANISOTROPIC
non modifica le impostazioni correnti della finestra o del riquadro di visualizzazione. Per modificare le unità, l'orientamento e il ridimensionamento, chiamare leSetWindowExt
funzioni membro eSetViewportExt
.MM_HIENGLISH
Ogni unità logica viene convertita in 0,001 pollici. Positivo x è a destra; positivo y è in su.MM_HIMETRIC
Ogni unità logica viene convertita in 0,01 millimetri. Positivo x è a destra; positivo y è in su.MM_ISOTROPIC
Le 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 leSetWindowExt
funzioni membro eSetViewportExt
per 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_LOENGLISH
Ogni unità logica viene convertita in 0,01 pollici. Positivo x è a destra; positivo y è in su.MM_LOMETRIC
Ogni unità logica viene convertita in 0,1 millimetri. Positivo x è a destra; positivo y è in su.MM_TEXT
Ogni unità logica viene convertita in 1 pixel del dispositivo. Positivo x è a destra; positivo y è giù.MM_TWIPS
Ogni 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.
Valore restituito
Modalità di mapping precedente.
Osservazioni:
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_HIENGLISH
modalità , MM_LOENGLISH
MM_HIMETRIC
, 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.
Nota
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
.
Esempio
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);
Parametri
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.
Valore restituito
Valore precedente del flag font-mapper.
Osservazioni:
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);
Parametri
fMiterLimit
Specifica il nuovo limite di miter per il contesto di dispositivo.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
hDC
Contesto di dispositivo Windows.
Osservazioni:
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);
Parametri
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.
Valore restituito
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.
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
nPolyFillMode
Specifica la nuova modalità di riempimento. Questo valore può essere ALTERNATE
o WINDING
. La modalità predefinita impostata in Windows è ALTERNATE
.
Valore restituito
La modalità di riempimento precedente, se ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
nDrawMode
Specifica la nuova modalità di disegno. Può essere uno dei valori seguenti:
R2_BLACK
Pixel è sempre nero.R2_WHITE
Il pixel è sempre bianco.R2_NOP
Il pixel rimane invariato.R2_NOT
Pixel è l'inverso del colore dello schermo.R2_COPYPEN
Pixel è il colore della penna.R2_NOTCOPYPEN
Pixel è l'inverso del colore della penna.R2_MERGEPENNOT
Pixel è una combinazione del colore della penna e dell'inversa del colore dello schermo (pixel finale = (~
pixel schermo)|
penna).R2_MASKPENNOT
Pixel è una combinazione dei colori comuni sia alla penna che all'inversa della penna (pixel finale = (~
pixel dello schermo).&
R2_MERGENOTPEN
Pixel è una combinazione del colore dello schermo e dell'inverso del colore della penna (pixel finale = (~
penna)|
del pixel dello schermo.R2_MASKNOTPEN
Pixel è una combinazione dei colori comuni sia allo schermo che all'inverso del pixel della penna (pixel finale = (~
penna).&
R2_MERGEPEN
Pixel è una combinazione del colore della penna e del colore dello schermo (pixel finale = pixel dello schermo della penna|
).R2_NOTMERGEPEN
Pixel è l'inverso delR2_MERGEPEN
colore (pixel finale =~
(pixel dello schermo della penna|
)).R2_MASKPEN
Pixel è una combinazione dei colori comuni sia alla penna che allo schermo (pixel finale = pixel dello schermo della penna&
).R2_NOTMASKPEN
Pixel è l'inverso delR2_MASKPEN
colore (pixel finale =~
(pixel dello schermo della penna&
)).R2_XORPEN
Pixel è una combinazione dei colori presenti nella penna o nello schermo, ma non in entrambi (pixel finale =^
pixel penna pixel).R2_NOTXORPEN
Pixel è l'inverso delR2_XORPEN
colore (pixel finale =~
(pixel dello schermo della penna^
)).
Valore restituito
Modalità di disegno precedente.
Può essere uno dei valori specificati in Windows SDK.
Osservazioni:
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);
Parametri
nStretchMode
Specifica la modalità di estensione. Può essere uno dei valori seguenti:
valore | Descrizione |
---|---|
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. |
Valore restituito
Modalità di estensione precedente. Può essere STRETCH_ANDSCANS
, STRETCH_DELETESCANS
o STRETCH_ORSCANS
.
Osservazioni:
La modalità di estensione bitmap definisce il modo in cui le informazioni vengono rimosse dalle bitmap compresse tramite la funzione .
Le BLACKONWHITE
modalità (STRETCH_ANDSCANS
) e WHITEONBLACK
(STRETCH_ORSCANS
) vengono in genere usate per mantenere i pixel di primo piano nelle bitmap monocromatiche. La COLORONCOLOR
modalità (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);
Parametri
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_CENTER
Allinea il punto al centro orizzontale del rettangolo di delimitazione.TA_LEFT
Allinea il punto al lato sinistro del rettangolo di delimitazione. Si tratta dell'impostazione predefinita.TA_RIGHT
Allinea il punto al lato destro del rettangolo di delimitazione.
La seconda categoria influisce sull'allineamento del testo nella direzione y:
TA_BASELINE
Allinea il punto alla linea di base del tipo di carattere scelto.TA_BOTTOM
Allinea il punto alla parte inferiore del rettangolo di delimitazione.TA_TOP
Allinea 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_NOUPDATECP
Non aggiorna la posizione corrente dopo ogni chiamata a una funzione di output di testo. Si tratta dell'impostazione predefinita.TA_UPDATECP
Aggiorna 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 allaTextOut
funzione membro vengono ignorate.
Valore restituito
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.
Osservazioni:
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);
Parametri
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.
Valore restituito
Quantità della spaziatura intercaracter precedente.
Osservazioni:
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);
Parametri
crColor
Specifica il colore del testo come valore di colore RGB.
Valore restituito
Valore RGB per il colore del testo precedente.
Osservazioni:
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
.
Esempio
Vedere l'esempio per CWnd::OnCtlColor
.
CDC::SetTextJustification
Aggiunge spazio ai caratteri di interruzione in una stringa.
int SetTextJustification(
int nBreakExtra,
int nBreakCount);
Parametri
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.
Valore restituito
Uno se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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).
Valore restituito
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.
Osservazioni:
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
.
Esempio
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);
Parametri
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.
Valore restituito
Origine precedente del riquadro di visualizzazione (nelle coordinate del dispositivo) come CPoint
oggetto .
Osservazioni:
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.
Esempio
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);
Parametri
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.
Valore restituito
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.
Osservazioni:
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_HIENGLISH
MM_HIMETRIC
MM_LOENGLISH
MM_LOMETRIC
MM_TEXT
MM_TWIPS
Quando MM_ISOTROPIC
la modalità è impostata, un'applicazione deve chiamare la SetWindowExt
funzione membro prima di chiamare SetViewportExt
.
Esempio
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);
Parametri
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.
Valore restituito
Origine precedente della finestra come CPoint
oggetto .
Osservazioni:
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);
Parametri
rXform
Riferimento a una XFORM
struttura che contiene i dati di trasformazione.
Valore restituito
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
.
Osservazioni:
Questo metodo esegue il wrapping della funzione SetWorldTransform
GDI 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);
Parametri
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.
Valore restituito
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.
Osservazioni:
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.
Esempio
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
, SetViewportOrg
e 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();
Valore restituito
Maggiore o uguale a 0 se la funzione ha esito positivo o negativo se si è verificato un errore.
Osservazioni:
StartPage
sostituisce le NEWFRAME
BANDINFO
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
.
Esempio
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);
Parametri
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:
BLACKNESS
Trasforma tutto l'output nero.DSTINVERT
Inverte la bitmap di destinazione.MERGECOPY
Combina il modello e la bitmap di origine usando l'operatore AND booleano.MERGEPAINT
Combina la bitmap di origine invertita con la bitmap di destinazione usando l'operatore OR booleano.NOTSRCCOPY
Copia la bitmap di origine invertita nella destinazione.NOTSRCERASE
Inverte il risultato della combinazione delle bitmap di destinazione e di origine usando l'operatore OR booleano.PATCOPY
Copia il modello nella bitmap di destinazione.PATINVERT
Combina la bitmap di destinazione con il modello usando l'operatore XOR booleano.PATPAINT
Combina 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.SRCAND
Combina i pixel delle bitmap di destinazione e di origine usando l'operatore AND booleano.SRCCOPY
Copia la bitmap di origine nella bitmap di destinazione.SRCERASE
Inverte la bitmap di destinazione e combina il risultato con la bitmap di origine usando l'operatore AND booleano.SRCINVERT
Combina i pixel delle bitmap di destinazione e di origine usando l'operatore XOR booleano.SRCPAINT
Combina i pixel delle bitmap di destinazione e di origine usando l'operatore OR booleano.WHITENESS
Attiva tutto il bianco di output.
Valore restituito
Se la bitmap viene tracciata è diverso da zero; in caso contrario, 0.
Osservazioni:
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 xSrc
parametri , nSrcWidth
ySrc
, e nSrcHeight
definiscono l'angolo superiore sinistro e le dimensioni del rettangolo di origine. I x
parametri , nWidth
y
, 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 nWidth
nSrcHeight
nHeight
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();
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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();
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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);
Parametri
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 lpszString
cui 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.
Valore restituito
Dimensioni della stringa (in unità logiche) come CSize
oggetto .
Osservazioni:
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);
Parametri
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.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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.
Esempio
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);
Parametri
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.
Valore restituito
TRUE
se l'esito è positivo; in caso contrario, FALSE
.
Osservazioni:
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();
Osservazioni:
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();
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
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.
Vedi anche
CObject
Classe
Grafico della gerarchia
CPaintDC
Classe
CWindowDC
Classe
CClientDC
Classe
CMetaFileDC
Classe