Konteksty urządzenia pamięci
Aby umożliwić aplikacjom umieszczanie danych wyjściowych w pamięci zamiast wysyłania ich do rzeczywistego urządzenia, należy użyć specjalnego kontekstu urządzenia do obsługi map bitowych nazywanych kontekstem urządzenia pamięci . Kontroler domeny pamięci umożliwia systemowi traktowanie części pamięci jako urządzenia wirtualnego. Jest to tablica bitów w pamięci, za pomocą której aplikacja może tymczasowo przechowywać dane kolorów dla map bitowych utworzonych na normalnej powierzchni rysunkowej. Ponieważ mapa bitowa jest zgodna z urządzeniem, kontroler domeny pamięci jest również czasami określany jako zgodny kontekst urządzenia.
Kontroler domeny pamięci przechowuje obrazy map bitowych dla określonego urządzenia. Aplikacja może utworzyć kontroler domeny pamięci, wywołując funkcję CreateCompatibleDC.
Oryginalna mapa bitowa w kontrolerze domeny pamięci jest po prostu symbolem zastępczym. Jego wymiary to jeden piksel o jeden piksel. Aby aplikacja mogła rozpocząć rysowanie, musi wybrać mapę bitową o odpowiedniej szerokości i wysokości do kontrolera domeny, wywołując funkcję SelectObject. Aby utworzyć mapę bitową odpowiednich wymiarów, użyj funkcji CreateBitmap, CreateBitmapIndirectlub CreateCompatibleBitmap. Po wybraniu mapy bitowej do kontrolera domeny pamięci system zastępuje tablicę jedno bitową tablicą wystarczająco dużą, aby przechowywać informacje o kolorze dla określonego prostokąta pikseli.
Gdy aplikacja przekazuje dojście zwrócone przez CreateCompatibleDC do jednej z funkcji rysunku, żądane dane wyjściowe nie są wyświetlane na powierzchni rysunku urządzenia. Zamiast tego system przechowuje informacje o kolorze wynikowej linii, krzywej, tekstu lub regionu w tablicy bitów. Aplikacja może skopiować obraz przechowywany w pamięci z powrotem na powierzchnię rysunku, wywołując funkcję BitBlt, identyfikując kontroler domeny pamięci jako kontekst urządzenia źródłowego i okno lub ekran kontrolera domeny jako kontekst urządzenia docelowego.
Podczas wyświetlania dib lub bazy danych DDB utworzonej na podstawie diB na urządzeniu palety można zwiększyć szybkość, z jaką obraz jest rysowany, rozmieszczając paletę logiczną w celu dopasowania do układu palety systemowej. W tym celu wywołaj metodę GetDeviceCaps z wartością NUMRESERVED, aby uzyskać liczbę zarezerwowanych kolorów w systemie. Następnie wywołaj GetSystemPaletteEntries i wypełnij pierwsze i ostatnie wpisy NUMRESERVED/2 palety logicznej odpowiednimi kolorami systemu. Jeśli na przykład wartość NUMRESERVED to 20, należy wypełnić pierwsze i ostatnie 10 wpisów palety logicznej przy użyciu kolorów systemowych. Następnie wypełnij pozostałe 256-NUMRESERVED kolorów palety logicznej (w naszym przykładzie pozostałe 236 kolorów) kolorami z DIB i ustaw flagę PC_NOCOLLAPSE na każdym z tych kolorów.
Aby uzyskać więcej informacji na temat kolorów i palet, zobacz Kolory. Aby uzyskać więcej informacji na temat operacji map bitowych i map bitowych, zobacz Bitmaps.