Operazioni sugli oggetti grafici
Dopo che un'applicazione crea un controller di dominio di visualizzazione o stampante, può iniziare a disegnare sul dispositivo associato o, nel caso del controller di dominio di memoria, può iniziare a disegnare sulla bitmap archiviata in memoria. Tuttavia, prima dell'inizio del disegno, e talvolta mentre il disegno è in corso, spesso è necessario sostituire gli oggetti predefiniti con nuovi oggetti.
Un'applicazione può esaminare gli attributi di un oggetto predefinito chiamando le funzioniGetCurrentObjecte GetObject. La funzione GetCurrentObject restituisce un handle che identifica la penna, il pennello, la tavolozza, la bitmap o il tipo di carattere corrente e la funzione GetObject inizializza una struttura contenente gli attributi dell'oggetto.
Alcune stampanti forniscono penne, pennelli e tipi di carattere residenti che possono essere usati per migliorare la velocità di disegno in un'applicazione. È possibile usare due funzioni per enumerare questi oggetti: EnumObjects e EnumFontFamilies. Se l'applicazione deve enumerare penne o pennelli residenti, può chiamare la funzione EnumObjects per esaminare gli attributi corrispondenti. Se l'applicazione deve enumerare i tipi di carattere residenti, può chiamare la funzione EnumFontFamilies (che può anche enumerare i tipi di carattere GDI).
Una volta che un'applicazione determina che un oggetto predefinito deve sostituire, crea un nuovo oggetto chiamando una delle funzioni di creazione seguenti.
Oggetto grafico | Funzione |
---|---|
Bitmap | CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDiscardableBitmap, CreateDIBitmap |
Spazzola | CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush |
Tavolozza | CreatePalette |
Font | CreateFont, CreateFontIndirect |
Penna | CreatePen, CreatePenIndirect, ExtCreatePen |
Regione | CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRectRgnIndirect, CreateRoundRectRgn |
Ognuna di queste funzioni restituisce un handle che identifica un nuovo oggetto. Dopo che un'applicazione recupera un handle, deve chiamare la funzioneSelectObjectper sostituire l'oggetto predefinito. Tuttavia, l'applicazione deve salvare l'handle che identifica l'oggetto predefinito e usare questo handle per sostituire il nuovo oggetto quando non è più necessario. Al termine del disegno dell'applicazione con il nuovo oggetto, deve ripristinare l'oggetto predefinito chiamando la funzione SelectObject e quindi eliminare il nuovo oggetto chiamando la funzione DeleteObject. Se non si eliminano oggetti, si verificano gravi problemi di prestazioni.