CDC
Klasa
Definiuje klasę obiektów kontekstu urządzenia.
Składnia
class CDC : public CObject
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CDC::CDC |
CDC Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CDC::AbortDoc |
Przerywa bieżące zadanie drukowania, wymazując wszystko, co aplikacja zapisała na urządzeniu od ostatniego wywołania funkcji składowej StartDoc . |
CDC::AbortPath |
Zamyka i odrzuca wszystkie ścieżki w kontekście urządzenia. |
CDC::AddMetaFileComment |
Kopiuje komentarz z buforu do określonego metapliku w formacie rozszerzonym. |
CDC::AlphaBlend |
Wyświetla mapy bitowe, które mają przezroczyste lub półprzezroczyste piksele. |
CDC::AngleArc |
Rysuje segment liniowy i łuk oraz przenosi bieżącą pozycję do punktu końcowego łuku. |
CDC::Arc |
Rysuje łuk wielokropowy. |
CDC::ArcTo |
Rysuje łuk wielokropowy. Ta funkcja jest podobna do Arc funkcji , z tą różnicą, że bieżące położenie jest aktualizowane. |
CDC::Attach |
Dołącza kontekst urządzenia z systemem Windows do tego CDC obiektu. |
CDC::BeginPath |
Otwiera nawias ścieżki w kontekście urządzenia. |
CDC::BitBlt |
Kopiuje mapę bitową z określonego kontekstu urządzenia. |
CDC::Chord |
Rysuje akord (zamknięta postać ograniczona przez przecięcie wielokropka i segment linii). |
CDC::CloseFigure |
Zamyka otwartą postać w ścieżce. |
CDC::CreateCompatibleDC |
Tworzy kontekst urządzenia pamięci zgodny z innym kontekstem urządzenia. Można go użyć do przygotowania obrazów w pamięci. |
CDC::CreateDC |
Tworzy kontekst urządzenia dla określonego urządzenia. |
CDC::CreateIC |
Tworzy kontekst informacji dla określonego urządzenia. Zapewnia to szybki sposób uzyskiwania informacji o urządzeniu bez tworzenia kontekstu urządzenia. |
CDC::DeleteDC |
Usuwa kontekst urządzenia z systemem Windows skojarzony z tym CDC obiektem. |
CDC::DeleteTempMap |
Wywoływana CWinApp przez program obsługi bezczynności w celu usunięcia dowolnego obiektu tymczasowego utworzonego CDC przez FromHandle program . Odłącza również kontekst urządzenia. |
CDC::Detach |
Odłącza kontekst urządzenia z systemem Windows od tego CDC obiektu. |
CDC::DPtoHIMETRIC |
Konwertuje jednostki urządzeń na HIMETRIC jednostki. |
CDC::DPtoLP |
Konwertuje jednostki urządzeń na jednostki logiczne. |
CDC::Draw3dRect |
Rysuje trójwymiarowy prostokąt. |
CDC::DrawDragRect |
Usuwa i ponownie rysuje prostokąt podczas przeciągania. |
CDC::DrawEdge |
Rysuje krawędzie prostokąta. |
CDC::DrawEscape |
Uzyskuje dostęp do możliwości rysowania wyświetlacza wideo, które nie są dostępne bezpośrednio za pośrednictwem interfejsu urządzenia graficznego (GDI). |
CDC::DrawFocusRect |
Rysuje prostokąt w stylu używanym do wskazywania fokusu. |
CDC::DrawFrameControl |
Rysuj kontrolkę ramki. |
CDC::DrawIcon |
Rysuje ikonę. |
CDC::DrawState |
Wyświetla obraz i stosuje efekt wizualny, aby wskazać stan. |
CDC::DrawText |
Rysuje sformatowany tekst w określonym prostokątze. |
CDC::DrawTextEx |
Rysuje sformatowany tekst w określonym prostokątze przy użyciu innych formatów. |
CDC::Ellipse |
Rysuje wielokropek. |
CDC::EndDoc |
Kończy zadanie drukowania uruchomione przez funkcję składową StartDoc . |
CDC::EndPage |
Informuje sterownik urządzenia o zakończeniu strony. |
CDC::EndPath |
Zamyka nawias ścieżki i wybiera ścieżkę zdefiniowaną przez nawias w kontekście urządzenia. |
CDC::EnumObjects |
Wylicza pióra i szczotki dostępne w kontekście urządzenia. |
CDC::Escape |
Umożliwia aplikacjom dostęp do obiektów, które nie są bezpośrednio dostępne z określonego urządzenia za pośrednictwem interfejsu GDI. Umożliwia również dostęp do funkcji ucieczki systemu Windows. Wywołania ucieczki wykonywane przez aplikację są tłumaczone i wysyłane do sterownika urządzenia. |
CDC::ExcludeClipRect |
Tworzy nowy region wycinków, który składa się z istniejącego regionu wycinkowania pomniejszonego o określony prostokąt. |
CDC::ExcludeUpdateRgn |
Uniemożliwia rysowanie w nieprawidłowych obszarach okna, wykluczając zaktualizowany region w oknie z regionu wycinkowania. |
CDC::ExtFloodFill |
Wypełnia obszar bieżącym pędzlem. Zapewnia większą elastyczność niż funkcja składowa CDC::FloodFill . |
CDC::ExtTextOut |
Zapisuje ciąg znaków w regionie prostokątnym przy użyciu aktualnie wybranej czcionki. |
CDC::FillPath |
Zamyka wszystkie otwarte figury w bieżącej ścieżce i wypełnia wnętrze ścieżki przy użyciu bieżącego pędzla i trybu wypełniania wielokątnego. |
CDC::FillRect |
Wypełnia dany prostokąt przy użyciu określonego pędzla. |
CDC::FillRgn |
Wypełnia określony region określonym pędzlem. |
CDC::FillSolidRect |
Wypełnia prostokąt stałym kolorem. |
CDC::FlattenPath |
Przekształca wszystkie krzywe w ścieżce wybranej w bieżący kontekst urządzenia i zamienia każdą krzywą w sekwencję linii. |
CDC::FloodFill |
Wypełnia obszar bieżącym pędzlem. |
CDC::FrameRect |
Rysuje obramowanie wokół prostokąta. |
CDC::FrameRgn |
Rysuje obramowanie wokół określonego regionu przy użyciu pędzla. |
CDC::FromHandle |
Zwraca wskaźnik do CDC obiektu, gdy dana dojście do kontekstu urządzenia. CDC Jeśli obiekt nie jest dołączony do uchwytu, zostanie utworzony i dołączony obiekt tymczasowyCDC . |
CDC::GetArcDirection |
Zwraca bieżący kierunek łuku dla kontekstu urządzenia. |
CDC::GetAspectRatioFilter |
Pobiera ustawienie dla bieżącego filtru współczynnika proporcji. |
CDC::GetBkColor |
Pobiera bieżący kolor tła. |
CDC::GetBkMode |
Pobiera tryb tła. |
CDC::GetBoundsRect |
Zwraca bieżący skumulowany prostokąt ograniczenia dla określonego kontekstu urządzenia. |
CDC::GetBrushOrg |
Pobiera źródło bieżącego pędzla. |
CDC::GetCharABCWidths |
Pobiera szerokości w jednostkach logicznych z kolejnych znaków w danym zakresie z bieżącej czcionki. |
CDC::GetCharABCWidthsI |
Pobiera szerokości w jednostkach logicznych kolejnych indeksów glifów w określonym zakresie z bieżącej czcionki TrueType. |
CDC::GetCharacterPlacement |
Pobiera różne typy informacji na temat ciągu znaków. |
CDC::GetCharWidth |
Pobiera szerokości ułamkowe kolejnych znaków w danym zakresie z bieżącej czcionki. |
CDC::GetCharWidthI |
Pobiera szerokości w współrzędnych logicznych kolejnych indeksów glifów w określonym zakresie od bieżącej czcionki. |
CDC::GetClipBox |
Pobiera wymiary najostrzejszego prostokąta ograniczenia wokół bieżącej granicy przycinania. |
CDC::GetColorAdjustment |
Pobiera wartości korekty kolorów dla kontekstu urządzenia. |
CDC::GetCurrentBitmap |
Zwraca wskaźnik do aktualnie wybranego CBitmap obiektu. |
CDC::GetCurrentBrush |
Zwraca wskaźnik do aktualnie wybranego CBrush obiektu. |
CDC::GetCurrentFont |
Zwraca wskaźnik do aktualnie wybranego CFont obiektu. |
CDC::GetCurrentPalette |
Zwraca wskaźnik do aktualnie wybranego CPalette obiektu. |
CDC::GetCurrentPen |
Zwraca wskaźnik do aktualnie wybranego CPen obiektu. |
CDC::GetCurrentPosition |
Pobiera bieżącą pozycję pióra (we współrzędnych logicznych). |
CDC::GetDCBrushColor |
Pobiera bieżący kolor pędzla. |
CDC::GetDCPenColor |
Pobiera bieżący kolor pióra. |
CDC::GetDeviceCaps |
Pobiera określony rodzaj informacji specyficznych dla urządzenia dotyczących możliwości danego urządzenia wyświetlania. |
CDC::GetFontData |
Pobiera informacje o metryce czcionek z skalowalnego pliku czcionek. Informacje do pobrania są identyfikowane przez określenie przesunięcia do pliku czcionki i długości informacji do zwrócenia. |
CDC::GetFontLanguageInfo |
Zwraca informacje o aktualnie wybranej czcionki dla określonego kontekstu wyświetlania. |
CDC::GetGlyphOutline |
Pobiera krzywą konturu lub mapę bitową dla znaku konspektu w bieżącej czcionki. |
CDC::GetGraphicsMode |
Pobiera bieżący tryb graficzny dla określonego kontekstu urządzenia. |
CDC::GetHalftoneBrush |
Pobiera szczotkę półtonową. |
CDC::GetKerningPairs |
Pobiera pary kerning znaków dla czcionki, która jest obecnie zaznaczona w określonym kontekście urządzenia. |
CDC::GetLayout |
Pobiera układ kontekstu urządzenia (DC). Układ może być od lewej do prawej (domyślnie) lub od prawej do lewej (dublowany). |
CDC::GetMapMode |
Pobiera bieżący tryb mapowania. |
CDC::GetMiterLimit |
Zwraca limit miter dla kontekstu urządzenia. |
CDC::GetNearestColor |
Pobiera najbliższy kolor logiczny do określonego koloru logicznego, który może reprezentować dane urządzenie. |
CDC::GetOutlineTextMetrics |
Pobiera informacje o metryce czcionki dla czcionek TrueType. |
CDC::GetOutputCharWidth |
Pobiera szerokości poszczególnych znaków w kolejnej grupie znaków z bieżącej czcionki przy użyciu kontekstu urządzenia wyjściowego. |
CDC::GetOutputTabbedTextExtent |
Oblicza szerokość i wysokość ciągu znaków w kontekście urządzenia wyjściowego. |
CDC::GetOutputTextExtent |
Oblicza szerokość i wysokość wiersza tekstu w kontekście urządzenia wyjściowego przy użyciu bieżącej czcionki w celu określenia wymiarów. |
CDC::GetOutputTextMetrics |
Pobiera metryki dla bieżącej czcionki z kontekstu urządzenia wyjściowego. |
CDC::GetPath |
Pobiera współrzędne definiujące punkty końcowe linii i punkty kontrolne krzywych znalezionych w ścieżce wybranej w kontekście urządzenia. |
CDC::GetPixel |
Pobiera wartość koloru RGB piksela w określonym punkcie. |
CDC::GetPolyFillMode |
Pobiera bieżący tryb wypełniania wielokątowego. |
CDC::GetROP2 |
Pobiera bieżący tryb rysunku. |
CDC::GetSafeHdc |
Zwraca CDC::m_hDC wartość , kontekst wyjściowego urządzenia. |
CDC::GetStretchBltMode |
Pobiera bieżący tryb rozciągnięcia mapy bitowej. |
CDC::GetTabbedTextExtent |
Oblicza szerokość i wysokość ciągu znaków w kontekście urządzenia atrybutu. |
CDC::GetTextAlign |
Pobiera flagi wyrównania tekstu. |
CDC::GetTextCharacterExtra |
Pobiera bieżące ustawienie dla liczby odstępów międzycharakterowych. |
CDC::GetTextColor |
Pobiera bieżący kolor tekstu. |
CDC::GetTextExtent |
Oblicza szerokość i wysokość wiersza tekstu w kontekście urządzenia atrybutu przy użyciu bieżącej czcionki w celu określenia wymiarów. |
CDC::GetTextExtentExPointI |
Pobiera liczbę znaków w określonym ciągu, który będzie mieścił się w określonym obszarze i wypełnia tablicę zakresem tekstu dla każdego z tych znaków. |
CDC::GetTextExtentPointI |
Pobiera szerokość i wysokość określonej tablicy indeksów glifów. |
CDC::GetTextFace |
Kopiuje nazwę czcionki bieżącej czcionki do buforu jako ciąg zakończony o wartości null. |
CDC::GetTextMetrics |
Pobiera metryki dla bieżącej czcionki z kontekstu urządzenia atrybutu. |
CDC::GetViewportExt |
Pobiera zakresy x i yportu widoku. |
CDC::GetViewportOrg |
Pobiera współrzędne x-i y źródła widoku. |
CDC::GetWindow |
Zwraca okno skojarzone z kontekstem urządzenia wyświetlania. |
CDC::GetWindowExt |
Pobiera zakresy x i y skojarzonego okna. |
CDC::GetWindowOrg |
Pobiera współrzędne x-i y źródła skojarzonego okna. |
CDC::GetWorldTransform |
Pobiera bieżącą przestrzeń światową do transformacji przestrzeni stronicowej. |
CDC::GradientFill |
Wypełnia prostokąty i struktury trójkątów z kolorem stopniowania. |
CDC::GrayString |
Rysuje wygaszony (szary) tekst w danej lokalizacji. |
CDC::HIMETRICtoDP |
Konwertuje jednostki HIMETRIC na jednostki urządzeń. |
CDC::HIMETRICtoLP |
Konwertuje jednostki HIMETRIC na jednostki logiczne. |
CDC::IntersectClipRect |
Tworzy nowy region wycinków, tworząc przecięcie bieżącego regionu i prostokąta. |
CDC::InvertRect |
Odwraca zawartość prostokąta. |
CDC::InvertRgn |
Odwraca kolory w regionie. |
CDC::IsPrinting |
Określa, czy kontekst urządzenia jest używany do drukowania. |
CDC::LineTo |
Rysuje linię z bieżącej pozycji do, ale nie uwzględnia punktu. |
CDC::LPtoDP |
Konwertuje jednostki logiczne na jednostki urządzeń. |
CDC::LPtoHIMETRIC |
Konwertuje jednostki logiczne na jednostki HIMETRIC. |
CDC::MaskBlt |
Łączy dane kolorów dla źródłowych i docelowych map bitowych przy użyciu danej maski i operacji rastrowania. |
CDC::ModifyWorldTransform |
Zmienia transformację świata dla kontekstu urządzenia przy użyciu określonego trybu. |
CDC::MoveTo |
Przenosi bieżącą pozycję. |
CDC::OffsetClipRgn |
Przenosi obszar wycinków danego urządzenia. |
CDC::OffsetViewportOrg |
Modyfikuje źródło widoku względem współrzędnych bieżącego źródła widoku. |
CDC::OffsetWindowOrg |
Modyfikuje źródło okna względem współrzędnych bieżącego źródła okna. |
CDC::PaintRgn |
Wypełnia region wybranym pędzlem. |
CDC::PatBlt |
Tworzy wzorzec bitowy. |
CDC::Pie |
Rysuje klina w kształcie kołowego. |
CDC::PlayMetaFile |
Odtwarza zawartość określonego metapliku na danym urządzeniu. Ulepszona wersja PlayMetaFile wyświetla obraz przechowywany w danym metapliku w formacie rozszerzonym. Metaplik można odtworzyć dowolną liczbę razy. |
CDC::PlgBlt |
Wykonuje bitowy transfer bitów danych kolorów z określonego prostokąta w kontekście urządzenia źródłowego do określonego równoległegoogramu w danym kontekście urządzenia. |
CDC::PolyBezier |
Rysuje co najmniej jedną krzywą Bzier. Bieżące położenie nie jest używane ani aktualizowane. |
CDC::PolyBezierTo |
Rysuje co najmniej jedną krzywą Bziera i przenosi bieżącą pozycję do punktu końcowego ostatniej linii Bzier. |
CDC::PolyDraw |
Rysuje zestaw segmentów linii i krzywych Bzier. Ta funkcja aktualizuje bieżące położenie. |
CDC::Polygon |
Rysuje wielokąt składający się z co najmniej dwóch punktów (wierzchołków) połączonych liniami. |
CDC::Polyline |
Rysuje zestaw segmentów linii łączących określone punkty. |
CDC::PolylineTo |
Rysuje co najmniej jedną prostą linię i przenosi bieżącą pozycję do punktu końcowego ostatniego wiersza. |
CDC::PolyPolygon |
Tworzy co najmniej dwa wielokąty wypełnione przy użyciu bieżącego trybu wypełniania wielokątowego. Wielokąty mogą być rozłączne lub nakładają się na siebie. |
CDC::PolyPolyline |
Rysuje wiele serii połączonych segmentów linii. Bieżące położenie nie jest używane ani aktualizowane przez tę funkcję. |
CDC::PtVisible |
Określa, czy dany punkt znajduje się w regionie wycinkowania. |
CDC::RealizePalette |
Mapuje wpisy palety w bieżącej palecie logicznej na paletę systemowa. |
CDC::Rectangle |
Rysuje prostokąt przy użyciu bieżącego pióra i wypełnia go za pomocą bieżącego pędzla. |
CDC::RectVisible |
Określa, czy jakakolwiek część danego prostokąta znajduje się w regionie wycinkowania. |
CDC::ReleaseAttribDC |
Zwalnia m_hAttribDC element , kontekst urządzenia atrybutu. |
CDC::ReleaseOutputDC |
Zwalnia m_hDC , kontekst wyjściowego urządzenia. |
CDC::ResetDC |
m_hAttribDC Aktualizuje kontekst urządzenia. |
CDC::RestoreDC |
Przywraca kontekst urządzenia do poprzedniego stanu zapisanego za pomocą SaveDC polecenia . |
CDC::RoundRect |
Rysuje prostokąt z zaokrąglonymi rogami przy użyciu bieżącego pióra i wypełniany za pomocą bieżącego pędzla. |
CDC::SaveDC |
Zapisuje bieżący stan kontekstu urządzenia. |
CDC::ScaleViewportExt |
Modyfikuje zakres widoku względem bieżących wartości. |
CDC::ScaleWindowExt |
Modyfikuje zakresy okien względem bieżących wartości. |
CDC::ScrollDC |
Przewija prostokąt bitów w poziomie i w pionie. |
CDC::SelectClipPath |
Wybiera bieżącą ścieżkę jako region wycinków dla kontekstu urządzenia, łącząc nowy region z dowolnym istniejącym regionem wycinków przy użyciu określonego trybu. |
CDC::SelectClipRgn |
Łączy dany region z bieżącym regionem wycinków przy użyciu określonego trybu. |
CDC::SelectObject |
Wybiera obiekt rysunkowy GDI, taki jak pióro. |
CDC::SelectPalette |
Wybiera paletę logiczną. |
CDC::SelectStockObject |
Wybiera jedną ze wstępnie zdefiniowanych długopisów, pędzli lub czcionek dostarczonych przez system Windows. |
CDC::SetAbortProc |
Ustawia funkcję wywołania zwrotnego dostarczonego przez programistę, którą system Windows wywołuje, jeśli zadanie drukowania musi zostać przerwane. |
CDC::SetArcDirection |
Ustawia kierunek rysunku, który ma być używany dla funkcji łuku i prostokąta. |
CDC::SetAttribDC |
Ustawia m_hAttribDC , atrybut kontekstu urządzenia. |
CDC::SetBkColor |
Ustawia bieżący kolor tła. |
CDC::SetBkMode |
Ustawia tryb tła. |
CDC::SetBoundsRect |
Steruje akumulacją informacji o ograniczeniach prostokąta dla określonego kontekstu urządzenia. |
CDC::SetBrushOrg |
Określa początek następnego pędzla wybranego w kontekście urządzenia. |
CDC::SetColorAdjustment |
Ustawia wartości korekty kolorów dla kontekstu urządzenia przy użyciu określonych wartości. |
CDC::SetDCBrushColor |
Ustawia bieżący kolor pędzla. |
CDC::SetDCPenColor |
Ustawia bieżący kolor pióra. |
CDC::SetGraphicsMode |
Ustawia bieżący tryb graficzny dla określonego kontekstu urządzenia. |
CDC::SetLayout |
Zmienia układ kontekstu urządzenia (DC). |
CDC::SetMapMode |
Ustawia bieżący tryb mapowania. |
CDC::SetMapperFlags |
Zmienia algorytm używany przez maper czcionek podczas mapowania czcionek logicznych na czcionki fizyczne. |
CDC::SetMiterLimit |
Ustawia limit długości sprzężeń miter dla kontekstu urządzenia. |
CDC::SetOutputDC |
Ustawia m_hDC kontekst urządzenia wyjściowego . |
CDC::SetPixel |
Ustawia piksel w określonym punkcie na najbliższe przybliżenie określonego koloru. |
CDC::SetPixelV |
Ustawia piksel na określonych współrzędnych do najbliższego przybliżenia określonego koloru. SetPixelV jest szybszy niż SetPixel dlatego, że nie musi zwracać wartości koloru punktu malowanego. |
CDC::SetPolyFillMode |
Ustawia tryb wypełniania wielokątowego. |
CDC::SetROP2 |
Ustawia bieżący tryb rysunku. |
CDC::SetStretchBltMode |
Ustawia tryb rozciągnięcia mapy bitowej. |
CDC::SetTextAlign |
Ustawia flagi wyrównania tekstu. |
CDC::SetTextCharacterExtra |
Ustawia odstęp międzycharakterowy. |
CDC::SetTextColor |
Ustawia kolor tekstu. |
CDC::SetTextJustification |
Dodaje spację do znaków przerwania w ciągu. |
CDC::SetViewportExt |
Ustawia zakresy x i yportu widoku. |
CDC::SetViewportOrg |
Ustawia źródło widoku. |
CDC::SetWindowExt |
Ustawia zakresy x-i y skojarzonego okna. |
CDC::SetWindowOrg |
Ustawia źródło okna kontekstu urządzenia. |
CDC::SetWorldTransform |
Ustawia bieżącą przestrzeń światową na transformację przestrzeni stronicowej. |
CDC::StartDoc |
Informuje sterownik urządzenia o uruchomieniu nowego zadania drukowania. |
CDC::StartPage |
Informuje sterownik urządzenia o uruchomieniu nowej strony. |
CDC::StretchBlt |
Przenosi mapę bitową ze źródłowego prostokąta i urządzenia do prostokąta docelowego, rozciągając lub kompresując mapę bitową, jeśli to konieczne, aby dopasować wymiary prostokąta docelowego. |
CDC::StrokeAndFillPath |
Zamyka wszystkie otwarte figury w ścieżce, uderza w kontur ścieżki przy użyciu bieżącego pióra i wypełnia jego wnętrze za pomocą bieżącego pędzla. |
CDC::StrokePath |
Renderuje określoną ścieżkę przy użyciu bieżącego pióra. |
CDC::TabbedTextOut |
Zapisuje ciąg znaków w określonej lokalizacji, rozwijając karty do wartości określonych w tablicy pozycji tabulatora. |
CDC::TextOut |
Zapisuje ciąg znaków w określonej lokalizacji przy użyciu aktualnie wybranej czcionki. |
CDC::TransparentBlt |
Przesyła bitowy blok danych kolorów z określonego kontekstu urządzenia źródłowego do kontekstu urządzenia docelowego, co powoduje przezroczystość określonego koloru w transferze. |
CDC::UpdateColors |
Aktualizuje obszar klienta kontekstu urządzenia, dopasowując bieżące kolory w obszarze klienta do palety systemowej na podstawie pikseli. |
CDC::WidenPath |
Ponownie definiuje bieżącą ścieżkę jako obszar, który będzie malowany, jeśli ścieżka została pociągnięta przy użyciu pióra aktualnie wybranego w kontekście urządzenia. |
Operatory publiczne
Nazwa/nazwisko | opis |
---|---|
CDC::operator HDC |
Pobiera uchwyt kontekstu urządzenia. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CDC::m_hAttribDC |
Kontekst atrybutu urządzenia używany przez ten CDC obiekt. |
CDC::m_hDC |
Kontekst urządzenia wyjściowego używany przez ten CDC obiekt. |
Uwagi
Obiekt CDC
udostępnia funkcje składowe do pracy z kontekstem urządzenia, takim jak wyświetlacz lub drukarka, oraz elementy członkowskie do pracy z kontekstem wyświetlania skojarzonym z obszarem klienta okna.
Wykonaj wszystkie rysunki za pomocą funkcji składowych CDC
obiektu. Klasa udostępnia funkcje składowe na potrzeby operacji kontekstowych urządzeń, pracy z narzędziami do rysowania, wyborem obiektów interfejsu graficznego (GDI, type-safe graphics device interface) oraz pracą z kolorami i paletami. Udostępnia również funkcje składowe do pobierania i ustawiania atrybutów rysunku, mapowania, pracy z widokiem, pracy z zakresem okna, konwertowania współrzędnych, pracy z regionami, wycinania, linii rysunkowych i rysowania prostych kształtów, wielokropków i wielokątów. Funkcje składowe są również udostępniane do rysowania tekstu, pracy z czcionkami, używania ucieczki drukarki, przewijania i odtwarzania metaplików.
Aby użyć obiektu, skonstruuj CDC
go, a następnie wywołaj jego funkcje członkowskie, które równoległe funkcje systemu Windows korzystające z kontekstów urządzeń.
Uwaga
W systemie Windows 95/98 wszystkie współrzędne ekranu są ograniczone do 16 bitów. W związku z tym przekazana int
do funkcji składowej CDC
musi znajdować się w zakresie od -32768 do 32767.
W przypadku określonych zastosowań biblioteka klas programu Microsoft Foundation udostępnia kilka klas pochodzących z CDC
klasy . CPaintDC
hermetyzuje wywołania metod BeginPaint
i EndPaint
. CClientDC
zarządza kontekstem wyświetlania skojarzonym z obszarem klienta okna. CWindowDC
zarządza kontekstem wyświetlania skojarzonym z całym oknem, w tym ramką i kontrolkami. CMetaFileDC
kojarzy kontekst urządzenia z metaplikiem.
CDC
Udostępnia dwie funkcje GetLayout
składowe i SetLayout
, w przypadku odwracania układu kontekstu urządzenia, który nie dziedziczy układu z okna. Taka orientacja od prawej do lewej jest niezbędna dla aplikacji napisanych dla kultur, takich jak arabski lub hebrajski, gdzie układ znaków nie jest standardem europejskim.
CDC
Zawiera dwa konteksty urządzenia i m_hDC
m_hAttribDC
, które podczas tworzenia CDC
obiektu odwołują się do tego samego urządzenia. CDC
kieruje wszystkie wyjściowe wywołania interfejsu GDI do m_hDC
i większość wywołań GDI atrybutu do .m_hAttribDC
(Przykładem wywołania atrybutu jest GetTextColor
, a element SetTextColor
jest wywołaniem wyjściowym).
Na przykład struktura używa tych dwóch kontekstów urządzenia do zaimplementowania CMetaFileDC
obiektu, który będzie wysyłać dane wyjściowe do metapliku podczas odczytywania atrybutów z urządzenia fizycznego. Podgląd wydruku jest implementowany w strukturze w podobny sposób. Możesz również użyć dwóch kontekstów urządzenia w podobny sposób w kodzie specyficznym dla aplikacji.
Czasami mogą być potrzebne informacje o metryce tekstowej zarówno z kontekstów urządzenia, jak m_hDC
i m_hAttribDC
. Następujące pary funkcji zapewniają tę możliwość:
Używa m_hAttribDC | Używa m_hDC |
---|---|
GetTextExtent |
GetOutputTextExtent |
GetTabbedTextExtent |
GetOutputTabbedTextExtent |
GetTextMetrics |
GetOutputTextMetrics |
GetCharWidth |
GetOutputCharWidth |
Aby uzyskać więcej informacji na temat CDC
programu , zobacz Konteksty urządzeń.
Hierarchia dziedziczenia
CDC
Wymagania
Nagłówek: afxwin.h
CDC::AbortDoc
Przerywa bieżące zadanie drukowania i usuwa wszystkie elementy, które aplikacja zapisała na urządzeniu od ostatniego wywołania funkcji składowej StartDoc
.
int AbortDoc();
Wartość zwracana
Wartość większa niż lub równa 0 w przypadku powodzenia lub wartość ujemna, jeśli wystąpił błąd. Na poniższej liście przedstawiono typowe wartości błędów i ich znaczenie:
SP_ERROR
Błąd ogólny.SP_OUTOFDISK
Za mało miejsca na dysku jest obecnie dostępne na potrzeby buforowania i nie będzie dostępne żadne miejsce.SP_OUTOFMEMORY
Za mało pamięci jest dostępna do buforowania.SP_USERABORT
Użytkownik przerwał zadanie za pośrednictwem Menedżera wydruku.
Uwagi
Ta funkcja składowa zastępuje ucieczkę ABORTDOC
drukarki.
AbortDoc
należy użyć do zakończenia następujących czynności:
Operacje drukowania, które nie określają funkcji przerwania przy użyciu polecenia
SetAbortProc
.Operacje drukowania, które nie osiągnęły jeszcze pierwszego
NEWFRAME
połączenia lubNEXTBAND
ucieczki.
Jeśli aplikacja napotka błąd drukowania lub anulowaną operację drukowania, nie może podjąć próby zakończenia operacji przy użyciu EndDoc
funkcji składowych klasy CDC
lub AbortDoc
. GDI automatycznie kończy operację przed zwróceniem wartości błędu.
Jeśli aplikacja wyświetla okno dialogowe umożliwiające użytkownikowi anulowanie operacji drukowania, musi wywołać AbortDoc
ją przed zniszczeniem okna dialogowego.
Jeśli Menedżer wydruku został użyty do uruchomienia zadania drukowania, wywołanie metody AbortDoc
wymazuje całe zadanie buforowania — drukarka nie otrzyma niczego. Jeśli Menedżer wydruku nie był używany do uruchamiania zadania drukowania, dane mogły zostać wysłane do drukarki przed AbortDoc
wywołaniem. W takim przypadku sterownik drukarki zresetowałby drukarkę (jeśli to możliwe) i zamknął zadanie drukowania.
Przykład
Zobacz przykład dla elementu CDC::StartDoc
.
CDC::AbortPath
Zamyka i odrzuca wszystkie ścieżki w kontekście urządzenia.
BOOL AbortPath();
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Jeśli w kontekście urządzenia znajduje się nawias ścieżki otwartej, nawias ścieżki zostanie zamknięty i ścieżka zostanie odrzucona. Jeśli w kontekście urządzenia znajduje się zamknięta ścieżka, ścieżka zostanie odrzucona.
CDC::AddMetaFileComment
Kopiuje komentarz z buforu do określonego metapliku w formacie rozszerzonym.
BOOL AddMetaFileComment(
UINT nDataSize,
const BYTE* pCommentData);
Parametry
nDataSize
Określa długość buforu komentarza w bajtach.
pCommentData
Wskazuje bufor zawierający komentarz.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Komentarz może zawierać wszelkie informacje prywatne — na przykład źródło obrazu i datę utworzenia. Komentarz powinien zaczynać się od podpisu aplikacji, a następnie danych. Komentarze nie powinny zawierać danych specyficznych dla pozycji. Dane specyficzne dla pozycji określają lokalizację rekordu i nie powinny być uwzględniane, ponieważ jeden metaplik może być osadzony w innym metapliku. Tej funkcji można używać tylko z rozszerzonymi metaplikami.
CDC::AlphaBlend
Wywołaj tę funkcję składową, aby wyświetlić mapy bitowe z przezroczystymi lub półprzezroczystymi pikselami.
BOOL AlphaBlend(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
BLENDFUNCTION blend);
Parametry
xDest
Określa współrzędną x w jednostkach logicznych lewego górnego rogu prostokąta docelowego.
yDest
Określa współrzędną y w jednostkach logicznych lewego górnego rogu prostokąta docelowego.
nDestWidth
Określa szerokość w jednostkach logicznych prostokąta docelowego.
nDestHeight
Określa wysokość w jednostkach logicznych prostokąta docelowego.
pSrcDC
Wskaźnik do kontekstu urządzenia źródłowego.
xSrc
Określa współrzędną x w jednostkach logicznych lewego górnego rogu prostokąta źródłowego.
ySrc
Określa współrzędną y w jednostkach logicznych lewego górnego rogu prostokąta źródłowego.
nSrcWidth
Określa szerokość w jednostkach logicznych prostokąta źródłowego.
nSrcHeight
Określa wysokość w jednostkach logicznych prostokąta źródłowego.
blend
Określa BLENDFUNCTION
strukturę.
Wartość zwracana
TRUE
w przypadku powodzenia; w przeciwnym razie FALSE
.
Uwagi
Aby uzyskać więcej informacji, zobacz AlphaBlend
w zestawie Windows SDK.
CDC::AngleArc
Rysuje segment liniowy i łuk.
BOOL AngleArc(
int x,
int y,
int nRadius,
float fStartAngle,
float fSweepAngle);
Parametry
x
Określa logiczną współrzędną x środka okręgu.
y
Określa logiczną współrzędną y środka okręgu.
nRadius
Określa promień okręgu w jednostkach logicznych. Ta wartość musi być dodatnia.
fStartAngle
Określa kąt początkowy w stopniach względem osi x.
fSweepAngle
Określa kąt zamiatania w stopniach względem kąta początkowego.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Segment linii jest rysowany z bieżącej pozycji do początku łuku. Łuk jest rysowany wzdłuż obwodu okręgu z danym promieniem i środek. Długość łuku jest definiowana przez podane kąty początku i zamiatania.
AngleArc
przenosi bieżącą pozycję do punktu końcowego łuku. Łuk narysowany przez tę funkcję może wydawać się wielokropek, w zależności od bieżącego trybu transformacji i mapowania. Przed rysowaniem łuku ta funkcja rysuje segment linii z bieżącej pozycji na początek łuku. Łuk jest rysowany przez skonstruowanie wyimaginowanego okręgu z określonym promieńem wokół określonego punktu środkowego. Punkt początkowy łuku jest określany przez pomiar w kierunku odwrotnym od osi x okręgu przez liczbę stopni w kątze początkowym. Punkt końcowy znajduje się podobnie, mierząc odwrotnie od punktu początkowego przez liczbę stopni w kątze zamiatania.
Jeśli kąt zamiatania jest większy niż 360 stopni, łuk jest przetoczył się wiele razy. Ta funkcja rysuje linie przy użyciu bieżącego pióra. Ilustracja nie jest wypełniona.
CDC::Arc
Rysuje łuk wielokropowy.
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);
Parametry
x1
Określa współrzędną x lewego górnego rogu prostokąta ograniczenia (w jednostkach logicznych).
y1
Określa współrzędną y lewego górnego rogu prostokąta ograniczenia (w jednostkach logicznych).
x2
Określa współrzędną x prawego dolnego rogu prostokąta ograniczenia (w jednostkach logicznych).
y2
Określa współrzędną y prawego dolnego rogu prostokąta ograniczenia (w jednostkach logicznych).
x3
Określa współrzędną x punktu, który definiuje punkt początkowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
y3
Określa współrzędną y punktu, który definiuje punkt początkowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
x4
Określa współrzędną x punktu definiującego punkt końcowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
y4
Określa współrzędną y punktu, który definiuje punkt końcowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
lpRect
Określa prostokąt ograniczenia (w jednostkach logicznych). Można przekazać LPRECT
obiekt lub dla tego parametru CRect
.
ptStart
Określa współrzędne x-i y punktu definiujące punkt początkowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
ptEnd
Określa współrzędne x-i y punktu, który definiuje punkt końcowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Łuk rysowany przy użyciu funkcji jest segmentem wielokropka zdefiniowanego przez określony prostokąt ograniczenia.
Rzeczywisty punkt początkowy łuku to punkt, w którym promienie pobierane z środka prostokąta ograniczenia przez określony punkt początkowy przecina wielokropek. Rzeczywisty punkt końcowy łuku jest punktem, w którym promienie pobierane z środka prostokąta ograniczenia przez określony punkt końcowy przecina wielokropek. Łuk jest rysowany w kierunku przeciwkręciowym. Ponieważ łuk nie jest zamkniętą postacią, nie jest wypełniony. Zarówno szerokość, jak i wysokość prostokąta muszą być większe niż 2 jednostki i mniejsze niż 32 767 jednostek.
Przykład
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
Rysuje łuk wielokropowy.
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);
Parametry
x1
Określa współrzędną x lewego górnego rogu prostokąta ograniczenia (w jednostkach logicznych).
y1
Określa współrzędną y lewego górnego rogu prostokąta ograniczenia (w jednostkach logicznych).
x2
Określa współrzędną x prawego dolnego rogu prostokąta ograniczenia (w jednostkach logicznych).
y2
Określa współrzędną y prawego dolnego rogu prostokąta ograniczenia (w jednostkach logicznych).
x3
Określa współrzędną x punktu, który definiuje punkt początkowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
y3
Określa współrzędną y punktu, który definiuje punkt początkowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
x4
Określa współrzędną x punktu definiującego punkt końcowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
y4
Określa współrzędną y punktu, który definiuje punkt końcowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
lpRect
Określa prostokąt ograniczenia (w jednostkach logicznych). Wskaźnik można przekazać do RECT
struktury danych lub CRect
obiektu dla tego parametru.
ptStart
Określa współrzędne x-i y punktu definiujące punkt początkowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku. Można przekazać POINT
strukturę danych lub obiekt dla tego parametru CPoint
.
ptEnd
Określa współrzędne x-i y punktu, który definiuje punkt końcowy łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku. Można przekazać POINT
strukturę danych lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Ta funkcja jest podobna do CDC::Arc
funkcji , z tą różnicą, że bieżące położenie jest aktualizowane. Punkty ( x1
, y1
) i ( x2
y2
) określają prostokąt ograniczenia. Wielokropek utworzony przez dany prostokąt ograniczenia definiuje krzywą łuku. Łuk rozszerza kierunek odwrotny (domyślny kierunek łuku) od punktu, w którym przecina linię promieniową od środka prostokąta ograniczenia do ( *x3*
, y3
). Łuk kończy się, gdzie przecina linię promieniową z środka prostokąta ograniczenia do ( x4
, y4
). Jeśli punkt początkowy i punkt końcowy są takie same, zostanie narysowany pełny wielokropek.
Linia jest rysowana z bieżącej pozycji do punktu początkowego łuku. Jeśli nie wystąpi błąd, bieżąca pozycja jest ustawiona na punkt końcowy łuku. Łuk jest rysowany przy użyciu bieżącego pióra; nie jest wypełniony.
CDC::Attach
Użyj tej funkcji składowej, aby dołączyć element hDC
do CDC
obiektu.
BOOL Attach(HDC hDC);
Parametry
hDC
Kontekst urządzenia z systemem Windows.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Element hDC
jest przechowywany zarówno w m_hDC
kontekście urządzenia wyjściowego, jak i w m_hAttribDC
kontekście urządzenia atrybutu.
CDC::BeginPath
Otwiera nawias ścieżki w kontekście urządzenia.
BOOL BeginPath();
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Po otwarciu nawiasu ścieżki aplikacja może rozpocząć wywoływanie funkcji rysowania GDI w celu zdefiniowania punktów, które znajdują się w ścieżce. Aplikacja może zamknąć nawias ścieżki otwartej, wywołując funkcję składową EndPath
. Gdy aplikacja wywołuje BeginPath
metodę , wszystkie poprzednie ścieżki zostaną odrzucone.
Zobacz BeginPath
w zestawie Windows SDK, aby uzyskać listę funkcji rysunku, które definiują punkty w ścieżce.
Przykład
// 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
Kopiuje mapę bitową z kontekstu urządzenia źródłowego do bieżącego kontekstu urządzenia.
BOOL BitBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
DWORD dwRop);
Parametry
x
Określa współrzędną logiczną x lewego górnego rogu prostokąta docelowego.
y
Określa współrzędną logiczną y lewego górnego rogu prostokąta docelowego.
nWidth
Określa szerokość (w jednostkach logicznych) prostokąta docelowego i źródłowej mapy bitowej.
nHeight
Określa wysokość (w jednostkach logicznych) prostokąta docelowego i źródłowej mapy bitowej.
pSrcDC
Wskaźnik do obiektu identyfikującego CDC
kontekst urządzenia, z którego zostanie skopiowana mapa bitowa. Musi to być NULL
, jeśli dwRop
określa operację rasteru, która nie zawiera źródła.
xSrc
Określa logiczną współrzędną x lewego górnego rogu źródłowej mapy bitowej.
ySrc
Określa współrzędną logiczną y lewego górnego rogu źródłowej mapy bitowej.
dwRop
Określa operację rastrową, która ma być wykonana. Kody operacji raster-definiują sposób, w jaki GDI łączy kolory w operacjach wyjściowych, które obejmują bieżące szczotki, możliwą mapę bitową źródłową i docelową mapę bitową. Zobacz BitBlt
w zestawie Windows SDK, aby zapoznać się z listą kodów operacji raster-for dwRop
i ich opisów
Aby uzyskać pełną listę kodów operacji rasterowych, zobacz About Raster Operation Codes in the Windows SDK (Informacje o kodach operacji rasterowych w zestawie SDK systemu Windows).
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Aplikacja może wyrównać okna lub obszary klienta na granicach bajtów, aby upewnić się, że BitBlt
operacje są wykonywane na prostokątach wyrównanych bajtami. (Ustaw flagi CS_BYTEALIGNWINDOW
lub CS_BYTEALIGNCLIENT
podczas rejestrowania klas okien).
BitBlt
operacje na prostokątach wyrównanych bajtami są znacznie szybsze niż BitBlt
operacje na prostokątach, które nie są wyrównane bajtami. Jeśli chcesz określić style klas, takie jak wyrównanie bajtów dla własnego kontekstu urządzenia, musisz zarejestrować klasę okien, zamiast polegać na klasach programu Microsoft Foundation, aby to zrobić. Użyj funkcji AfxRegisterWndClass
globalnej .
Interfejs GDI przekształca i nWidth
nHeight
, raz przy użyciu kontekstu urządzenia docelowego, a raz przy użyciu kontekstu urządzenia źródłowego. Jeśli wynikowe zakresy nie są zgodne, GDI używa funkcji systemu Windows StretchBlt
do kompresowania lub rozciągania źródłowej mapy bitowej w razie potrzeby.
Jeśli mapa bitowa miejsca docelowego, źródła i wzorca nie ma tego samego formatu koloru, BitBlt
funkcja konwertuje mapy bitowe źródła i wzorca, aby pasowały do miejsca docelowego. Kolory pierwszego planu i tła docelowej mapy bitowej są używane w konwersji.
BitBlt
Gdy funkcja konwertuje monochromatyczną mapę bitową na kolor, ustawia białe bity (1) na kolor tła i czarne bity (0) na kolor pierwszego planu. Używane są kolory pierwszego planu i tła kontekstu urządzenia docelowego. Aby przekonwertować kolor na monochromatyczny, BitBlt
ustawia piksele pasujące do koloru tła na biały i ustawia wszystkie inne piksele na. BitBlt
używa pierwszego planu i kolorów tła kontekstu urządzenia kolorów, aby przekonwertować kolor na monochromatyczny.
Nie wszystkie konteksty urządzeń obsługują .BitBlt
Aby sprawdzić, czy dany kontekst urządzenia obsługuje BitBlt
, użyj funkcji składowej GetDeviceCaps
i określ indeks RASTERCAPS.
Przykład
Zobacz przykład dla elementu CDC::CreateCompatibleDC
.
CDC::CDC
CDC
Tworzy obiekt.
CDC();
CDC::Chord
Rysuje akord (zamknięta postać ograniczona przez przecięcie wielokropka i segment linii).
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);
Parametry
x1
Określa współrzędną x lewego górnego rogu prostokąta ograniczenia akordu (w jednostkach logicznych).
y1
Określa współrzędną y lewego górnego rogu prostokąta ograniczenia akordu (w jednostkach logicznych).
x2
Określa współrzędną x prawego dolnego rogu prostokąta ograniczenia akordu (w jednostkach logicznych).
y2
Określa współrzędną y prawego dolnego rogu prostokąta ograniczenia akordu (w jednostkach logicznych).
x3
Określa współrzędną x punktu, który definiuje punkt początkowy akordu (w jednostkach logicznych).
y3
Określa współrzędną y punktu, który definiuje punkt początkowy akordu (w jednostkach logicznych).
x4
Określa współrzędną x punktu, który definiuje punkt końcowy akordu (w jednostkach logicznych).
y4
Określa współrzędną y punktu, który definiuje punkt końcowy akordu (w jednostkach logicznych).
lpRect
Określa prostokąt ograniczenia (w jednostkach logicznych). Można przekazać LPRECT
obiekt lub dla tego parametru CRect
.
ptStart
Określa współrzędne x-i y punktu, który definiuje punkt początkowy akordu (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na akord. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
*ptEnd*
Określa współrzędne x-i y punktu, który definiuje punkt końcowy akordu (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na akord. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Parametry ( , y1
) i ( x2
x1
y2
) określają odpowiednio lewe i dolne narożniki prostokąta ograniczającego wielokropek, który jest częścią akordu. Parametry ( , y3
) i ( x4
x3
y4
) określają punkty końcowe wiersza przecinające wielokropek. Akord jest rysowany przy użyciu zaznaczonego pióra i wypełnionego za pomocą wybranego pędzla.
Rysunek rysowany przez Chord
funkcję rozszerza się do, ale nie zawiera współrzędnych prawej i dolnej. Oznacza to, że wysokość rysunku to y2
- y1
, a szerokość rysunku to .x2
- x1
Przykład
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
Zamyka otwartą postać w ścieżce.
BOOL CloseFigure();
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Funkcja zamyka rysunek, rysując wiersz z bieżącego położenia na pierwszy punkt rysunku (zazwyczaj punkt określony przez ostatnie wywołanie MoveTo
funkcji składowej) i łączy linie przy użyciu stylu sprzężenia liniowego. Jeśli rysunek jest zamknięty przy użyciu funkcji składowej LineTo
zamiast CloseFigure
, limity końcowe są używane do tworzenia rogu zamiast sprzężenia. CloseFigure
powinna być wywoływana tylko wtedy, gdy w kontekście urządzenia znajduje się nawias ścieżki otwartej.
Rysunek w ścieżce jest otwarty, chyba że zostanie jawnie zamknięty przy użyciu tej funkcji. (Rysunek może być otwarty, nawet jeśli bieżący punkt i punkt początkowy rysunku są takie same). Każda linia lub krzywa dodana do ścieżki po CloseFigure
rozpoczęciu nowego rysunku.
CDC::CreateCompatibleDC
Tworzy kontekst urządzenia pamięci zgodny z urządzeniem określonym przez pDC
program .
BOOL CreateCompatibleDC(CDC* pDC);
Parametry
pDC
Wskaźnik do kontekstu urządzenia. Jeśli pDC
jest NULL
to , funkcja tworzy kontekst urządzenia pamięci zgodny z wyświetlaczem systemu.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Kontekst urządzenia pamięci to blok pamięci, który reprezentuje powierzchnię wyświetlania. Można go użyć do przygotowania obrazów w pamięci przed skopiowaniem ich do rzeczywistej powierzchni urządzenia zgodnego urządzenia.
Po utworzeniu kontekstu urządzenia pamięci interfejs GDI automatycznie wybiera dla niego 1-by-1 monochromatyczną mapę bitową. Funkcje wyjściowe GDI mogą być używane z kontekstem urządzenia pamięci tylko wtedy, gdy mapa bitowa została utworzona i wybrana w tym kontekście.
Ta funkcja może służyć tylko do tworzenia zgodnych kontekstów urządzenia dla urządzeń obsługujących operacje rasterowe. Zobacz funkcję składową, CDC::BitBlt
aby uzyskać informacje dotyczące transferów bloków bitowych między kontekstami urządzenia. Aby określić, czy kontekst urządzenia obsługuje operacje rasterowe, zobacz RC_BITBLT
możliwości rasteru w funkcji CDC::GetDeviceCaps
składowej .
Przykład
// 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
Tworzy kontekst urządzenia dla określonego urządzenia.
BOOL CreateDC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Parametry
lpszDriverName
Wskazuje ciąg o wartości null, który określa nazwę pliku (bez rozszerzenia) sterownika urządzenia (na przykład "EPSON
"). Można również przekazać obiekt dla tego parametru CString
.
lpszDeviceName
Wskazuje ciąg zakończony o wartości null, który określa nazwę określonego urządzenia, które ma być obsługiwane (na przykład "EPSON FX-80
"). Parametr lpszDeviceName
jest używany, jeśli moduł obsługuje więcej niż jedno urządzenie. Można również przekazać obiekt dla tego parametru CString
.
lpszOutput
Wskazuje ciąg o wartości null, który określa nazwę pliku lub urządzenia fizycznego nośnika wyjściowego (plik lub port wyjściowy). Można również przekazać obiekt dla tego parametru CString
.
lpInitData
Wskazuje strukturę zawierającą DEVMODE
dane inicjowania specyficzne dla urządzenia dla sterownika urządzenia. Funkcja systemu Windows DocumentProperties
pobiera tę strukturę wypełnioną dla danego urządzenia. Parametr lpInitData
musi byćNULL
, jeśli sterownik urządzenia ma używać domyślnej inicjalizacji (jeśli istnieje) określonej przez użytkownika za pośrednictwem Panel sterowania.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Plik nagłówka PRINT.H
DEVMODE
jest wymagany, jeśli używana jest struktura.
Nazwy urządzeń są zgodne z następującymi konwencjami: dwukropek końcowy (:) jest zalecany, ale opcjonalny. System Windows usuwa dwukropek zakończenia, tak aby nazwa urządzenia kończąca się dwukropkiem została zamapowana na ten sam port co ta sama nazwa bez dwukropka. Nazwy sterowników i portów nie mogą zawierać spacji wiodących ani końcowych. Funkcji wyjściowych GDI nie można używać z kontekstami informacji.
CDC::CreateIC
Tworzy kontekst informacji dla określonego urządzenia.
BOOL CreateIC(
LPCTSTR lpszDriverName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput,
const void* lpInitData);
Parametry
lpszDriverName
Wskazuje ciąg o wartości null, który określa nazwę pliku (bez rozszerzenia) sterownika urządzenia (na przykład "EPSON
"). Można przekazać CString
obiekt dla tego parametru.
lpszDeviceName
Wskazuje ciąg zakończony o wartości null, który określa nazwę określonego urządzenia, które ma być obsługiwane (na przykład "EPSON FX-80
"). Parametr lpszDeviceName
jest używany, jeśli moduł obsługuje więcej niż jedno urządzenie. Można przekazać CString
obiekt dla tego parametru.
lpszOutput
Wskazuje ciąg zakończony o wartości null, który określa nazwę pliku lub urządzenia dla fizycznego nośnika wyjściowego (pliku lub portu). Można przekazać CString
obiekt dla tego parametru.
lpInitData
Wskazuje dane inicjowania specyficzne dla urządzenia dla sterownika urządzenia. Parametr lpInitData
musi byćNULL
, jeśli sterownik urządzenia ma używać domyślnej inicjalizacji (jeśli istnieje) określonej przez użytkownika za pośrednictwem Panel sterowania. Zobacz CreateDC
format danych na potrzeby inicjowania specyficznego dla urządzenia.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Kontekst informacyjny zapewnia szybki sposób uzyskiwania informacji o urządzeniu bez tworzenia kontekstu urządzenia.
Nazwy urządzeń są zgodne z następującymi konwencjami: dwukropek końcowy (:) jest zalecany, ale opcjonalny. System Windows usuwa dwukropek zakończenia, tak aby nazwa urządzenia kończąca się dwukropkiem została zamapowana na ten sam port co ta sama nazwa bez dwukropka. Nazwy sterowników i portów nie mogą zawierać spacji wiodących ani końcowych. Funkcji wyjściowych GDI nie można używać z kontekstami informacji.
CDC::DeleteDC
Ogólnie rzecz biorąc, nie należy wywoływać tej funkcji; destruktor zrobi to za Ciebie.
BOOL DeleteDC();
Wartość zwracana
Nonzero, jeśli funkcja została ukończona pomyślnie; w przeciwnym razie 0.
Uwagi
Funkcja DeleteDC
składowa usuwa konteksty urządzenia z systemem Windows skojarzone z m_hDC
bieżącym CDC
obiektem. Jeśli ten CDC
obiekt jest ostatnim aktywnym kontekstem urządzenia dla danego urządzenia, zostaną zwolnione wszystkie zasoby magazynu i systemu używane przez urządzenie.
Aplikacja nie powinna wywoływać DeleteDC
, jeśli obiekty zostały wybrane w kontekście urządzenia. Przed usunięciem należy najpierw zaznaczyć obiekty poza kontekstem urządzenia.
Aplikacja nie może usunąć kontekstu urządzenia, którego uchwyt został uzyskany przez wywołanie metody CWnd::GetDC
. Zamiast tego należy wywołać metodę CWnd::ReleaseDC
, aby zwolnić kontekst urządzenia. Klasy CClientDC
i CWindowDC
są udostępniane do zawijania tej funkcji.
Funkcja DeleteDC
jest zwykle używana do usuwania kontekstów urządzeń utworzonych za pomocą CreateDC
metody , CreateIC
lub CreateCompatibleDC
.
Przykład
Zobacz przykład dla elementu CPrintDialog::GetPrinterDC
.
CDC::DeleteTempMap
Wywoływana automatycznie przez CWinApp
program obsługi bezczynności usuwa DeleteTempMap
wszystkie obiekty tymczasowe CDC
utworzone przez FromHandle
program , ale nie niszczy uchwytów kontekstu urządzenia (hDC
s) tymczasowo skojarzonych z CDC
obiektami.
static void PASCAL DeleteTempMap();
CDC::Detach
Wywołaj tę funkcję, aby odłączyć m_hDC
(kontekst urządzenia wyjściowego) od CDC
obiektu i ustawić wartość m_hDC
i m_hAttribDC
.NULL
HDC Detach();
Wartość zwracana
Kontekst urządzenia z systemem Windows.
CDC::DPtoHIMETRIC
Użyj tej funkcji, gdy nadajesz HIMETRIC
rozmiary ole, konwertując piksele na HIMETRIC
.
void DPtoHIMETRIC(LPSIZE lpSize) const;
Parametry
lpSize
Wskazuje strukturę lub CSize
obiekt SIZE.
Uwagi
Jeśli tryb mapowania obiektu kontekstu urządzenia to MM_LOENGLISH
, MM_HIENGLISH
, MM_LOMETRIC
lub MM_HIMETRIC
, konwersja jest oparta na liczbie pikseli w calach fizycznych. Jeśli tryb mapowania jest jednym z pozostałych trybów bez ograniczeń (na przykład MM_TEXT
), konwersja jest oparta na liczbie pikseli w calu logicznym.
CDC::DPtoLP
Konwertuje jednostki urządzeń na jednostki logiczne.
void DPtoLP(
LPPOINT lpPoints,
int nCount = 1) const;
void DPtoLP(LPRECT lpRect) const;
void DPtoLP(LPSIZE lpSize) const;
Parametry
lpPoints
Wskazuje tablicę POINT
struktur lub CPoint
obiektów.
nCount
Liczba punktów w tablicy.
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt. Ten parametr jest używany w przypadku prostego przypadku konwertowania jednego prostokąta z punktów urządzenia na punkty logiczne.
lpSize
SIZE
Wskazuje strukturę lub CSize
obiekt.
Uwagi
Funkcja mapuje współrzędne każdego punktu lub wymiaru rozmiaru z układu współrzędnych urządzenia do logicznego systemu współrzędnych GDI. Konwersja zależy od bieżącego trybu mapowania oraz ustawień źródeł i zakresów okna i widoku urządzenia.
CDC::Draw3dRect
Wywołaj tę funkcję składową, aby narysować prostokąt trójwymiarowy.
void Draw3dRect(
LPCRECT lpRect,
COLORREF clrTopLeft,
COLORREF clrBottomRight);
void Draw3dRect(
int x,
int y,
int cx,
int cy,
COLORREF clrTopLeft,
COLORREF clrBottomRight);
Parametry
lpRect
Określa prostokąt ograniczenia (w jednostkach logicznych). Wskaźnik można przekazać do RECT
struktury lub obiektu dla tego parametru CRect
.
clrTopLeft
Określa kolor lewej i górnej części prostokąta trójwymiarowego.
clrBottomRight
Określa kolor dolnej i prawej strony prostokąta trójwymiarowego.
x
Określa logiczną współrzędną x lewego górnego rogu trójwymiarowego prostokąta.
y
Określa współrzędną logiczną y lewego górnego rogu trójwymiarowego prostokąta.
cx
Określa szerokość trójwymiarowego prostokąta.
cy
Określa wysokość trójwymiarowego prostokąta.
Uwagi
Prostokąt zostanie narysowany z bokami u góry i lewej strony w kolorze określonym przez clrTopLeft
oraz dolną i prawą stronę w kolorze określonym przez clrBottomRight
.
Przykład
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
Wywołaj tę funkcję składową wielokrotnie, aby ponownie wyrysować prostokąt przeciągania.
void DrawDragRect(
LPCRECT lpRect,
SIZE size,
LPCRECT lpRectLast,
SIZE sizeLast,
CBrush* pBrush = NULL,
CBrush* pBrushLast = NULL);
Parametry
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt, który określa współrzędne logiczne prostokąta — w tym przypadku położenie końcowe prostokąta jest ponownie rysowane.
size
Określa przemieszczenie od lewego górnego rogu obramowania zewnętrznego do lewego górnego rogu obramowania wewnętrznego (czyli grubość obramowania) prostokąta.
lpRectLast
RECT
Wskazuje strukturę lub CRect
obiekt, który określa współrzędne logiczne położenia prostokąta — w tym przypadku oryginalna pozycja prostokąta jest ponownie rysowana.
sizeLast
Określa przemieszczenie z lewego górnego rogu obramowania zewnętrznego do lewego górnego rogu obramowania wewnętrznego (czyli grubość obramowania) oryginalnego prostokąta, który jest ponownie rysowane.
pBrush
Wskaźnik do obiektu szczotki. Ustaw wartość , aby NULL
użyć domyślnego pędzla półtonu.
pBrushLast
Wskaźnik do ostatniego użytego obiektu pędzla. Ustaw wartość , aby NULL
użyć domyślnego pędzla półtonu.
Uwagi
Wywołaj ją w pętli podczas próbkowania położenia myszy, aby przekazać opinię wizualną. Po wywołaniu DrawDragRect
polecenia poprzedni prostokąt zostanie wymazany i zostanie narysowany nowy. Na przykład gdy użytkownik przeciąga prostokąt na ekranie, DrawDragRect
wymazuje oryginalny prostokąt i ponownie rysuje nowy prostokąt w nowej pozycji. Domyślnie rysuje prostokąt za pomocą pędzla półtonu, DrawDragRect
aby wyeliminować migotanie i utworzyć wygląd płynnie poruszającego się prostokąta.
Przy pierwszym wywołaniu DrawDragRect
parametr powinien lpRectLast
mieć NULL
wartość .
CDC::DrawEdge
Wywołaj tę funkcję składową, aby narysować krawędzie prostokąta określonego typu i stylu.
BOOL DrawEdge(
LPRECT lpRect,
UINT nEdge,
UINT nFlags);
Parametry
lpRect
Wskaźnik do RECT
struktury zawierającej współrzędne logiczne prostokąta.
nEdge
Określa typ krawędzi wewnętrznej i zewnętrznej do rysowania. Ten parametr musi być kombinacją jednej flagi obramowania wewnętrznego i jednej flagi obramowania zewnętrznego. Zobacz DrawEdge
w zestawie Windows SDK, aby zapoznać się z tabelą typów parametrów.
nFlags
Flagi określające typ obramowania do narysowania. Zobacz DrawEdge
w zestawie Windows SDK, aby zapoznać się z tabelą wartości parametru. W przypadku linii BF_RECT
po przekątnej flagi określają punkt końcowy wektora ograniczonego przez parametr prostokąta.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
CDC::DrawEscape
Uzyskuje dostęp do możliwości rysowania wyświetlacza wideo, które nie są dostępne bezpośrednio za pośrednictwem interfejsu urządzenia graficznego (GDI).
int DrawEscape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData);
Parametry
nEscape
Określa funkcję ucieczki do wykonania.
nInputSize
Określa liczbę bajtów danych wskazywanych przez lpszInputData
parametr .
lpszInputData
Wskazuje strukturę wejściową wymaganą dla określonej ucieczki.
Wartość zwracana
Określa wynik funkcji. Wartość większa niż zero w przypadku powodzenia, z wyjątkiem QUERYESCSUPPORT
ucieczki losowania, która sprawdza tylko implementację; lub zero, jeśli ucieczka nie jest zaimplementowana; lub mniejsza niż zero, jeśli wystąpił błąd.
Uwagi
Gdy aplikacja wywołuje DrawEscape
metodę , dane zidentyfikowane przez nInputSize
i lpszInputData
są przekazywane bezpośrednio do określonego sterownika wyświetlania.
CDC::DrawFocusRect
Rysuje prostokąt w stylu używanym do wskazania, że prostokąt ma fokus.
void DrawFocusRect(LPCRECT lpRect);
Parametry
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt, który określa współrzędne logiczne prostokąta do narysowania.
Uwagi
Ponieważ jest to funkcja logiczna XOR (^
), wywołanie tej funkcji po raz drugi z tym samym prostokątem powoduje usunięcie prostokąta z wyświetlacza. Nie można przewijać prostokąta rysowanego przez tę funkcję. Aby przewinąć obszar zawierający prostokąt rysowany przez tę funkcję, najpierw wywołaj metodę DrawFocusRect
usunięcia prostokąta z wyświetlacza, a następnie przewiń obszar, a następnie wywołaj DrawFocusRect
ponownie, aby narysować prostokąt w nowej pozycji.
Uwaga
DrawFocusRect
działa tylko w MM_TEXT
trybie. W innych trybach ta funkcja nie rysuje poprawnie prostokąta fokusu, ale nie zwraca wartości błędów.
CDC::DrawFrameControl
Wywołaj tę funkcję składową, aby narysować kontrolkę ramki określonego typu i stylu.
BOOL DrawFrameControl(
LPRECT lpRect,
UINT nType,
UINT nState);
Parametry
lpRect
Wskaźnik do RECT
struktury zawierającej współrzędne logiczne prostokąta.
nType
Określa typ kontrolki ramki do rysowania. uType
Zobacz parametr w DrawFrameControl
zestawie Windows SDK, aby uzyskać listę możliwych wartości tego parametru.
nState
Określa początkowy stan kontrolki ramki. Może być co najmniej jedną wartością opisaną dla parametru uState
w DrawFrameControl
zestawie Windows SDK. nState
Użyj wartości DFCS_ADJUSTRECT
, aby dostosować prostokąt ograniczenia, aby wykluczyć otaczające krawędzie przycisku.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
W kilku przypadkach nState
zależy od parametru nType
. Na poniższej liście przedstawiono relację między czterema nType
wartościami i nState
:
DFC_BUTTON
DFCS_BUTTON3STATE
Przycisk trójstanowyDFCS_BUTTONCHECK
Pole wyboruDFCS_BUTTONPUSH
PrzyciskDFCS_BUTTONRADIO
Przycisk radiowyDFCS_BUTTONRADIOIMAGE
Obraz przycisku radiowego (obraz bez kwadratu wymaga obrazu)DFCS_BUTTONRADIOMASK
Maska przycisku radiowego (nonsquare wymaga maski)
DFC_CAPTION
DFCS_CAPTIONCLOSE
Przycisk ZamknijDFCS_CAPTIONHELP
Przycisk PomocDFCS_CAPTIONMAX
Przycisk MaksymalizujDFCS_CAPTIONMIN
Przycisk MinimalizujDFCS_CAPTIONRESTORE
Przycisk Przywróć
DFC_MENU
DFCS_MENUARROW
Strzałka podmenuDFCS_MENUBULLET
PociskDFCS_MENUCHECK
Znacznik wyboru
DFC_SCROLL
DFCS_SCROLLCOMBOBOX
Pasek przewijania pola kombiDFCS_SCROLLDOWN
Strzałka w dół paska przewijaniaDFCS_SCROLLLEFT
Strzałka w lewo paska przewijaniaDFCS_SCROLLRIGHT
Strzałka w prawo paska przewijaniaDFCS_SCROLLSIZEGRIP
Uchwyt rozmiaru w prawym dolnym rogu oknaDFCS_SCROLLUP
Strzałka w górę paska przewijania
Przykład
Ten kod rysuje uchwyt rozmiaru w prawym dolnym rogu okna. Jest to odpowiednie dla OnPaint
obsługi okna dialogowego, który nie ma stylów i zwykle nie zawiera innych kontrolek (takich jak pasek stanu), które mogą dać mu uchwyt rozmiaru.
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
Rysuje ikonę na urządzeniu reprezentowanym przez bieżący CDC
obiekt.
BOOL DrawIcon(
int x,
int y,
HICON hIcon);
BOOL DrawIcon(
POINT point,
HICON hIcon);
Parametry
x
Określa współrzędną logiczną x lewego górnego rogu ikony.
y
Określa współrzędną logiczną y w lewym górnym rogu ikony.
hIcon
Określa uchwyt ikony do narysowania.
point
Określa współrzędne logiczne x-i y lewego górnego rogu ikony. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Nonzero, jeśli funkcja została ukończona pomyślnie; w przeciwnym razie 0.
Uwagi
Funkcja umieszcza lewy górny róg ikony w lokalizacji określonej przez x
i y
. Lokalizacja podlega bieżącemu trybowi mapowania kontekstu urządzenia.
Zasób ikony musi zostać wcześniej załadowany przy użyciu funkcji CWinApp::LoadIcon
, CWinApp::LoadStandardIcon
lub CWinApp::LoadOEMIcon
. Przed MM_TEXT
użyciem tej funkcji należy wybrać tryb mapowania.
Przykład
Zobacz przykład dla elementu CWnd::IsIconic
.
CDC::DrawState
Wywołaj tę funkcję składową, aby wyświetlić obraz i zastosować efekt wizualny, aby wskazać stan, taki jak wyłączony lub domyślny.
Uwaga
Dla wszystkich nFlag
stanów z wyjątkiem DSS_NORMAL
obrazu obraz jest konwertowany na monochromatyczny przed zastosowaniem efektu wizualnego.
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);
Parametry
pt
Określa lokalizację obrazu.
size
Określa rozmiar obrazu.
hBitmap
Uchwyt do mapy bitowej.
nFlags
Flagi określające typ i stan obrazu. Zobacz DrawState
w zestawie Windows SDK, aby uzyskać informacje o możliwych typach i stanach nFlags .
hBrush
Uchwyt do szczotki.
pBitmap
Wskaźnik do CBitmap
obiektu.
pBrush
Wskaźnik do CBrush
obiektu.
hIcon
Uchwyt do ikony.
lpszText
Wskaźnik do tekstu.
bPrefixText
Tekst, który może zawierać mnemonic akceleratora. Parametr lData
określa adres ciągu, a nTextLen
parametr określa długość. Jeśli nTextLen
wartość to 0, przyjmuje się, że ciąg ma zostać zakończony wartością null.
nTextLen
Długość ciągu tekstowego wskazywanego przez lpszText
. Jeśli nTextLen
wartość to 0, przyjmuje się, że ciąg ma zostać zakończony wartością null.
lpDrawProc
Wskaźnik do funkcji wywołania zwrotnego używanej do renderowania obrazu. Ten parametr jest wymagany, jeśli typ obrazu w nFlags
pliku to DST_COMPLEX
. Jest to opcjonalne i może mieć wartość NULL
, jeśli typ obrazu to DST_TEXT
. Dla wszystkich innych typów obrazów ten parametr jest ignorowany. Aby uzyskać więcej informacji na temat funkcji wywołania zwrotnego, zobacz DrawStateProc
funkcję w zestawie Windows SDK.
lData
Określa informacje o obrazie. Znaczenie tego parametru zależy od typu obrazu.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
CDC::DrawText
Wywołaj tę funkcję składową, aby sformatować tekst w danym prostokątze. Aby określić więcej opcji formatowania, użyj polecenia CDC::DrawTextEx
.
virtual int DrawText(
LPCTSTR lpszString,
int nCount,
LPRECT lpRect,
UINT nFormat);
int DrawText(
const CString& str,
LPRECT lpRect,
UINT nFormat);
Parametry
lpszString
Wskazuje ciąg, który ma zostać narysowany. Jeśli nCount
wartość to -1, ciąg musi być zakończony wartością null.
nCount
Określa liczbę znaków w ciągu. Jeśli nCount
wartość to -1, przyjmuje się, lpszString
że jest długim wskaźnikiem do ciągu zakończonego wartością null i DrawText
automatycznie oblicza liczbę znaków.
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt, który zawiera prostokąt (we współrzędnych logicznych), w którym tekst ma być sformatowany.
str
CString
Obiekt zawierający określone znaki do narysowania.
nFormat
Określa metodę formatowania tekstu. Może to być dowolna kombinacja wartości opisanych dla parametru uFormat
w DrawText
zestawie Windows SDK. (połącz przy użyciu operatora bitowego OR):
Uwaga
Niektóre uFormat
kombinacje flag mogą spowodować modyfikację przekazanego ciągu. Użycie polecenia DT_MODIFYSTRING
z elementem DT_END_ELLIPSIS
lub DT_PATH_ELLIPSIS
może spowodować zmodyfikowanie ciągu, co powoduje asercji w przesłonięciu CString
. DT_CALCRECT
Wartości , , DT_EXTERNALLEADING
DT_INTERNAL
, DT_NOCLIP
i DT_NOPREFIX
nie mogą być używane z wartością DT_TABSTOP
.
Wartość zwracana
Wysokość tekstu, jeśli funkcja zakończy się pomyślnie.
Uwagi
Formatuje tekst, rozszerzając karty na odpowiednie spacje, wyrównując tekst do lewej, prawej lub środkowej danego prostokąta oraz dzieląc tekst na wiersze mieszczące się w danym prostokątze. Typ formatowania jest określony przez nFormat
.
Ta funkcja składowa używa wybranej czcionki, koloru tekstu i koloru tła kontekstu urządzenia, aby narysować tekst. DT_NOCLIP
Jeśli format nie zostanie użyty, DrawText
wycinek tekstu tak, aby tekst nie był wyświetlany poza danym prostokątem. Przyjmuje się, że całe formatowanie ma wiele wierszy, chyba że DT_SINGLELINE
zostanie podany format.
Jeśli wybrana czcionka jest zbyt duża dla określonego prostokąta, DrawText
funkcja składowa nie próbuje zastąpić mniejszej czcionki.
Jeśli flaga DT_CALCRECT
zostanie określona, prostokąt określony przez lpRect
zostanie zaktualizowany, aby odzwierciedlić szerokość i wysokość wymaganą do narysowania tekstu.
Jeśli ustawiono flagę TA_UPDATECP
wyrównania tekstu (zobacz CDC::SetTextAlign
), DrawText
zostanie wyświetlony tekst rozpoczynający się od bieżącego położenia, a nie po lewej stronie danego prostokąta. DrawText
nie będzie zawijać tekstu, gdy flaga TA_UPDATECP
została ustawiona (oznacza to, że flaga DT_WORDBREAK
nie będzie miała żadnego wpływu).
Kolor tekstu może być ustawiony przez CDC::SetTextColor
.
CDC::DrawTextEx
Formatuje tekst w danym prostokątze.
virtual int DrawTextEx(
LPTSTR lpszString,
int nCount,
LPRECT lpRect,
UINT nFormat,
LPDRAWTEXTPARAMS lpDTParams);
int DrawTextEx(
const CString& str,
LPRECT lpRect,
UINT nFormat,
LPDRAWTEXTPARAMS lpDTParams);
Parametry
lpszString
Wskazuje ciąg, który ma zostać narysowany. Jeśli nCount
wartość to -1, ciąg musi być zakończony o wartości null.
nCount
Określa liczbę znaków w ciągu. Jeśli nCount
wartość to -1, przyjmuje się, lpszString
że jest długim wskaźnikiem do ciągu zakończonego wartością null i DrawText
automatycznie oblicza liczbę znaków.
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt, który zawiera prostokąt (we współrzędnych logicznych), w którym tekst ma być sformatowany.
str
CString
Obiekt zawierający określone znaki do narysowania.
nFormat
Określa metodę formatowania tekstu. Może to być dowolna kombinacja wartości opisanych dla parametru uFormat
w DrawText
zestawie Windows SDK. (Połącz przy użyciu bitowego OPERATOR OR ):
Uwaga
Niektóre uFormat
kombinacje flag mogą spowodować modyfikację przekazanego ciągu. Użycie polecenia DT_MODIFYSTRING
z elementem DT_END_ELLIPSIS
lub DT_PATH_ELLIPSIS
może spowodować zmodyfikowanie ciągu, co powoduje asercji w przesłonięciu CString
. DT_CALCRECT
Wartości , , DT_EXTERNALLEADING
DT_INTERNAL
, DT_NOCLIP
i DT_NOPREFIX
nie mogą być używane z wartością DT_TABSTOP
.
lpDTParams
Wskaźnik do DRAWTEXTPARAMS
struktury, która określa więcej opcji formatowania. Ten parametr może mieć wartość NULL
.
Uwagi
Formatuje tekst, rozszerzając karty na odpowiednie spacje, wyrównując tekst do lewej, prawej lub środkowej danego prostokąta oraz dzieląc tekst na wiersze mieszczące się w danym prostokątze. Typ formatowania jest określony przez nFormat
i lpDTParams
. Aby uzyskać więcej informacji, zobacz CDC::DrawText
i DrawTextEx
w zestawie Windows SDK.
Kolor tekstu może być ustawiony przez CDC::SetTextColor
.
CDC::Ellipse
Rysuje wielokropek.
BOOL Ellipse(
int x1,
int y1,
int x2,
int y2);
BOOL Ellipse(LPCRECT lpRect);
Parametry
x1
Określa współrzędną logiczną x lewego górnego rogu prostokąta ograniczenia wielokropka.
y1
Określa współrzędną logiczną y lewego górnego rogu prostokąta ograniczenia wielokropka.
x2
Określa logiczną współrzędną x prawego dolnego rogu prostokąta ograniczenia wielokropka.
y2
Określa logiczną współrzędną y prawego dolnego rogu prostokąta ograniczenia wielokropka.
lpRect
Określa prostokąt ograniczenia wielokropka. Można również przekazać obiekt dla tego parametru CRect
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Środek wielokropka to środek prostokąta ograniczenia określonego przez x1
, , y1
x2
i y2
lub lpRect
. Wielokropek jest rysowany za pomocą bieżącego pióra, a jego wnętrze jest wypełnione bieżącym szczotką.
Rysunek rysowany przez tę funkcję rozciąga się do, ale nie obejmuje, prawych i dolnych współrzędnych. Oznacza to, że wysokość rysunku to y2
- y1
, a szerokość rysunku to .x2
- x1
Jeśli szerokość lub wysokość prostokąta ograniczenia wynosi 0, żaden wielokropek nie jest rysowany.
CDC::EndDoc
Kończy zadanie drukowania uruchomione przez wywołanie funkcji składowej StartDoc
.
int EndDoc();
Wartość zwracana
Większe niż lub równe 0, jeśli funkcja zakończy się pomyślnie, lub wartość ujemna, jeśli wystąpił błąd.
Uwagi
Ta funkcja składowa zastępuje ucieczkę ENDDOC
drukarki i powinna być wywoływana natychmiast po zakończeniu pomyślnego zadania drukowania.
Jeśli aplikacja napotka błąd drukowania lub anulowaną operację drukowania, nie może podjąć próby zakończenia operacji przy użyciu polecenia EndDoc
lub AbortDoc
. GDI automatycznie kończy operację przed zwróceniem wartości błędu.
Ta funkcja nie powinna być używana wewnątrz metaplików.
Przykład
Zobacz przykład dla elementu CDC::StartDoc
.
CDC::EndPage
Informuje urządzenie, że aplikacja zakończyła zapisywanie na stronie.
int EndPage();
Wartość zwracana
Większe niż lub równe 0, jeśli funkcja zakończy się pomyślnie, lub wartość ujemna, jeśli wystąpił błąd.
Uwagi
Ta funkcja składowa jest zwykle używana do kierowania sterownika urządzenia w celu przechodzenia do nowej strony.
Ta funkcja składowa zastępuje ucieczkę NEWFRAME
drukarki. W przeciwieństwie do NEWFRAME
metody ta funkcja jest zawsze wywoływana po wydrukowaniu strony.
Przykład
Zobacz przykład dla elementu CDC::StartDoc
.
CDC::EndPath
Zamyka nawias ścieżki i wybiera ścieżkę zdefiniowaną przez nawias w kontekście urządzenia.
BOOL EndPath();
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Przykład
Zobacz przykład dla elementu CDC::BeginPath
.
CDC::EnumObjects
Wylicza pióra i szczotki dostępne w kontekście urządzenia.
int EnumObjects(
int nObjectType,
int (CALLBACK* lpfn)(
LPVOID,
LPARAM),
LPARAM lpData);
Parametry
nObjectType
Określa typ obiektu. Może mieć wartości OBJ_BRUSH
lub OBJ_PEN
.
lpfn
To adres wystąpienia procedury funkcji wywołania zwrotnego dostarczonej przez aplikację. Zobacz sekcję "Uwagi" poniżej.
lpData
Wskazuje dane dostarczone przez aplikację. Dane są przekazywane do funkcji wywołania zwrotnego wraz z informacjami o obiekcie.
Wartość zwracana
Określa ostatnią wartość zwracaną przez funkcję wywołania zwrotnego. Jego znaczenie jest definiowane przez użytkownika.
Uwagi
Dla każdego obiektu danego typu przekazana funkcja wywołania zwrotnego jest wywoływana z informacjami dla tego obiektu. System wywołuje funkcję wywołania zwrotnego, dopóki nie ma więcej obiektów lub funkcja wywołania zwrotnego zwraca wartość 0.
Nowe funkcje programu Microsoft Visual C++ umożliwiają używanie zwykłej funkcji jako funkcji przekazanej do EnumObjects
. Adres przekazany do EnumObjects
jest wskaźnikiem do funkcji wyeksportowanej z EXPORT
i z konwencją wywoływania Pascal. W aplikacjach trybu ochrony nie trzeba tworzyć tej funkcji za pomocą funkcji systemu Windows MakeProcInstance
ani zwalniać jej po użyciu z funkcją FreeProcInstance
systemu Windows.
Nie trzeba również eksportować nazwy funkcji w EXPORTS
instrukcji w pliku definicji modułu aplikacji. Zamiast tego można użyć EXPORT
modyfikatora funkcji, jak w
int CALLBACK EXPORT AFunction (LPSTR, LPSTR);
aby spowodować, że kompilator emituje odpowiedni rekord eksportu dla eksportu według nazwy bez aliasu. To działa w przypadku większości potrzeb. W niektórych specjalnych przypadkach, takich jak eksportowanie funkcji przez porządkowe lub alias eksportu, nadal trzeba użyć EXPORTS
instrukcji w pliku definicji modułu.
W przypadku kompilowania programów programu Microsoft Foundation zwykle użyjesz opcji kompilatora /GA
i /GEs
. Opcja /Gw
kompilatora nie jest używana z klasami programu Microsoft Foundation. (Jeśli używasz funkcji MakeProcInstance
systemu Windows, musisz jawnie rzutować zwrócony wskaźnik funkcji z FARPROC
do typu wymaganego w tym interfejsie API). Interfejsy rejestracji wywołania zwrotnego są teraz bezpieczne dla typu (należy przekazać wskaźnik funkcji wskazujący odpowiedni rodzaj funkcji dla określonego wywołania zwrotnego).
Ponadto wszystkie funkcje wywołania zwrotnego muszą wychwycić wyjątki programu Microsoft Foundation przed powrotem do systemu Windows, ponieważ wyjątki nie mogą być zgłaszane przez granice wywołania zwrotnego. Aby uzyskać więcej informacji na temat wyjątków, zobacz artykuł Wyjątki.
Przykład
// 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
Ta funkcja składowa jest praktycznie przestarzała w przypadku programowania Win32.
virtual int Escape(
int nEscape,
int nCount,
LPCSTR lpszInData,
LPVOID lpOutData);
int Escape(
int nEscape,
int nInputSize,
LPCSTR lpszInputData,
int nOutputSize,
LPSTR lpszOutputData);
Parametry
nEscape
Określa funkcję ucieczki do wykonania.
Aby uzyskać pełną listę funkcji ucieczki, zobacz Escape
w zestawie Windows SDK.
nCount
Określa liczbę bajtów danych wskazywanych przez lpszInData
.
lpszInData
Wskazuje strukturę danych wejściowych wymaganą dla tej ucieczki.
lpOutData
Wskazuje strukturę, która ma odbierać dane wyjściowe z tej ucieczki. Parametr lpOutData
ma NULL
wartość , jeśli żadne dane nie są zwracane.
nInputSize
Określa liczbę bajtów danych wskazywanych przez lpszInputData
parametr .
lpszInputData
Wskazuje strukturę wejściową wymaganą dla określonej ucieczki.
nOutputSize
Określa liczbę bajtów danych wskazywanych przez lpszOutputData
parametr .
lpszOutputData
Wskazuje strukturę odbierającą dane wyjściowe z tej ucieczki. Ten parametr powinien być NULL
, jeśli żadne dane nie są zwracane.
Wartość zwracana
Wartość dodatnia jest zwracana, jeśli funkcja zakończy się pomyślnie, z wyjątkiem ucieczki, która sprawdza tylko implementację QUERYESCSUPPORT
. Zero jest zwracane, jeśli ucieczka nie jest zaimplementowana. Wartość ujemna jest zwracana, jeśli wystąpił błąd. Poniżej przedstawiono typowe wartości błędów:
SP_ERROR
Błąd ogólny.SP_OUTOFDISK
Za mało miejsca na dysku jest obecnie dostępne na potrzeby buforowania i nie będzie dostępne żadne miejsce.SP_OUTOFMEMORY
Za mało pamięci jest dostępna do buforowania.SP_USERABORT
Użytkownik zakończył zadanie za pośrednictwem Menedżera wydruku.
Uwagi
Z oryginalnych uniknięć drukarki jest obsługiwana tylko QUERYESCSUPPORT
w przypadku aplikacji Win32. Wszystkie inne ucieczki drukarki są przestarzałe i są obsługiwane tylko w celu zapewnienia zgodności z aplikacjami 16-bitowymi.
W przypadku programowania CDC
Win32 teraz udostępnia sześć funkcji członkowskich, które zastępują odpowiednie ucieczki drukarki:
Ponadto CDC::GetDeviceCaps
obsługuje indeksy Win32, które zastępują inne ucieczki drukarki. Aby uzyskać więcej informacji, zobacz GetDeviceCaps
w zestawie Windows SDK.
Ta funkcja składowa umożliwia aplikacjom dostęp do obiektów określonego urządzenia, które nie są bezpośrednio dostępne za pośrednictwem interfejsu GDI.
Użyj pierwszej wersji, jeśli aplikacja używa wstępnie zdefiniowanych wartości ucieczki. Użyj drugiej wersji, jeśli aplikacja definiuje prywatne wartości ucieczki. Aby uzyskać więcej informacji na temat drugiej wersji, zobacz ExtEscape
w zestawie Windows SDK.
CDC::ExcludeClipRect
Tworzy nowy region wycinków, który składa się z istniejącego regionu wycinkowania pomniejszonego o określony prostokąt.
int ExcludeClipRect(
int x1,
int y1,
int x2,
int y2);
int ExcludeClipRect(LPCRECT lpRect);
Parametry
x1
Określa logiczną współrzędną x lewego górnego rogu prostokąta.
y1
Określa współrzędną logiczną y lewego górnego rogu prostokąta.
x2
Określa współrzędną logiczną x prawego dolnego rogu prostokąta.
y2
Określa logiczną współrzędną y prawego dolnego rogu prostokąta.
lpRect
Określa prostokąt. Może być również obiektem CRect
.
Wartość zwracana
Określa typ nowego regionu wycinków. Może to być dowolna z następujących wartości:
COMPLEXREGION
Region ma nakładające się granice.ERROR
Nie utworzono żadnego regionu.NULLREGION
Region jest pusty.SIMPLEREGION
Region nie ma nakładających się granic.
Uwagi
Szerokość prostokąta określonego przez wartość x2
- x1
bezwzględną , nie może przekraczać 32 767 jednostek. Ten limit dotyczy również wysokości prostokąta.
CDC::ExcludeUpdateRgn
Zapobiega rysowaniu w nieprawidłowych obszarach okna, wykluczając zaktualizowany region w oknie z regionu wycinkowania skojarzonego z obiektem CDC
.
int ExcludeUpdateRgn(CWnd* pWnd);
Parametry
pWnd
Wskazuje obiekt okna, którego okno jest aktualizowane.
Wartość zwracana
Typ wykluczonego regionu. Może to być dowolna z następujących wartości:
COMPLEXREGION
Region ma nakładające się granice.ERROR
Nie utworzono żadnego regionu.NULLREGION
Region jest pusty.SIMPLEREGION
Region nie ma nakładających się granic.
CDC::ExtFloodFill
Wypełnia obszar powierzchni wyświetlacza bieżącym pędzlem.
BOOL ExtFloodFill(
int x,
int y,
COLORREF crColor,
UINT nFillType);
Parametry
x
Określa logiczną współrzędną x punktu, w którym rozpoczyna się wypełnianie.
y
Określa logiczną współrzędną y punktu, w którym rozpoczyna się wypełnienie.
crColor
Określa kolor granicy lub obszaru do wypełnienia. Interpretacja parametru crColor
zależy od wartości nFillType
.
nFillType
Określa typ wypełnienia powodziowego do wykonania. Musi być jedną z następujących wartości:
FLOODFILLBORDER
Obszar wypełnienia jest ograniczony przez kolor określony przezcrColor
. Ten styl jest identyczny z wypełnieniem wykonywanym przezFloodFill
.FLOODFILLSURFACE
Obszar wypełnienia jest definiowany przez kolor określony przezcrColor
. Wypełnienie jest kontynuowane na zewnątrz we wszystkich kierunkach, o ile kolor jest napotkany. Ten styl jest przydatny do wypełniania obszarów z wielokolorowymi granicami.
Wartość zwracana
Nonzero, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0, jeśli nie można ukończyć wypełnienia, jeśli dany punkt ma kolor granic określony przez crColor
(jeśli FLOODFILLBORDER
został żądany), jeśli dany punkt nie ma koloru określonego przez crColor
(jeśli FLOODFILLSURFACE
zażądano), lub jeśli punkt znajduje się poza regionem wycinki.
Uwagi
Ta funkcja składowa zapewnia większą elastyczność niż FloodFill
dlatego, że można określić typ wypełnienia w elemencie nFillType
.
Jeśli nFillType
ustawiono FLOODFILLBORDER
wartość , zakłada się, że obszar jest całkowicie ograniczony przez kolor określony przez crColor
. Funkcja rozpoczyna się w punkcie określonym przez x
element i y
wypełnia wszystkie kierunki granic koloru.
Jeśli nFillType
jest ustawiona wartość FLOODFILLSURFACE
, funkcja zaczyna się w punkcie określonym przez x
i y
kontynuuje we wszystkich kierunkach, wypełniając wszystkie sąsiadujące obszary zawierające kolor określony przez crColor
.
Obsługiwane są tylko konteksty i urządzenia pamięci, które obsługują ExtFloodFill
technologię wyświetlania rasterowego. Aby uzyskać więcej informacji, zobacz funkcję składową GetDeviceCaps
.
CDC::ExtTextOut
Wywołaj tę funkcję składową, aby napisać ciąg znaków w regionie prostokątnym przy użyciu aktualnie wybranej czcionki.
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);
Parametry
x
Określa logiczną współrzędną x komórki znaków dla pierwszego znaku w określonym ciągu.
y
Określa współrzędną logiczną y górnej komórki znaku dla pierwszego znaku w określonym ciągu.
nOptions
Określa typ prostokąta. Ten parametr może być jednym, obu lub żadną z następujących wartości:
ETO_CLIPPED
Określa, że tekst jest przycięty do prostokąta.ETO_OPAQUE
Określa, że bieżący kolor tła wypełnia prostokąt. (Możesz ustawić bieżący kolor tła i wykonać zapytanie o bieżący kolor tła za pomocąSetBkColor
funkcji elementów członkowskich iGetBkColor
).
lpRect
RECT
Wskazuje strukturę, która określa wymiary prostokąta. Ten parametr może mieć wartość NULL
. Można również przekazać obiekt dla tego parametru CRect
.
lpszString
Wskazuje określony ciąg znaków do narysowania. Można również przekazać obiekt dla tego parametru CString
.
nCount
Określa liczbę znaków w ciągu.
lpDxWidths
Wskazuje tablicę wartości, które wskazują odległość między początkami sąsiednich komórek znaków. Na przykład lpDxWidths
[ i
] jednostki logiczne oddzielają początek komórki i
znaku i komórki i
znaku + 1. Jeśli lpDxWidths
wartość to NULL
, ExtTextOut
używa domyślnego odstępu między znakami.
str
CString
Obiekt zawierający określone znaki do narysowania.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Prostokątny region może być nieprzezroczystym (wypełniony bieżącym kolorem tła) i może być obszarem wycinków.
Jeśli nOptions
ma wartość 0 i lpRect
ma NULL
wartość , funkcja zapisuje tekst w kontekście urządzenia bez użycia prostokątnego regionu. Domyślnie bieżące położenie nie jest używane ani aktualizowane przez funkcję. Jeśli aplikacja musi zaktualizować bieżące położenie podczas wywoływania ExtTextOut
metody , aplikacja może wywołać CDC
funkcję SetTextAlign
składową z ustawioną wartością nFlags
TA_UPDATECP
. Po ustawieniu tej flagi system Windows ignoruje x
i y
na kolejnych wywołaniach ExtTextOut
i używa bieżącej pozycji. Gdy aplikacja używa TA_UPDATECP
do aktualizowania bieżącej pozycji, ExtTextOut
ustawia bieżące położenie na końcu poprzedniego wiersza tekstu lub na pozycję określoną przez ostatni element tablicy wskazywanej przez lpDxWidths
, w zależności od tego, która z nich jest większa.
CDC::FillPath
Zamyka wszystkie otwarte figury w bieżącej ścieżce i wypełnia wnętrze ścieżki przy użyciu bieżącego pędzla i trybu wypełniania wielokątnego.
BOOL FillPath();
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Po wypełnieniu wnętrza ścieżka zostanie odrzucona z kontekstu urządzenia.
CDC::FillRect
Wywołaj tę funkcję składową, aby wypełnić dany prostokąt przy użyciu określonego pędzla.
void FillRect(
LPCRECT lpRect,
CBrush* pBrush);
Parametry
lpRect
Wskazuje strukturę zawierającą RECT
współrzędne logiczne prostokąta do wypełnienia. Można również przekazać obiekt dla tego parametru CRect
.
pBrush
Identyfikuje szczotkę używaną do wypełnienia prostokąta.
Uwagi
Funkcja wypełnia pełny prostokąt, w tym lewe i górne obramowania, ale nie wypełnia prawych i dolnych obramowań.
Szczotka musi zostać utworzona przy użyciu funkcji składowych CBrush
, CreatePatternBrush
i , CreateSolidBrush
lub pobranych przez GetStockObject
funkcję systemu Windows.CreateHatchBrush
Podczas wypełniania określonego prostokąta FillRect
nie zawiera prawej i dolnej strony prostokąta. GDI wypełnia prostokąt w górę do, ale nie zawiera prawej kolumny i dolnego wiersza, niezależnie od bieżącego trybu mapowania. FillRect
porównuje wartości elementów top
, , bottom
left
i right
elementów członkowskich określonego prostokąta. Jeśli bottom
wartość jest mniejsza lub równa top
, lub jeśli right
jest mniejsza lub równa left
, prostokąt nie jest rysowany.
FillRect
jest podobny do CDC::FillSolidRect
; jednak FillRect
przyjmuje szczotkę i dlatego można użyć do wypełnienia prostokąta z solidnym kolorem, kolorem dyżarnym, szczotkami wyklutymi lub wzorem. FillSolidRect
używa tylko stałych kolorów (wskazywanych COLORREF
przez parametr). FillRect
zwykle jest wolniejsza niż FillSolidRect
.
CDC::FillRgn
Wypełnia region określony pRgn
przez za pomocą pędzla określonego przez pBrush
.
BOOL FillRgn(
CRgn* pRgn,
CBrush* pBrush);
Parametry
pRgn
Wskaźnik do wypełnienia regionu. Współrzędne dla danego regionu są określone w jednostkach logicznych.
pBrush
Identyfikuje szczotkę, która ma być używana do wypełnienia regionu.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Szczotka musi zostać utworzona przy użyciu funkcji składowych CBrush
, CreatePatternBrush
, CreateSolidBrush
lub pobranych przez GetStockObject
program .CreateHatchBrush
Przykład
Zobacz przykład dla elementu CRgn::CreateRoundRectRgn
.
CDC::FillSolidRect
Wywołaj tę funkcję składową, aby wypełnić dany prostokąt określonym kolorem stałym.
void FillSolidRect(
LPCRECT lpRect,
COLORREF clr);
void FillSolidRect(
int x,
int y,
int cx,
int cy,
COLORREF clr);
Parametry
lpRect
Określa prostokąt ograniczenia (w jednostkach logicznych). Wskaźnik można przekazać do RECT
struktury danych lub CRect
obiektu dla tego parametru.
clr
Określa kolor, który ma być używany do wypełnienia prostokąta.
x
Określa logiczną współrzędną x lewego górnego rogu prostokąta.
y
Określa współrzędną logiczną y lewego górnego rogu prostokąta docelowego.
cx
Określa szerokość prostokąta.
cy
Określa wysokość prostokąta.
Uwagi
FillSolidRect
jest bardzo podobny do CDC::FillRect
; jednak FillSolidRect
używa tylko stałych kolorów (wskazywanych przez COLORREF
parametr), podczas gdy FillRect
pobiera szczotkę i dlatego można użyć do wypełnienia prostokąta z stałym kolorem, kolorem dyterowanym, szczotkami kreskowymi lub wzorcem. FillSolidRect
zwykle wartość jest szybsza niż FillRect
.
Uwaga
Podczas wywoływania FillSolidRect
elementu kolor tła, który został wcześniej ustawiony przy użyciu SetBkColor
, jest ustawiony na kolor wskazany przez clr
.
CDC::FlattenPath
Przekształca wszystkie krzywe w ścieżce wybranej w bieżący kontekst urządzenia i zamienia każdą krzywą w sekwencję linii.
BOOL FlattenPath();
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
CDC::FloodFill
Wypełnia obszar powierzchni wyświetlacza bieżącym pędzlem.
BOOL FloodFill(
int x,
int y,
COLORREF crColor);
Parametry
x
Określa logiczną współrzędną x punktu, w którym rozpoczyna się wypełnianie.
y
Określa logiczną współrzędną y punktu, w którym rozpoczyna się wypełnienie.
crColor
Określa kolor granicy.
Wartość zwracana
Nonzero, jeśli funkcja zakończyła się pomyślnie; W przeciwnym razie wartość 0 jest zwracana, jeśli nie można ukończyć wypełnienia, dany punkt ma kolor granicy określony przez crColor
, lub punkt znajduje się poza regionem wycinki.
Uwagi
Przyjmuje się, że obszar ma być powiązany zgodnie z parametrem crColor
. Funkcja FloodFill
rozpoczyna się w punkcie określonym przez x
i y
kontynuuje we wszystkich kierunkach granicę koloru.
Tylko konteksty i urządzenia pamięci obsługujące technologię wyświetlania rasterowego obsługują funkcję składową FloodFill
. Aby uzyskać informacje na temat RC_BITBLT
możliwości, zobacz funkcję składową GetDeviceCaps
.
Funkcja ExtFloodFill
zapewnia podobną możliwość, ale większą elastyczność.
CDC::FrameRect
Rysuje obramowanie wokół prostokąta określonego przez lpRect
.
void FrameRect(
LPCRECT lpRect,
CBrush* pBrush);
Parametry
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt zawierający współrzędne logiczne lewego górnego i prawego dolnego rogu prostokąta. Można również przekazać obiekt dla tego parametru CRect
.
pBrush
Określa szczotkę, która ma być używana do tworzenia ramek prostokąta.
Uwagi
Funkcja używa danego pędzla do narysowania obramowania. Szerokość i wysokość obramowania to zawsze 1 jednostka logiczna.
Jeśli współrzędna prostokąta bottom
jest mniejsza lub równa top
, lub jeśli right
jest mniejsza lub równa left
, prostokąt nie jest rysowany.
Obramowanie rysowane FrameRect
przez znajduje się w tej samej pozycji co obramowanie rysowane przez Rectangle
funkcję składową przy użyciu tych samych współrzędnych (jeśli Rectangle
używa pióra o szerokości 1 jednostki logicznej). Wnętrze prostokąta nie jest wypełnione przez FrameRect
element .
CDC::FrameRgn
Rysuje obramowanie wokół regionu określonego za pomocą pRgn
pędzla określonego przez pBrush
.
BOOL FrameRgn(
CRgn* pRgn,
CBrush* pBrush,
int nWidth,
int nHeight);
Parametry
pRgn
CRgn
Wskazuje obiekt, który identyfikuje region, który ma być ujęty w obramowanie. Współrzędne dla danego regionu są określone w jednostkach logicznych.
pBrush
CBrush
Wskazuje obiekt, który identyfikuje szczotkę do rysowania obramowania.
nWidth
Określa szerokość obramowania w pionowych pociągnięciach pędzla w jednostkach urządzenia.
nHeight
Określa wysokość obramowania w poziomych pociągnięciach pędzla w jednostkach urządzenia.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Przykład
Zobacz przykład dla elementu CRgn::CombineRgn
.
CDC::FromHandle
Zwraca wskaźnik do CDC
obiektu, gdy dana dojście do kontekstu urządzenia.
static CDC* PASCAL FromHandle(HDC hDC);
Parametry
hDC
Zawiera dojście do kontekstu urządzenia z systemem Windows.
Wartość zwracana
Wskaźnik może być tymczasowy i nie powinien być przechowywany poza bezpośrednim użyciem.
Uwagi
CDC
Jeśli obiekt nie jest dołączony do uchwytu, zostanie utworzony i dołączony obiekt tymczasowyCDC
.
Przykład
Zobacz przykład dla elementu CPrintDialog::GetPrinterDC
.
CDC::GetArcDirection
Zwraca bieżący kierunek łuku dla kontekstu urządzenia.
int GetArcDirection() const;
Wartość zwracana
Określa bieżący kierunek łuku, jeśli się powiedzie. Poniżej przedstawiono prawidłowe wartości zwracane:
AD_COUNTERCLOCKWISE
Łuki i prostokąty rysowane w kierunku odwrotnym.AD_CLOCKWISE Arcs
i prostokąty rysowane zgodnie z ruchem wskazówek zegara.
Jeśli wystąpi błąd, zwracana wartość to zero.
Uwagi
Funkcje łuku i prostokąta używają kierunku łuku.
CDC::GetAspectRatioFilter
Pobiera ustawienie dla bieżącego filtru współczynnika proporcji.
CSize GetAspectRatioFilter() const;
Wartość zwracana
CSize
Obiekt reprezentujący współczynnik proporcji używany przez bieżący filtr współczynnik proporcji.
Uwagi
Współczynnik proporcji jest współczynnikiem utworzonym przez szerokość i wysokość piksela urządzenia. Informacje o współczynniku proporcji urządzenia są używane w tworzeniu, zaznaczeniu i wyświetlaniu czcionek. System Windows udostępnia specjalny filtr, filtr współczynnika proporcji, aby wybrać czcionki przeznaczone dla określonego współczynnika proporcji ze wszystkich dostępnych czcionek. Filtr używa współczynnika proporcji określonego przez funkcję składową SetMapperFlags
.
CDC::GetBkColor
Zwraca bieżący kolor tła.
COLORREF GetBkColor() const;
Wartość zwracana
Wartość koloru RGB.
Uwagi
Jeśli tryb tła to OPAQUE
, system używa koloru tła, aby wypełnić luki w styliowanych liniach, luki między kreskowanymi liniami w pędzlach i tłem w komórkach znaków. System używa również koloru tła podczas konwertowania map bitowych między kontekstami kolorów i monochromatycznych urządzeń.
CDC::GetBkMode
Zwraca tryb tła.
int GetBkMode() const;
Wartość zwracana
Bieżący tryb tła, który może być OPAQUE
lub TRANSPARENT
.
Uwagi
Tryb tła określa, czy system usuwa istniejące kolory tła na powierzchni rysunku przed rysowaniem tekstu, wyklutych pędzli lub jakiegokolwiek stylu pióra, który nie jest linią ciągłą.
CDC::GetBoundsRect
Zwraca bieżący skumulowany prostokąt ograniczenia dla określonego kontekstu urządzenia.
UINT GetBoundsRect(
LPRECT lpRectBounds,
UINT flags);
Parametry
lpRectBounds
Wskazuje bufor, który otrzyma bieżący prostokąt ograniczenia. Prostokąt jest zwracany we współrzędnych logicznych.
flags
Określa, czy prostokąt ograniczenia ma zostać wyczyszczone po jego zwróceniu. Ten parametr powinien mieć wartość zero lub ustawić na następującą wartość:
DCB_RESET
Wymusza wyczyszczenie prostokąta ograniczenia po jego powrocie.
Wartość zwracana
Określa bieżący stan prostokąta ograniczenia, jeśli funkcja zakończy się pomyślnie. Może to być kombinacja następujących wartości:
DCB_ACCUMULATE
Występuje akumulacja prostokąta.DCB_RESET
Prostokąt ograniczenia jest pusty.DCB_SET
Prostokąt ograniczenia nie jest pusty.DCB_ENABLE
Akumulacja związana jest włączona.DCB_DISABLE
Akumulacja ograniczenia jest wyłączona.
CDC::GetBrushOrg
Pobiera źródło (w jednostkach urządzenia) pędzla aktualnie wybranego dla kontekstu urządzenia.
CPoint GetBrushOrg() const;
Wartość zwracana
Bieżące źródło pędzla (w jednostkach urządzenia) jako CPoint
obiekt.
Uwagi
Początkowe źródło szczotki wynosi (0,0) obszaru klienta. Wartość zwracana określa ten punkt w jednostkach urządzenia względem źródła okna pulpitu.
CDC::GetCharacterPlacement
Pobiera różne typy informacji na temat ciągu znaków.
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;
Parametry
lpString
Wskaźnik do ciągu znaku do przetworzenia.
nCount
Określa długość ciągu. W przypadku wersji ANSI jest BYTE
to liczba i dla funkcji Unicode jest WORD
to liczba. Aby uzyskać więcej informacji, zobacz GetCharacterPlacement
.
nMaxExtent
Określa maksymalny zakres (w jednostkach logicznych), do którego jest przetwarzany ciąg. Znaki, które w przypadku przetworzenia przekraczają ten zakres, są ignorowane. Obliczenia dla wszystkich wymaganych tablic kolejności lub glyph mają zastosowanie tylko do dołączonych znaków. Ten parametr jest używany tylko wtedy, gdy GCP_MAXEXTENT
wartość jest określona w parametrze dwFlags
. Ponieważ funkcja przetwarza ciąg wejściowy, każdy znak i jego zakres są dodawane do danych wyjściowych, zakresu i innych tablic tylko wtedy, gdy całkowity zakres nie przekroczył jeszcze maksymalnej wartości. Po osiągnięciu limitu przetwarzanie zostanie zatrzymane.
lpResults
Wskaźnik do GCP_Results
struktury, która odbiera wyniki funkcji.
dwFlags
Określa sposób przetwarzania ciągu w wymaganych tablicach. Ten parametr może być co najmniej jedną wartością wymienioną dwFlags
w sekcji tematu GetCharacterPlacement
.
str
Wskaźnik do obiektu do przetworzenia CString
.
Wartość zwracana
Jeśli funkcja powiedzie się, zwracana wartość to szerokość i wysokość ciągu w jednostkach logicznych.
Jeśli funkcja zakończy się niepowodzeniem, zwracana wartość to zero.
Uwagi
Ta funkcja składowa emuluje funkcjonalność funkcji GetCharacterPlacement
, zgodnie z opisem w zestawie Windows SDK.
CDC::GetCharABCWidths
Pobiera szerokości kolejnych znaków w określonym zakresie z bieżącej czcionki TrueType.
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABC lpabc) const;
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABCFLOAT lpABCF) const;
Parametry
nFirstChar
Określa pierwszy znak w zakresie znaków z bieżącej czcionki, dla której zwracane są szerokości znaków.
nLastChar
Określa ostatni znak w zakresie znaków z bieżącej czcionki, dla której zwracane są szerokości znaków.
lpabc
Wskazuje tablicę ABC
struktur, które odbierają szerokość znaków po powrocie funkcji. Ta tablica musi zawierać co najmniej tyle ABC
struktur, ile znaków znajduje się w zakresie określonym przez nFirstChar
parametry i nLastChar
.
lpABCF
Wskazuje bufor dostarczony przez aplikację z tablicą ABCFLOAT
struktur, aby otrzymywać szerokości znaków po powrocie funkcji. Szerokości zwracane przez tę funkcję są w formacie zmiennoprzecinkowym IEEE.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Szerokości są zwracane w jednostkach logicznych. Ta funkcja powiedzie się tylko z czcionkami TrueType.
Rasterizator TrueType zapewnia odstępy między znakami "ABC" po wybraniu określonego rozmiaru punktu. Odstępy "A" to odległość dodawana do bieżącej pozycji przed umieszczeniem glif. Odstępy "B" to szerokość czarnej części glif. Odstępy "C" są dodawane do bieżącego położenia, aby uwzględnić białe znaki po prawej stronie glif. Całkowita zaawansowana szerokość jest podawana przez A + B + C.
Gdy funkcja składowa GetCharABCWidths
pobiera ujemne szerokości "A" lub "C" dla znaku, ten znak zawiera zwisy lub zwisy.
Aby przekonwertować szerokość ABC na jednostki projektowe czcionek, aplikacja powinna utworzyć czcionkę, której wysokość (określona w lfHeight
elemencie członkowskim LOGFONT
struktury) jest równa wartości przechowywanej w ntmSizeEM
składowej NEWTEXTMETRIC
struktury. (Wartość ntmSizeEM
elementu członkowskiego można pobrać, wywołując EnumFontFamilies
funkcję systemu Windows).
Szerokości ABC znaku domyślnego są używane dla znaków spoza zakresu aktualnie wybranej czcionki.
Aby pobrać szerokości znaków w czcionkach innych niż TrueType, aplikacje powinny używać GetCharWidth
funkcji systemu Windows.
CDC::GetCharABCWidthsI
Pobiera szerokości w jednostkach logicznych kolejnych indeksów glifów w określonym zakresie z bieżącej czcionki TrueType.
BOOL GetCharABCWidthsI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPABC lpabc) const;
Parametry
giFirst
Określa pierwszy indeks glifów w grupie kolejnych indeksów glifów z bieżącej czcionki. Ten parametr jest używany tylko wtedy, gdy pgi
parametr ma NULL
wartość .
cgi
Określa liczbę indeksów glifów.
pgi
Wskaźnik do tablicy zawierającej indeksy glifów. Jeśli wartość to NULL
, giFirst
zamiast tego jest używany parametr . Parametr cgi
określa liczbę indeksów glifów w tej tablicy.
lpabc
Wskaźnik do tablicy ABC
struktur odbierających szerokości znaków. Ta tablica musi zawierać co najmniej tyle ABC
struktur, ile zawiera indeksy glifów określone przez cgi
parametr .
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa emuluje funkcjonalność funkcji GetCharABCWidthsI
, zgodnie z opisem w zestawie Windows SDK.
CDC::GetCharWidth
Pobiera szerokości poszczególnych znaków w kolejnej grupie znaków z bieżącej czcionki przy użyciu m_hAttribDC
, kontekstu urządzenia wejściowego.
BOOL GetCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
BOOL GetCharWidth(
UINT nFirstChar,
UINT nLastChar,
float* lpFloatBuffer) const;
Parametry
nFirstChar
Określa pierwszy znak w kolejnej grupie znaków w bieżącej czcionki.
nLastChar
Określa ostatni znak w kolejnej grupie znaków w bieżącej czcionki.
lpBuffer
Wskazuje bufor, który otrzyma wartości szerokości dla kolejnej grupy znaków w bieżącej czcionki.
lpFloatBuffer
Wskazuje bufor na odbieranie szerokości znaków. Zwrócone szerokości są w formacie zmiennoprzecinkowym IEEE 32-bitowym. (Szerokość jest mierzona wzdłuż linii bazowej znaków).
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Jeśli na przykład nFirstChar
identyfikuje literę "a" i nLastChar
identyfikuje literę "z", funkcja pobiera szerokość wszystkich małych liter.
Funkcja przechowuje wartości w buforze wskazywane przez lpBuffer
. Ten bufor musi być wystarczająco duży, aby pomieścić wszystkie szerokości. Oznacza to, że w przykładzie musi istnieć co najmniej 26 wpisów.
Jeśli znak w kolejnej grupie znaków nie istnieje w określonej czcionki, zostanie przypisana wartość szerokości domyślnego znaku.
CDC::GetCharWidthI
Pobiera szerokości w współrzędnych logicznych kolejnych indeksów glifów w określonym zakresie od bieżącej czcionki.
BOOL GetCharWidthI(
UINT giFirst,
UINT cgi,
LPWORD pgi,
LPINT lpBuffer) const;
Parametry
giFirst
Określa pierwszy indeks glifów w grupie kolejnych indeksów glifów z bieżącej czcionki. Ten parametr jest używany tylko wtedy, gdy pgi
parametr ma NULL
wartość .
cgi
Określa liczbę indeksów glifów.
pgi
Wskaźnik do tablicy zawierającej indeksy glifów. Jeśli wartość to NULL
, giFirst
zamiast tego jest używany parametr . Parametr cgi
określa liczbę indeksów glifów w tej tablicy.
lpBuffer
Wskaźnik do buforu, który odbiera szerokość.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa emuluje funkcjonalność funkcji GetCharWidthI
, zgodnie z opisem w zestawie Windows SDK.
CDC::GetClipBox
Pobiera wymiary najostrzejszego prostokąta ograniczenia wokół bieżącej granicy przycinania.
virtual int GetClipBox(LPRECT lpRect) const;
Parametry
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt, który ma odbierać wymiary prostokąta.
Wartość zwracana
Typ regionu wycinkowania. Może to być dowolna z następujących wartości:
COMPLEXREGION
Obszar wycinków ma nakładające się obramowania.ERROR
Kontekst urządzenia jest nieprawidłowy.NULLREGION
Obszar wycinków jest pusty.SIMPLEREGION
Obszar wycinków nie ma nakładających się obramowań.
Uwagi
Wymiary są kopiowane do buforu wskazywanego przez lpRect
.
CDC::GetColorAdjustment
Pobiera wartości korekty kolorów dla kontekstu urządzenia.
BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
Parametry
lpColorAdjust
COLORADJUSTMENT
Wskazuje strukturę danych, aby otrzymywać wartości korekty koloru.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
CDC::GetCurrentBitmap
Zwraca wskaźnik do aktualnie wybranego CBitmap
obiektu.
CBitmap* GetCurrentBitmap() const;
Wartość zwracana
Wskaźnik do CBitmap
obiektu, jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
Ta funkcja składowa może zwracać obiekty tymczasowe.
CDC::GetCurrentBrush
Zwraca wskaźnik do aktualnie wybranego CBrush
obiektu.
CBrush* GetCurrentBrush() const;
Wartość zwracana
Wskaźnik do CBrush
obiektu, jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
Ta funkcja składowa może zwracać obiekty tymczasowe.
CDC::GetCurrentFont
Zwraca wskaźnik do aktualnie wybranego CFont
obiektu.
CFont* GetCurrentFont() const;
Wartość zwracana
Wskaźnik do CFont
obiektu, jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
Ta funkcja składowa może zwracać obiekty tymczasowe.
CDC::GetCurrentPalette
Zwraca wskaźnik do aktualnie wybranego CPalette
obiektu.
CPalette* GetCurrentPalette() const;
Wartość zwracana
Wskaźnik do CPalette
obiektu, jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
Ta funkcja składowa może zwracać obiekty tymczasowe.
CDC::GetCurrentPen
Zwraca wskaźnik do aktualnie wybranego CPen
obiektu.
CPen* GetCurrentPen() const;
Wartość zwracana
Wskaźnik do CPen
obiektu, jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
Ta funkcja składowa może zwracać obiekty tymczasowe.
CDC::GetCurrentPosition
Pobiera bieżące położenie (we współrzędnych logicznych).
CPoint GetCurrentPosition() const;
Wartość zwracana
Bieżące położenie jako CPoint
obiekt.
Uwagi
Bieżące położenie można ustawić za pomocą funkcji składowej MoveTo
.
CDC::GetDCBrushColor
Pobiera bieżący kolor pędzla.
COLORREF GetDCBrushColor() const;
Wartość zwracana
Jeśli funkcja powiedzie się, zwracana wartość jest wartością COLORREF
bieżącego koloru pędzla.
Jeśli funkcja zakończy się niepowodzeniem, zwracana wartość to CLR_INVALID
.
Uwagi
Ta funkcja składowa emuluje funkcjonalność funkcji GetDCBrushColor
, zgodnie z opisem w zestawie Windows SDK.
CDC::GetDCPenColor
Pobiera bieżący kolor pióra.
COLORREF GetDCPenColor() const;
Wartość zwracana
Jeśli funkcja powiedzie się, zwracana wartość jest wartością COLORREF
bieżącego koloru pióra.
Jeśli funkcja zakończy się niepowodzeniem, zwracana wartość to CLR_INVALID
.
Uwagi
Ta funkcja składowa korzysta z funkcji GetDCPenColor
Win32, zgodnie z opisem w zestawie Windows SDK.
CDC::GetDeviceCaps
Pobiera szeroką gamę informacji specyficznych dla urządzenia na temat urządzenia wyświetlania.
int GetDeviceCaps(int nIndex) const;
Parametry
nIndex
Określa typ danych do zwrócenia. Zobacz GetDeviceCaps
w zestawie Windows SDK, aby uzyskać listę wartości.
Wartość zwracana
Wartość żądanej możliwości, jeśli funkcja zakończy się pomyślnie.
Przykład
Zobacz przykład dla elementu CPrintDialog::GetDefaults
.
CDC::GetFontData
Pobiera informacje o metryce czcionek z skalowalnego pliku czcionek.
DWORD GetFontData(
DWORD dwTable,
DWORD dwOffset,
LPVOID lpData,
DWORD cbData) const;
Parametry
dwTable
Określa nazwę tabeli metryk, która ma zostać zwrócona. Ten parametr może być jedną z tabel metryk udokumentowanych w specyfikacji TrueType Font Files opublikowanej przez firmę Microsoft Corporation. Jeśli ten parametr ma wartość 0, informacje są pobierane od początku pliku czcionki.
dwOffset
Określa przesunięcie od początku tabeli, w której chcesz rozpocząć pobieranie informacji. Jeśli ten parametr ma wartość 0, informacje są pobierane od początku tabeli określonej przez dwTable
parametr . Jeśli ta wartość jest większa lub równa rozmiarowi tabeli, GetFontData
zwraca wartość 0.
lpData
Wskazuje bufor, który otrzyma informacje o czcionce. Jeśli ta wartość to NULL
, funkcja zwraca rozmiar buforu wymaganego dla danych czcionki określonych w parametrze dwTable
.
cbData
Określa długość informacji do pobrania w bajtach. Jeśli ten parametr ma wartość 0, GetFontData
zwraca rozmiar danych określonych w parametrze dwTable
.
Wartość zwracana
Określa liczbę bajtów zwracanych w buforze wskazującą, czy funkcja zakończyła się lpData
pomyślnie; w przeciwnym razie -1.
Uwagi
Informacje do pobrania są identyfikowane przez określenie przesunięcia do pliku czcionki i długości informacji do zwrócenia.
Aplikacja może czasami używać funkcji składowej GetFontData
do zapisywania czcionki TrueType z dokumentem. W tym celu aplikacja określa, czy czcionka może być osadzona, a następnie pobiera cały plik czcionki, określając wartość 0 dla dwTable
parametrów , dwOffset
i cbData
.
Aplikacje mogą określić, czy czcionka może być osadzona, sprawdzając otmfsType
element członkowski OUTLINETEXTMETRIC
struktury. Jeśli ustawiono bit 1 otmfsType
, osadzanie nie jest dozwolone dla czcionki. Jeśli bit 1 jest jasny, można osadzić czcionkę. Jeśli bit 2 jest ustawiony, osadzanie jest tylko do odczytu.
Jeśli aplikacja próbuje użyć tej funkcji do pobrania informacji dla czcionki innej niż TrueType, GetFontData
funkcja składowa zwraca wartość -1.
CDC::GetFontLanguageInfo
Zwraca informacje o aktualnie wybranej czcionki dla określonego kontekstu wyświetlania.
DWORD GetFontLanguageInfo() const;
Wartość zwracana
Wartość zwracana identyfikuje cechy aktualnie wybranej czcionki. Aby uzyskać pełną listę możliwych wartości, zobacz GetFontLanguageInfo
.
Uwagi
Ta funkcja składowa emuluje funkcjonalność funkcji GetFontLanguageInfo
, zgodnie z opisem w zestawie Windows SDK.
CDC::GetGlyphOutline
Pobiera krzywą konturu lub mapę bitową dla znaku konspektu w bieżącej czcionki.
DWORD GetGlyphOutline(
UINT nChar,
UINT nFormat,
LPGLYPHMETRICS lpgm,
DWORD cbBuffer,
LPVOID lpBuffer,
const MAT2* lpmat2) const;
Parametry
nChar
Określa znak, dla którego mają być zwracane informacje.
nFormat
Określa format, w którym funkcja ma zwracać informacje. Może to być jedna z następujących wartości lub 0:
Wartość | Znaczenie |
---|---|
GGO_BITMAP |
Zwraca mapę bitową glyph. Po powrocie funkcji bufor wskazywany przez lpBuffer element zawiera 1-bitową mapę bitową na piksel, której wiersze zaczynają się od granic dwukropka. |
GGO_NATIVE |
Zwraca punkty danych krzywej w natywnym formacie rasterizatora przy użyciu jednostek urządzenia. Po określeniu tej wartości wszystkie przekształcenia określone w pliku lpmat2 są ignorowane. |
Gdy wartość nFormat
to 0, funkcja wypełnia GLYPHMETRICS
strukturę, ale nie zwraca danych glif-konspektu.
lpgm
GLYPHMETRICS
Wskazuje strukturę opisjącą umieszczanie glifów w komórce znaku.
cbBuffer
Określa rozmiar buforu, do którego funkcja kopiuje informacje o znaku konspektu. Jeśli ta wartość to 0, a nFormat
parametr jest wartością GGO_BITMAP
lub GGO_NATIVE
, funkcja zwraca wymagany rozmiar buforu.
lpBuffer
Wskazuje bufor, do którego funkcja kopiuje informacje o znaku konspektu. Jeśli nFormat
określa GGO_NATIVE
wartość, informacje są kopiowane w postaci TTPOLYGONHEADER
struktur i TTPOLYCURVE
. Jeśli ta wartość to NULL
i nFormat
jest wartością GGO_BITMAP
lub GGO_NATIVE
, funkcja zwraca wymagany rozmiar buforu.
lpmat2
Wskazuje strukturę zawierającą MAT2
macierz przekształceń dla znaku. Ten parametr nie może mieć NULL
wartości , nawet jeśli wartość jest określona dla nFormat
parametru GGO_NATIVE
.
Wartość zwracana
Rozmiar w bajtach buforu wymaganego dla pobranych informacji, jeśli cbBuffer
ma wartość 0 lub lpBuffer
ma wartość NULL
. W przeciwnym razie jest to wartość dodatnia, jeśli funkcja zakończy się pomyślnie, lub -1, jeśli wystąpi błąd.
Uwagi
Aplikacja może obracać znaki pobierane w formacie mapy bitowej, określając macierz przekształcenia 2-by-2 w strukturze wskazywanej przez lpmat2
.
Kontur glifowy jest zwracany jako seria konturów. Każdy kontur jest definiowany przez TTPOLYGONHEADER
strukturę, po której następuje tyle TTPOLYCURVE
struktur, ile jest wymaganych do jej opisania. Wszystkie punkty są zwracane jako POINTFX
struktury i reprezentują pozycje bezwzględne, a nie względne ruchy. Punktem wyjścia podanym przez pfxStart
składową TTPOLYGONHEADER
struktury jest punkt, w którym rozpoczyna się kontur konturu. Poniższe TTPOLYCURVE
struktury mogą być rekordami wielowierszowymi lub rekordami krzywych. Rekordy wieloliniowe są serią punktów; linie rysowane między punktami opisują kontur znaku. Rekordy krzywe spline reprezentują krzywe kwadratowe używane przez wartość TrueType (czyli kwadratowe linie b-krzywe).
CDC::GetGraphicsMode
Pobiera bieżący tryb graficzny dla określonego kontekstu urządzenia.
int GetGraphicsMode() const;
Wartość zwracana
Zwraca bieżący tryb grafiki w przypadku powodzenia. Aby uzyskać listę wartości, które może zwrócić ta metoda, zobacz GetGraphicsMode
.
Zwraca wartość 0 w przypadku błędu.
Aby uzyskać rozszerzone informacje o błędzie, wywołaj metodę GetLastError
.
Uwagi
Ta metoda opakowuje funkcję GetGraphicsMode
GDI systemu Windows .
CDC::GetHalftoneBrush
Wywołaj tę funkcję składową, aby pobrać szczotkę halftone.
static CBrush* PASCAL GetHalftoneBrush();
Wartość zwracana
Wskaźnik do CBrush
obiektu, jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
Szczotka półtonowa pokazuje piksele, które są alternatywnie kolorami pierwszego planu i tła, aby utworzyć wzorzec dithered. Na poniższym diagramie przedstawiono przykład wzorca dithered utworzonego przez szczotkę półtonową:
Na diagramie pokazano, jak kolor tła czarnego i kolor pierwszego planu żółtego są łączone w wzorzec przez zmianę czarnych i żółtych pikseli ze sobą w celu utworzenia pociągnięcia pióra.
CDC::GetKerningPairs
Pobiera pary kerning znaków dla czcionki, która jest obecnie zaznaczona w określonym kontekście urządzenia.
int GetKerningPairs(
int nPairs,
LPKERNINGPAIR lpkrnpair) const;
Parametry
nPairs
Określa liczbę KERNINGPAIR
struktur wskazywanych przez lpkrnpair
. Funkcja nie będzie kopiować większej liczby par kerning niż określona przez nPairs
.
lpkrnpair
Wskazuje tablicę KERNINGPAIR
struktur, które odbierają pary kerning po powrocie funkcji. Ta tablica musi zawierać co najmniej tyle struktur, jak określono przez nPairs
. Jeśli ten parametr to NULL
, funkcja zwraca łączną liczbę par kerning dla czcionki.
Wartość zwracana
Określa liczbę pobranych par kerning lub łączną liczbę par kerning w czcionki, jeśli funkcja zakończy się pomyślnie. Zero jest zwracane, jeśli funkcja nie powiedzie się lub nie ma par kerning dla czcionki.
CDC::GetLayout
Wywołaj tę funkcję składową, aby określić układ tekstu i grafiki dla kontekstu urządzenia, takiego jak drukarka lub metaplik.
DWORD GetLayout() const;
Wartość zwracana
W przypadku powodzenia flagi układu dla bieżącego kontekstu urządzenia. W przeciwnym razie wartość GDI_ERROR
. Aby uzyskać rozszerzone informacje o błędzie, wywołaj metodę GetLastError
. Aby uzyskać listę flag układu, zobacz CDC::SetLayout
.
Uwagi
Domyślny układ jest od lewej do prawej.
CDC::GetMapMode
Pobiera bieżący tryb mapowania.
int GetMapMode() const;
Wartość zwracana
Tryb mapowania.
Uwagi
Aby uzyskać opis trybów mapowania, zobacz funkcję składową SetMapMode
.
Uwaga
Jeśli wywołasz SetLayout
metodę zmiany kontrolera domeny na układ od prawej do lewej, SetLayout
automatycznie zmieni tryb mapowania na MM_ISOTROPIC
. W związku z tym każde kolejne wywołanie GetMapMode
metody zwróci wartość MM_ISOTROPIC
.
CDC::GetMiterLimit
Zwraca limit miter dla kontekstu urządzenia.
float GetMiterLimit() const;
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Limit miter jest używany podczas rysowania linii geometrycznych, które mają sprzężenia miter.
CDC::GetNearestColor
Zwraca kolor stały, który najlepiej pasuje do określonego koloru logicznego.
COLORREF GetNearestColor(COLORREF crColor) const;
Parametry
crColor
Określa kolor, który ma być dopasowany.
Wartość zwracana
Wartość koloru RGB (czerwony, zielony, niebieski), która definiuje kolor stały najbliżej crColor
wartości, którą może reprezentować urządzenie.
Uwagi
Dane urządzenie musi mieć możliwość reprezentowania tego koloru.
CDC::GetOutlineTextMetrics
Pobiera informacje o metrykach dla czcionek TrueType.
UINT GetOutlineTextMetrics(
UINT cbData,
LPOUTLINETEXTMETRIC lpotm) const;
Parametry
lpotm
Wskazuje tablicę OUTLINETEXTMETRIC
struktur. Jeśli ten parametr to NULL
, funkcja zwraca rozmiar buforu wymaganego dla pobranych danych metryk.
cbData
Określa rozmiar w bajtach buforu, do którego są zwracane informacje.
lpotm
OUTLINETEXTMETRIC
Wskazuje strukturę. Jeśli ten parametr to NULL
, funkcja zwraca rozmiar buforu wymaganego dla pobranych informacji o metryce.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Struktura OUTLINETEXTMETRIC
zawiera większość informacji o metryce czcionki dostarczanych z formatem TrueType, w tym strukturą TEXTMETRIC
. Ostatnie cztery elementy OUTLINETEXTMETRIC
członkowskie struktury to wskaźniki do ciągów. Aplikacje powinny przydzielić miejsce dla tych ciągów oprócz miejsca wymaganego dla innych elementów członkowskich. Ponieważ nie ma nałożonego przez system limitu rozmiaru ciągów, najprostszą metodą przydzielania pamięci jest pobranie wymaganego rozmiaru przez określenie wartości NULL w lpotm
pierwszym wywołaniu GetOutlineTextMetrics
funkcji.
CDC::GetOutputCharWidth
Używa kontekstu m_hDC
urządzenia wyjściowego , i pobiera szerokości poszczególnych znaków w kolejnej grupie znaków z bieżącej czcionki.
BOOL GetOutputCharWidth(
UINT nFirstChar,
UINT nLastChar,
LPINT lpBuffer) const;
Parametry
nFirstChar
Określa pierwszy znak w kolejnej grupie znaków w bieżącej czcionki.
nLastChar
Określa ostatni znak w kolejnej grupie znaków w bieżącej czcionki.
lpBuffer
Wskazuje bufor, który otrzyma wartości szerokości dla kolejnej grupy znaków w bieżącej czcionki.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Jeśli na przykład nFirstChar
identyfikuje literę "a" i nLastChar
identyfikuje literę "z", funkcja pobiera szerokość wszystkich małych liter.
Funkcja przechowuje wartości w buforze wskazywane przez lpBuffer
. Ten bufor musi być wystarczająco duży, aby pomieścić wszystkie szerokości; oznacza to, że w przykładzie musi istnieć co najmniej 26 wpisów.
Jeśli znak w kolejnej grupie znaków nie istnieje w określonej czcionki, zostanie przypisana wartość szerokości domyślnego znaku.
CDC::GetOutputTabbedTextExtent
Wywołaj tę funkcję składową, aby obliczyć szerokość i wysokość ciągu znaku przy użyciu m_hDC
kontekstu urządzenia wyjściowego.
CSize GetOutputTabbedTextExtent(
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions) const;
CSize GetOutputTabbedTextExtent(
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions) const;
Parametry
lpszString
Wskazuje ciąg znaków, który ma być mierzony. Można również przekazać obiekt dla tego parametru CString
.
nCount
Określa długość ciągu wskazywanego przez lpszString
.
nTabPositions
Określa liczbę pozycji tabulatora w tablicy wskazywanej przez lpnTabStopPositions
.
lpnTabStopPositions
Wskazuje tablicę liczb całkowitych zawierających pozycje tabulatora w jednostkach logicznych. Tabulatory muszą być sortowane w kolejności rosnącej; najmniejsza wartość x powinna być pierwszym elementem w tablicy. Karty wstecz nie są dozwolone.
str
CString
Obiekt zawierający określone znaki do zmierzenia.
Wartość zwracana
Wymiary ciągu (w jednostkach logicznych) w CSize
obiekcie.
Uwagi
Jeśli ciąg zawiera co najmniej jeden znak tabulacji, szerokość ciągu jest oparta na karcie zatrzymuje się przez lpnTabStopPositions
wartość . Funkcja używa aktualnie wybranej czcionki do obliczenia wymiarów ciągu.
Bieżący region wycinków nie przesuwa szerokości i wysokości zwracanej przez GetOutputTabbedTextExtent
funkcję.
Ponieważ niektóre urządzenia nie umieszczają znaków w zwykłych tablicach komórek (czyli kern znaków), suma zakresów znaków w ciągu może nie być równa zakresowi ciągu.
Jeśli nTabPositions
ma wartość 0 i lpnTabStopPositions
ma NULL
wartość , karty są rozszerzane do ośmiu średnich szerokości znaków. Jeśli nTabPositions
wartość to 1, tabulatory zostaną oddzielone odległością określoną przez pierwszą wartość w tablicy, do której lpnTabStopPositions
wskazuje. Jeśli lpnTabStopPositions
wskazuje więcej niż jedną wartość, dla każdej wartości w tablicy ustawiono zatrzymanie tabulatora, maksymalnie liczbę określoną przez nTabPositions
wartość .
CDC::GetOutputTextExtent
Wywołaj tę funkcję składową, aby użyć kontekstu urządzenia wyjściowego, m_hDC
i oblicz szerokość i wysokość wiersza tekstu przy użyciu bieżącej czcionki.
CSize GetOutputTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetOutputTextExtent(const CString& str) const;
Parametry
lpszString
Wskazuje ciąg znaków. Można również przekazać obiekt dla tego parametru CString
.
nCount
Określa długość ciągu wskazywanego przez lpszString
.
str
CString
Obiekt zawierający określone znaki do zmierzenia.
Wartość zwracana
Wymiary ciągu (w jednostkach logicznych) zwracane w CSize
obiekcie.
Uwagi
Bieżący region wycinków nie ma wpływu na szerokość i wysokość zwracaną przez GetOutputTextExtent
element .
Ponieważ niektóre urządzenia nie umieszczają znaków w zwykłych tablicach komórek (czyli przeprowadzają kerning), suma zakresów znaków w ciągu może nie być równa zakresowi ciągu.
CDC::GetOutputTextMetrics
Pobiera metryki dla bieżącej czcionki przy użyciu m_hDC
, kontekstu wyjściowego urządzenia.
BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
Parametry
lpMetrics
TEXTMETRIC
Wskazuje strukturę odbierającą metryki.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
CDC::GetPath
Pobiera współrzędne definiujące punkty końcowe linii i punkty kontrolne krzywych znalezionych w ścieżce wybranej w kontekście urządzenia.
int GetPath(
LPPOINT lpPoints,
LPBYTE lpTypes,
int nCount) const;
Parametry
lpPoints
Wskazuje tablicę POINT
struktur danych lub CPoint
obiektów, w których umieszczane są punkty końcowe linii i punkty sterowania krzywą.
lpTypes
Wskazuje tablicę bajtów, w której są umieszczane typy wierzchołków. Wartości są jedną z następujących wartości:
PT_MOVETO
Określa, że odpowiedni punkt w programielpPoints
rozpoczyna rozłączny rysunek.PT_LINETO
Określa, że poprzedni punkt i odpowiedni punkt wlpPoints
to punkty końcowe wiersza.PT_BEZIERTO
Określa, że odpowiedni punkt wlpPoints
obiekcie jest punktem kontrolnym lub punktem końcowym krzywej Bzier.
PT_BEZIERTO
typy są zawsze wykonywane w zestawach trzech. Punkt w ścieżce bezpośrednio poprzedzający ich definiuje punkt początkowy dla krzywej Bzier. Pierwsze dwa PT_BEZIERTO
punkty to punkty kontrolne, a trzeci PT_BEZIERTO
punkt to punkt końcowy (jeśli jest zakodowany na twardo).
Typ PT_LINETO
lub PT_BEZIERTO
może być połączony z następującą flagą (przy użyciu operatora bitowego OR), aby wskazać, że odpowiedni punkt jest ostatnim punktem na rysunku i że rysunek powinien zostać zamknięty:
PT_CLOSEFIGURE
Określa, że rysunek jest automatycznie zamykany po narysaniu odpowiedniej linii lub krzywej. Rysunek jest zamknięty, rysując linię z linii lub punktu końcowego krzywej do punktu odpowiadającego ostatniemuPT_MOVETO
.
nCount
Określa całkowitą liczbę POINT
struktur danych, które mogą być umieszczone w tablicy lpPoints
. Ta wartość musi być taka sama jak liczba bajtów, które mogą zostać umieszczone w tablicy lpTypes
.
Wartość zwracana
nCount
Jeśli parametr jest niezerowy, liczba punktów jest wyliczona. Jeśli nCount
wartość to 0, łączna liczba punktów w ścieżce (i GetPath
nie zapisuje niczego w). Jeśli nCount
wartość jest niezerowa i jest mniejsza niż liczba punktów w ścieżce, zwracana wartość to -1.
Uwagi
Kontekst urządzenia musi zawierać zamkniętą ścieżkę. Punkty ścieżki są zwracane we współrzędnych logicznych. Punkty są przechowywane w ścieżce we współrzędnych urządzenia, więc GetPath
zmienia punkty z współrzędnych urządzenia na współrzędne logiczne przy użyciu odwrotności bieżącej transformacji. Funkcja FlattenPath
składowa może być wywoływana przed GetPath
, aby przekonwertować wszystkie krzywe w ścieżce na segmenty liniowe.
Przykład
Zobacz przykład dla elementu CDC::BeginPath
.
CDC::GetPixel
Pobiera wartość koloru RGB piksela w punkcie określonym przez x
i *y*
.
COLORREF GetPixel(
int x,
int y) const;
COLORREF GetPixel(POINT point) const;
Parametry
x
Określa logiczną współrzędną x punktu do zbadania.
y
Określa współrzędną logiczną punktu do zbadania.
point
Określa współrzędne logiczne x-i y punktu do zbadania.
Wartość zwracana
Dla każdej wersji funkcji wartość koloru RGB dla koloru danego punktu. Wartość to -1, jeśli współrzędne nie określają punktu w regionie wycinki.
Uwagi
Punkt musi znajdować się w regionie wycinki. Jeśli punkt nie znajduje się w regionie wycinki, funkcja nie ma efektu i zwraca wartość -1.
Nie wszystkie urządzenia obsługują GetPixel
funkcję. Aby uzyskać więcej informacji, zobacz RC_BITBLT
możliwości rasteru w funkcji składowej GetDeviceCaps
.
Funkcja GetPixel
składowa ma dwie formy. Pierwszy przyjmuje dwie wartości współrzędnych; drugi przyjmuje POINT
strukturę lub CPoint
obiekt.
CDC::GetPolyFillMode
Pobiera bieżący tryb wypełniania wielokątowego.
int GetPolyFillMode() const;
Wartość zwracana
Bieżący tryb ALTERNATE
wypełniony wielokątem lub WINDING
, jeśli funkcja zakończy się pomyślnie.
Uwagi
SetPolyFillMode
Zobacz funkcję składową, aby uzyskać opis trybów wypełniania wielokątnego.
CDC::GetROP2
Pobiera bieżący tryb rysunku.
int GetROP2() const;
Wartość zwracana
Tryb rysunku. Aby uzyskać listę wartości trybu rysunku, zobacz funkcję składową SetROP2
.
Uwagi
Tryb rysunku określa, w jaki sposób kolory pióra i wnętrza wypełnionych obiektów są łączone z kolorem już na powierzchni wyświetlacza.
CDC::GetSafeHdc
Wywołaj tę funkcję składową, aby pobrać m_hDC
kontekst urządzenia wyjściowego.
HDC GetSafeHdc() const;
Wartość zwracana
Uchwyt kontekstu urządzenia.
Uwagi
Ta funkcja składowa działa również ze wskaźnikami o wartości null.
CDC::GetStretchBltMode
Pobiera bieżący tryb rozciągnięcia mapy bitowej.
int GetStretchBltMode() const;
Wartość zwracana
Wartość zwracana określa bieżący tryb rozciągnięcia mapy bitowej — STRETCH_ANDSCANS
, STRETCH_DELETESCANS
lub STRETCH_ORSCANS
— jeśli funkcja zakończy się pomyślnie.
Uwagi
Tryb rozciągania mapy bitowej definiuje sposób usuwania informacji z map bitowych, które są rozciągane lub kompresowane przez funkcję składową StretchBlt
.
Tryby STRETCH_ANDSCANS
i STRETCH_ORSCANS
są zwykle używane do zachowywania pikseli pierwszego planu w monochromatycznych mapach bitowych. Tryb STRETCH_DELETESCANS
jest zwykle używany do zachowania koloru w kolorowych mapach bitowych.
CDC::GetTabbedTextExtent
Wywołaj tę funkcję składową, aby obliczyć szerokość i wysokość ciągu znaków przy użyciu m_hAttribDC
atrybutu , kontekstu urządzenia atrybutu.
CSize GetTabbedTextExtent(
LPCTSTR lpszString,
int nCount,
int nTabPositions,
LPINT lpnTabStopPositions) const;
CSize GetTabbedTextExtent(
const CString& str,
int nTabPositions,
LPINT lpnTabStopPositions) const;
Parametry
lpszString
Wskazuje ciąg znaków. Można również przekazać obiekt dla tego parametru CString
.
nCount
Określa długość ciągu wskazywanego przez lpszString
.
nTabPositions
Określa liczbę pozycji tabulatora w tablicy wskazywanej przez lpnTabStopPositions
.
lpnTabStopPositions
Wskazuje tablicę liczb całkowitych zawierających pozycje tabulatora w jednostkach logicznych. Tabulatory muszą być sortowane w kolejności rosnącej; najmniejsza wartość x powinna być pierwszym elementem w tablicy. Karty wstecz nie są dozwolone.
str
CString
Obiekt zawierający określone znaki do narysowania.
Wartość zwracana
Wymiary ciągu (w jednostkach logicznych) w CSize
obiekcie.
Uwagi
Jeśli ciąg zawiera co najmniej jeden znak tabulacji, szerokość ciągu jest oparta na karcie zatrzymuje się przez lpnTabStopPositions
wartość . Funkcja używa aktualnie wybranej czcionki do obliczenia wymiarów ciągu.
Bieżący region wycinków nie przesuwa szerokości i wysokości zwracanej przez GetTabbedTextExtent
funkcję.
Ponieważ niektóre urządzenia nie umieszczają znaków w zwykłych tablicach komórek (czyli kern znaków), suma zakresów znaków w ciągu może nie być równa zakresowi ciągu.
Jeśli nTabPositions
ma wartość 0 i lpnTabStopPositions
ma NULL
wartość , karty są rozszerzane do ośmiu razy średniego szerokości znaku. Jeśli nTabPositions
wartość to 1, tabulatory zostaną oddzielone odległością określoną przez pierwszą wartość w tablicy, do której lpnTabStopPositions
wskazuje. Jeśli lpnTabStopPositions
wskazuje więcej niż jedną wartość, dla każdej wartości w tablicy ustawiono zatrzymanie tabulatora, maksymalnie liczbę określoną przez nTabPositions
wartość .
CDC::GetTextAlign
Pobiera stan flag wyrównania tekstu dla kontekstu urządzenia.
UINT GetTextAlign() const;
Wartość zwracana
Stan flag wyrównania tekstu. Wartość zwracana jest co najmniej jedną z następujących wartości:
TA_BASELINE
Określa wyrównanie osi x i linii bazowej wybranej czcionki w obrębie prostokąta ograniczenia.TA_BOTTOM
Określa wyrównanie osi x i dolnej części prostokąta ograniczenia.TA_CENTER
Określa wyrównanie osi y i środka prostokąta ograniczenia.TA_LEFT
Określa wyrównanie osi y i lewej strony prostokąta ograniczenia.TA_NOUPDATECP
Określa, że bieżące położenie nie jest aktualizowane.TA_RIGHT
Określa wyrównanie osi y i prawej strony prostokąta ograniczenia.TA_TOP
Określa wyrównanie osi x i górnej części prostokąta ograniczenia.TA_UPDATECP
Określa, że bieżące położenie jest aktualizowane.
Uwagi
Flagi wyrównania tekstu określają, jak TextOut
funkcje składowe i ExtTextOut
wyrównują ciąg tekstu w odniesieniu do punktu początkowego ciągu. Flagi wyrównania tekstu nie muszą być flagami jedno bitowymi i mogą być równe 0. Aby sprawdzić, czy flaga jest ustawiona, aplikacja powinna wykonać następujące kroki:
Zastosuj operator bitowy OR (
|
) do flagi i powiązanych flag pogrupowanych w następujący sposób:TA_LEFT
,TA_CENTER
iTA_RIGHT
TA_BASELINE
,TA_BOTTOM
iTA_TOP
TA_NOUPDATECP
iTA_UPDATECP
Zastosuj operator bitowy AND (
&
) języka C++ do wyniku i zwracanąGetTextAlign
wartość .Przetestuj równość tego wyniku i flagę.
CDC::GetTextCharacterExtra
Pobiera bieżące ustawienie dla liczby odstępów międzycharakterowych.
int GetTextCharacterExtra() const;
Wartość zwracana
Ilość odstępu międzycharakterowego.
Uwagi
Interfejs GDI dodaje ten odstęp do każdego znaku, w tym znaki podziału, gdy zapisuje wiersz tekstu w kontekście urządzenia.
Wartość domyślna dla odstępu międzycharakterowego wynosi 0.
CDC::GetTextColor
Pobiera bieżący kolor tekstu.
COLORREF GetTextColor() const;
Wartość zwracana
Bieżący kolor tekstu jako wartość koloru RGB.
Uwagi
Kolor tekstu jest kolorem pierwszego planu znaków rysowanych przy użyciu funkcji TextOut
składowych tekstowych GDI , ExtTextOut
i TabbedTextOut
.
CDC::GetTextExtent
Wywołaj tę funkcję składową, aby obliczyć szerokość i wysokość wiersza tekstu przy użyciu bieżącej czcionki w celu określenia wymiarów.
CSize GetTextExtent(
LPCTSTR lpszString,
int nCount) const;
CSize GetTextExtent(const CString& str) const;
Parametry
lpszString
Wskazuje ciąg znaków. Można również przekazać obiekt dla tego parametru CString
.
nCount
Określa liczbę znaków w ciągu.
str
CString
Obiekt zawierający określone znaki.
Wartość zwracana
Wymiary ciągu (w jednostkach logicznych) w CSize
obiekcie.
Uwagi
Informacje są pobierane z m_hAttribDC
elementu , kontekstu urządzenia atrybutu.
Domyślnie zakłada się, GetTextExtent
że tekst, dla którego pobiera wymiar, jest ustawiony wzdłuż linii poziomej (czyli ucieczka wynosi 0). Jeśli tworzysz czcionkę określającą ucieczkę niezerową, musisz jawnie przekonwertować kąt tekstu, aby uzyskać wymiary ciągu.
Bieżący region wycinków nie ma wpływu na szerokość i wysokość zwracaną przez GetTextExtent
element .
Ponieważ niektóre urządzenia nie umieszczają znaków w zwykłych tablicach komórek (czyli przeprowadzają kerning), suma zakresów znaków w ciągu może nie być równa zakresowi ciągu.
CDC::GetTextExtentExPointI
Pobiera liczbę znaków w określonym ciągu, który będzie mieścił się w określonym obszarze i wypełnia tablicę zakresem tekstu dla każdego z tych znaków.
BOOL GetTextExtentExPointI(
LPWORD pgiIn,
int cgi,
int nMaxExtent,
LPINT lpnFit,
LPINT alpDx,
LPSIZE lpSize) const;
Parametry
pgiIn
Wskaźnik do tablicy indeksów glifów, dla których zakresy mają być pobierane.
cgi
Określa liczbę glifów w tablicy wskazywanej przez pgiIn
.
nMaxExtent
Określa maksymalną dozwoloną szerokość w jednostkach logicznych sformatowanego ciągu.
lpnFit
Wskaźnik do liczby całkowitej, która otrzymuje liczbę maksymalnej liczby znaków, które mieszczą się w przestrzeni określonej przez nMaxExtent
. Gdy lpnFit
parametr to NULL
, nMaxExtent
jest ignorowany.
alpDx
Wskaźnik do tablicy liczb całkowitych, które odbiera częściowe zakresy glyph. Każdy element w tablicy daje odległość w jednostkach logicznych między początkiem tablicy indeksów glifów a jednym z glifów pasujących do przestrzeni określonej przez nMaxExtent
. Chociaż ta tablica powinna zawierać co najmniej tyle elementów, ile indeksów glifów określonych przez cgi
, funkcja wypełnia tablicę zakresami tylko dla tylu indeksów glifów, jak określono przez lpnFit
. Jeśli lpnDx
parametr ma NULL
wartość , funkcja nie oblicza częściowych szerokości ciągów.
lpSize
Wskaźnik do SIZE
struktury, która odbiera wymiary tablicy indeksów glifów w jednostkach logicznych. Ta wartość nie może być wartością NULL
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa emuluje funkcjonalność funkcji GetTextExtentExPointI
, zgodnie z opisem w zestawie Windows SDK.
CDC::GetTextExtentPointI
Pobiera szerokość i wysokość określonej tablicy indeksów glifów.
BOOL GetTextExtentPointI(
LPWORD pgiIn,
int cgi,
LPSIZE lpSize) const;
Parametry
pgiIn
Wskaźnik do tablicy indeksów glifów, dla których zakresy mają być pobierane.
cgi
Określa liczbę glifów w tablicy wskazywanej przez pgiIn
.
lpSize
Wskaźnik do SIZE
struktury, która odbiera wymiary tablicy indeksów glifów w jednostkach logicznych. Ta wartość nie może być wartością NULL
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa emuluje funkcjonalność funkcji GetTextExtentPointI
, zgodnie z opisem w zestawie Windows SDK.
CDC::GetTextFace
Wywołaj tę funkcję składową, aby skopiować nazwę czcionki bieżącej czcionki do buforu.
int GetTextFace(
int nCount,
LPTSTR lpszFacename) const;
int GetTextFace(CString& rString) const;
Parametry
nCount
Określa rozmiar buforu (w bajtach). Jeśli nazwa czcionki jest dłuższa niż liczba bajtów określonych przez ten parametr, nazwa jest obcięta.
lpszFacename
Wskazuje bufor nazwy czcionki.
rString
Odwołanie do CString
obiektu.
Wartość zwracana
Liczba bajtów skopiowanych do buforu, bez uwzględniania znaku null zakończenia. Jeśli wystąpi błąd, jest to 0.
Uwagi
Nazwa czcionki jest kopiowana jako ciąg zakończony o wartości null.
CDC::GetTextMetrics
Pobiera metryki dla bieżącej czcionki przy użyciu kontekstu urządzenia atrybutu.
BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
Parametry
lpMetrics
TEXTMETRIC
Wskazuje strukturę odbierającą metryki.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
CDC::GetViewportExt
Pobiera zakresy x i y obszaru widoku kontekstu urządzenia.
CSize GetViewportExt() const;
Wartość zwracana
Zakresy x i y (w jednostkach urządzeń) jako CSize
obiekt.
CDC::GetViewportOrg
Pobiera współrzędne x-i y źródła widoku skojarzonego z kontekstem urządzenia.
CPoint GetViewportOrg() const;
Wartość zwracana
Źródło widoku (we współrzędnych CPoint
urządzenia) jako obiekt.
CDC::GetWindow
Zwraca okno skojarzone z kontekstem urządzenia wyświetlania.
CWnd* GetWindow() const;
Wartość zwracana
Wskaźnik do CWnd
obiektu, jeśli się powiedzie; w przeciwnym razie NULL
.
Uwagi
Jest to funkcja zaawansowana. Na przykład ta funkcja składowa może nie zwracać okna widoku podczas drukowania lub podglądu wydruku. Zawsze zwraca okno skojarzone z danymi wyjściowymi. Funkcje wyjściowe, które używają danego rysowania kontrolera domeny do tego okna.
CDC::GetWindowExt
Pobiera zakresy x i y okna skojarzonego z kontekstem urządzenia.
CSize GetWindowExt() const;
Wartość zwracana
Zakresy x i y (w jednostkach logicznych) jako CSize
obiekt.
CDC::GetWindowOrg
Pobiera współrzędne x-i y źródła okna skojarzonego z kontekstem urządzenia.
CPoint GetWindowOrg() const;
Wartość zwracana
Początek okna (we współrzędnych CPoint
logicznych) jako obiekt.
CDC::GetWorldTransform
Pobiera bieżącą przestrzeń światową do transformacji przestrzeni stronicowej.
BOOL GetWorldTransform(XFORM& rXform) const;
Parametry
rXform
Odwołanie do struktury, która odbiera bieżącą przestrzeń światową XFORM
do transformacji przestrzeni stronicowej.
Wartość zwracana
Zwraca wartość niezerową dla powodzenia.
Zwraca wartość 0 w przypadku błędu.
Aby uzyskać rozszerzone informacje o błędzie, wywołaj metodę GetLastError
.
Uwagi
Ta metoda opakowuje funkcję GetWorldTransform
GDI systemu Windows .
CDC::GradientFill
Wywołaj tę funkcję składową, aby wypełnić struktury prostokątów i trójkątów kolorami, które płynnie zanika z jednej strony do drugiej.
BOOL GradientFill(
TRIVERTEX* pVertices,
ULONG nVertices,
void* pMesh,
ULONG nMeshElements,
DWORD dwMode);
Parametry
pVertices
Wskaźnik do tablicy TRIVERTEX
struktur, z których każdy definiuje wierzchołek trójkąta.
nVertices
Liczba wierzchołków.
pMesh
Tablica GRADIENT_TRIANGLE
struktur w trybie trójkąta lub tablica GRADIENT_RECT
struktur w trybie prostokąta.
nMeshElements
Liczba elementów (trójkątów lub prostokątów) w elemecie pMesh
.
dwMode
Określa tryb wypełnienia gradientu. Aby uzyskać listę możliwych wartości, zobacz GradientFill
w zestawie Windows SDK.
Wartość zwracana
TRUE
w przypadku powodzenia; w przeciwnym razie FALSE
.
Uwagi
Aby uzyskać więcej informacji, zobacz GradientFill
w zestawie Windows SDK.
CDC::GrayString
Rysuje wygaszony (szary) tekst w danej lokalizacji, zapisując tekst w mapie bitowej pamięci, przyciemniając mapę bitową, a następnie kopiując mapę bitową do ekranu.
virtual BOOL GrayString(
CBrush* pBrush,
BOOL (CALLBACK* lpfnOutput)(
HDC,
LPARAM,
int),
LPARAM lpData,
int nCount,
int x,
int y,
int nWidth,
int nHeight);
Parametry
pBrush
Określa szczotkę do użycia do ściemniania (szarości).
lpfnOutput
Określa adres procedury wystąpienia funkcji wywołania zwrotnego dostarczonej przez aplikację, która będzie rysować ciąg. Aby uzyskać więcej informacji, zobacz opis funkcji wywołania zwrotnego systemu Windows.OutputFunc
Jeśli ten parametr to NULL
, system używa funkcji systemu Windows TextOut
do rysowania ciągu i lpData
przyjmuje się, że jest długim wskaźnikiem do ciągu znaku, który ma być wyjściem.
lpData
Określa wskaźnik daleko do danych, które mają być przekazywane do funkcji wyjściowej. Jeśli lpfnOutput
parametr ma NULL
wartość , lpData
musi być długim wskaźnikiem do ciągu, który ma być danymi wyjściowymi.
nCount
Określa liczbę znaków, które mają być danymi wyjściowymi. Jeśli ten parametr ma wartość 0, GrayString
oblicza długość ciągu (przy założeniu, że lpData
jest to wskaźnik do ciągu). Jeśli nCount
wartość to 1, a funkcja wskazywana przez lpfnOutput
wartość zwraca wartość 0, obraz jest wyświetlany, ale nie jest wygaszony.
x
Określa logiczną współrzędną x pozycji początkowej prostokąta, który otacza ciąg.
y
Określa logiczną współrzędną y pozycji początkowej prostokąta, który otacza ciąg.
nWidth
Określa szerokość (w jednostkach logicznych) prostokąta, który otacza ciąg. Jeśli nWidth
wartość to 0, oblicza szerokość obszaru, przy założeniulpData
, GrayString
że jest wskaźnikiem do ciągu.
nHeight
Określa wysokość (w jednostkach logicznych) prostokąta, który otacza ciąg. Jeśli nHeight
wartość to 0, GrayString
oblicza wysokość obszaru, przy założeniu lpData
, że jest wskaźnikiem do ciągu.
Wartość zwracana
Nonzero, jeśli ciąg jest rysowany, lub 0, jeśli TextOut
funkcja lub funkcja wyjściowa dostarczona przez aplikację zwróciła wartość 0, lub jeśli za mało pamięci, aby utworzyć mapę bitową pamięci do wygaszonego.
Uwagi
Funkcja przyciemnia tekst niezależnie od zaznaczonego pędzla i tła. Funkcja GrayString
składowa używa aktualnie wybranej czcionki. Przed MM_TEXT
użyciem tej funkcji należy wybrać tryb mapowania.
Aplikacja może rysować wygaszone (szare) ciągi na urządzeniach, które obsługują szary kolor bez wywoływania funkcji składowej GrayString
. Kolor COLOR_GRAYTEXT
systemu to jasnoszary kolor systemu używany do rysowania wyłączonego tekstu. Aplikacja może wywołać funkcję systemu Windows, GetSysColor
aby pobrać wartość COLOR_GRAYTEXT
koloru . Jeśli kolor jest inny niż 0 (), aplikacja może wywołać SetTextColor
funkcję składową, aby ustawić kolor tekstu na wartość koloru, a następnie narysować ciąg bezpośrednio. Jeśli pobrany kolor jest, aplikacja musi wywołać GrayString
polecenie dim (szare) tekst.
Jeśli lpfnOutput
element ma NULL
wartość , GDI używa funkcji systemu Windows TextOut
i lpData
przyjmuje się, że jest wskaźnikiem daleko do znaku, który ma być wynikiem wyjściowym. Jeśli nie można obsłużyć znaków wyjściowych przez TextOut
funkcję składową (na przykład ciąg jest przechowywany jako mapa bitowa), aplikacja musi podać własną funkcję wyjściową.
Wszystkie funkcje wywołania zwrotnego muszą wychwycić wyjątki programu Microsoft Foundation przed powrotem do systemu Windows, ponieważ wyjątki nie mogą być zgłaszane przez granice wywołania zwrotnego. Aby uzyskać więcej informacji na temat wyjątków, zobacz artykuł Wyjątki.
Przekazana funkcja wywołania zwrotnego musi używać GrayString
__stdcall
konwencji wywoływania i musi zostać wyeksportowana za pomocą __declspec
polecenia .
Gdy platforma jest w trybie podglądu, wywołanie funkcji składowej jest tłumaczone na TextOut
wywołanieGrayString
, a funkcja wywołania zwrotnego nie jest wywoływana.
CDC::HIMETRICtoDP
Użyj tej funkcji podczas konwertowania HIMETRIC
rozmiarów z OLE na piksele.
void HIMETRICtoDP(LPSIZE lpSize) const;
Parametry
lpSize
SIZE
Wskazuje strukturę lub CSize
obiekt.
Uwagi
Jeśli tryb mapowania obiektu kontekstu urządzenia to MM_LOENGLISH
, MM_HIENGLISH
MM_LOMETRIC
lub MM_HIMETRIC
, konwersja jest oparta na liczbie pikseli w calach fizycznych. Jeśli tryb mapowania jest jednym z pozostałych trybów bez ograniczeń (na przykład MM_TEXT
), konwersja jest oparta na liczbie pikseli w calu logicznym.
CDC::HIMETRICtoLP
Wywołaj tę funkcję, aby przekonwertować HIMETRIC
jednostki na jednostki logiczne.
void HIMETRICtoLP(LPSIZE lpSize) const;
Parametry
lpSize
SIZE
Wskazuje strukturę lub CSize
obiekt.
Uwagi
Użyj tej funkcji, gdy uzyskasz HIMETRIC
rozmiary z obiektu OLE i chcesz przekonwertować je na naturalny tryb mapowania aplikacji.
Konwersja jest realizowana przez najpierw przekonwertowanie HIMETRIC
jednostek na piksele, a następnie przekonwertowanie tych jednostek na jednostki logiczne przy użyciu bieżących jednostek mapowania kontekstu urządzenia. Należy pamiętać, że zakresy okna i widoku urządzenia będą mieć wpływ na wynik.
CDC::IntersectClipRect
Tworzy nowy region wycinków, tworząc przecięcie bieżącego regionu i prostokąt określony przez x1
, , y1
x2
i y2
.
int IntersectClipRect(
int x1,
int y1,
int x2,
int y2);
int IntersectClipRect(LPCRECT lpRect);
Parametry
x1
Określa logiczną współrzędną x lewego górnego rogu prostokąta.
y1
Określa współrzędną logiczną y lewego górnego rogu prostokąta.
x2
Określa współrzędną logiczną x prawego dolnego rogu prostokąta.
y2
Określa logiczną współrzędną y prawego dolnego rogu prostokąta.
lpRect
Określa prostokąt. Można przekazać CRect
obiekt lub wskaźnik do RECT
struktury dla tego parametru.
Wartość zwracana
Typ nowego regionu wycinków. Może to być dowolna z następujących wartości:
COMPLEXREGION
Nowy region wycinków ma nakładające się obramowania.ERROR
Kontekst urządzenia jest nieprawidłowy.NULLREGION
Nowy region wycinków jest pusty.SIMPLEREGION
Nowy region wycinków nie ma nakładających się obramowań.
Uwagi
Klipy GDI wszystkie kolejne dane wyjściowe pasujące do nowej granicy. Szerokość i wysokość nie mogą przekraczać 32 767.
CDC::InvertRect
Odwraca zawartość danego prostokąta.
void InvertRect(LPCRECT lpRect);
Parametry
lpRect
Wskazuje element RECT
zawierający współrzędne logiczne prostokąta, które mają zostać odwrócone. Można również przekazać obiekt dla tego parametru CRect
.
Uwagi
Inversion to logiczna operacja NOT i odwraca bity każdego piksela. Na wyświetlaczach monochromatycznych funkcja sprawia, że białe piksele są czarne i czarne. W przypadku wyświetlania kolorów inwersja zależy od sposobu generowania kolorów dla wyświetlacza. Wywołanie InvertRect
dwukrotnie z tym samym prostokątem przywraca ekran do poprzednich kolorów.
Jeśli prostokąt jest pusty, nic nie jest rysowane.
Przykład
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
Odwraca kolory w regionie określonym przez pRgn
.
BOOL InvertRgn(CRgn* pRgn);
Parametry
pRgn
Określa region, który ma zostać odwrócony. Współrzędne regionu są określone w jednostkach logicznych.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Na wyświetlaczach monochromatycznych funkcja sprawia, że białe piksele są czarne i czarne. W przypadku wyświetlania kolorów inwersja zależy od sposobu generowania kolorów dla wyświetlacza.
CDC::IsPrinting
Określa, czy kontekst urządzenia jest używany do drukowania.
BOOL IsPrinting() const;
Wartość zwracana
Nonzero, jeśli CDC
obiekt jest kontrolerem domeny drukarki; w przeciwnym razie 0.
CDC::LineTo
Rysuje linię z bieżącej pozycji w górę do, ale nie uwzględnia punktu określonego przez x
i y
(lub point
).
BOOL LineTo(
int x,
int y);
BOOL LineTo(POINT point);
Parametry
x
Określa logiczną współrzędną x punktu końcowego dla wiersza.
y
Określa logiczną współrzędną y punktu końcowego dla wiersza.
point
Określa punkt końcowy dla wiersza. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Nonzero, jeśli linia jest rysowana; w przeciwnym razie 0.
Uwagi
Linia jest rysowana za pomocą zaznaczonego pióra. Bieżące położenie jest ustawione na x
, y
lub na point
.
Przykład
Zobacz przykład dla elementu CRect::CenterPoint
.
CDC::LPtoDP
Konwertuje jednostki logiczne na jednostki urządzeń.
void LPtoDP(
LPPOINT lpPoints,
int nCount = 1) const;
void LPtoDP(LPRECT lpRect) const;
void LPtoDP(LPSIZE lpSize) const;
Parametry
lpPoints
Wskazuje tablicę punktów. Każdy punkt w tablicy jest strukturą POINT
lub obiektem CPoint
.
nCount
Liczba punktów w tablicy.
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt. Ten parametr jest używany w typowym przypadku mapowania prostokąta z jednostek logicznych na urządzenia.
lpSize
SIZE
Wskazuje strukturę lub CSize
obiekt.
Uwagi
Funkcja mapuje współrzędne każdego punktu lub wymiarów rozmiaru z logicznego systemu współrzędnych GDI na układ współrzędnych urządzenia. Konwersja zależy od bieżącego trybu mapowania oraz ustawień źródeł i zakresów okna i widoku urządzenia.
Współrzędne x i y punktów to 2-bajtowe liczby całkowite ze znakiem w zakresie od -32 768 do 32 767. W przypadkach, gdy tryb mapowania spowoduje, że wartości będą większe niż te limity, system ustawia odpowiednio wartości na -32 768 i 32 767.
CDC::LPtoHIMETRIC
Wywołaj tę funkcję, aby przekonwertować jednostki logiczne na HIMETRIC
jednostki.
void LPtoHIMETRIC(LPSIZE lpSize) const;
Parametry
lpSize
SIZE
Wskazuje strukturę lub CSize
obiekt.
Uwagi
Użyj tej funkcji, gdy nadajesz HIMETRIC
rozmiary ole, konwertując z trybu mapowania naturalnego aplikacji. Zakresy okna i obszaru wyświetlania urządzenia będą mieć wpływ na wynik.
Konwersja jest realizowana przez najpierw przekonwertowanie jednostek logicznych na piksele przy użyciu bieżących jednostek mapowania kontekstu urządzenia, a następnie przekonwertowanie tych jednostek na HIMETRIC
jednostki.
CDC::m_hAttribDC
Kontekst urządzenia atrybutu dla tego CDC
obiektu.
HDC m_hAttribDC;
Uwagi
Domyślnie ten kontekst urządzenia jest równy m_hDC
. Ogólnie rzecz biorąc, CDC
wywołania interfejsu GDI, które żądają informacji z kontekstu urządzenia, są kierowane do .m_hAttribDC
CDC
Zobacz opis klasy, aby uzyskać więcej informacji na temat korzystania z tych dwóch kontekstów urządzenia.
CDC::m_hDC
Kontekst urządzenia wyjściowego dla tego CDC
obiektu.
HDC m_hDC;
Uwagi
Domyślnie m_hDC
jest to m_hAttribDC
, drugi kontekst urządzenia opakowany przez CDC
. Ogólnie rzecz biorąc, CDC
wywołania GDI, które tworzą dane wyjściowe, przechodzą do m_hDC
kontekstu urządzenia. Można zainicjować m_hDC
i m_hAttribDC
wskazać różne urządzenia. CDC
Zobacz opis klasy, aby uzyskać więcej informacji na temat korzystania z tych dwóch kontekstów urządzenia.
CDC::MaskBlt
Łączy dane kolorów dla źródłowych i docelowych map bitowych przy użyciu danej maski i operacji rastrowania.
BOOL MaskBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
CBitmap& maskBitmap,
int xMask,
int yMask,
DWORD dwRop);
Parametry
x
Określa współrzędną logiczną x lewego górnego rogu prostokąta docelowego.
y
Określa współrzędną logiczną y lewego górnego rogu prostokąta docelowego.
nWidth
Określa szerokość w jednostkach logicznych prostokąta docelowego i źródłowej mapy bitowej.
nHeight
Określa wysokość w jednostkach logicznych prostokąta docelowego i źródłowej mapy bitowej.
pSrcDC
Identyfikuje kontekst urządzenia, z którego ma zostać skopiowana mapa bitowa. Musi to być zero, jeśli dwRop
parametr określa operację rasterową, która nie zawiera źródła.
xSrc
Określa logiczną współrzędną x lewego górnego rogu źródłowej mapy bitowej.
ySrc
Określa współrzędną logiczną y lewego górnego rogu źródłowej mapy bitowej.
maskBitmap
Identyfikuje mapę bitową maski monochromatycznej w połączeniu z mapą bitową koloru w kontekście urządzenia źródłowego.
xMask
Określa przesunięcie pikseli poziomych dla mapy bitowej maski określonej przez maskBitmap
parametr .
yMask
Określa przesunięcie pikseli w pionie dla mapy bitowej maski określonej przez maskBitmap
parametr .
dwRop
Określa kody operacji rastera pierwszego planu i tła, których funkcja używa do kontrolowania kombinacji danych źródłowych i docelowych. Kod operacji rastera tła jest przechowywany w wysokim bajtzie wysokiej wartości; kod operacji rastrowego pierwszego planu jest przechowywany w niskiej bajtzie wysokiej wartości; niski wyraz tej wartości jest ignorowany i powinien mieć wartość zero. Makro MAKEROP4
tworzy takie kombinacje kodów operacji rasterów pierwszego planu i tła. Zobacz sekcję Uwagi, aby zapoznać się z omówieniem pierwszego planu i tła w kontekście tej funkcji. Zobacz funkcję składową, BitBlt
aby uzyskać listę typowych kodów operacji rasterowych.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Wartość 1 w masce określonej przez maskBitmap
wskazuje, że kod operacji rastrowego pierwszego planu określony przez dwRop
należy zastosować w tej lokalizacji. Wartość 0 w masce wskazuje, że kod operacji rastrowania tła określony przez dwRop
należy zastosować w tej lokalizacji. Jeśli operacje rastrowe wymagają źródła, prostokąt maski musi obejmować prostokąt źródłowy. Jeśli tak nie jest, funkcja zakończy się niepowodzeniem. Jeśli operacje rastrowe nie wymagają źródła, prostokąt maski musi obejmować prostokąt docelowy. Jeśli tak nie jest, funkcja zakończy się niepowodzeniem.
Jeśli przekształcenie obrotu lub ścinania jest wykonywane dla kontekstu urządzenia źródłowego po wywołaniu tej funkcji, wystąpi błąd. Jednak inne typy przekształceń są dozwolone.
Jeśli formaty kolorów źródłowych, deseń i docelowych map bitowych różnią się, ta funkcja konwertuje wzorzec lub format źródłowy albo oba te formaty, aby były zgodne z formatem docelowym. Jeśli mapa bitowa maski nie jest monochromatyczną mapą bitową, wystąpi błąd. Po zarejestrowaniu rozszerzonego metapliku wystąpi błąd (a funkcja zwróci wartość 0), jeśli kontekst urządzenia źródłowego zidentyfikuje kontekst urządzenia rozszerzonego metapliku. Nie wszystkie urządzenia obsługują program MaskBlt
. Aplikacja powinna wywołać metodę GetDeviceCaps
w celu określenia, czy urządzenie obsługuje tę funkcję. Jeśli nie jest dostarczana mapa bitowa maski, ta funkcja zachowuje się dokładnie tak jak BitBlt
, używając kodu operacji rastrowego pierwszego planu. Przesunięcie pikseli na mapie mapy bitowej maski na punkt (0,0) na mapie bitowej kontekstu urządzenia źródłowego. Jest to przydatne w przypadkach, w których mapa bitowa maski zawiera zestaw masek; aplikacja może łatwo zastosować dowolną z nich do zadania rozcinania maski, dostosowując przesunięcia pikseli i rozmiary prostokątów wysyłanych do MaskBlt
programu .
CDC::ModifyWorldTransform
Zmienia transformację świata dla kontekstu urządzenia przy użyciu określonego trybu.
BOOL ModifyWorldTransform(
const XFORM& rXform,
DWORD iMode);
Parametry
rXform
Odwołanie do struktury używanej XFORM
do modyfikowania transformacji świata dla danego kontekstu urządzenia.
iMode
Określa sposób modyfikowania danych transformacji bieżącego świata. Aby uzyskać listę wartości, które mogą przyjmować ten parametr, zobacz ModifyWorldTransform
.
Wartość zwracana
Zwraca wartość niezerową dla powodzenia.
Zwraca wartość 0 w przypadku błędu.
Aby uzyskać rozszerzone informacje o błędzie, wywołaj metodę GetLastError
.
Uwagi
Ta metoda opakowuje funkcję ModifyWorldTransform
GDI systemu Windows .
CDC::MoveTo
Przenosi bieżące położenie do punktu określonego przez x
i y
(lub przez point
).
CPoint MoveTo(
int x,
int y);
CPoint MoveTo(POINT point);
Parametry
x
Określa logiczną współrzędną x nowego położenia.
y
Określa współrzędną logiczną nowego położenia.
point
Określa nowe położenie. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Współrzędne CPoint
x i y poprzedniej pozycji jako obiekt.
Przykład
Zobacz przykład dla elementu CRect::CenterPoint
.
CDC::OffsetClipRgn
Przenosi obszar wycinków kontekstu urządzenia przez określone przesunięcia.
int OffsetClipRgn(
int x,
int y);
int OffsetClipRgn(SIZE size);
Parametry
x
Określa liczbę jednostek logicznych, które mają być przenoszone w lewo lub w prawo.
y
Określa liczbę jednostek logicznych, które mają być przenoszone w górę lub w dół.
size
Określa kwotę przesunięcia.
Wartość zwracana
Typ nowego regionu. Może to być dowolna z następujących wartości:
COMPLEXREGION
Obszar wycinków ma nakładające się obramowania.ERROR
Kontekst urządzenia jest nieprawidłowy.NULLREGION
Obszar wycinków jest pusty.SIMPLEREGION
Obszar wycinków nie ma nakładających się obramowań.
Uwagi
Funkcja przenosi jednostki regionu x
wzdłuż osi x i y
jednostek wzdłuż osi y.
CDC::OffsetViewportOrg
Modyfikuje współrzędne źródła widoku względem współrzędnych bieżącego źródła widoku.
virtual CPoint OffsetViewportOrg(
int nWidth,
int nHeight);
Parametry
nWidth
Określa liczbę jednostek urządzeń do dodania do współrzędnej x bieżącego źródła.
nHeight
Określa liczbę jednostek urządzeń do dodania do współrzędnej bieżącego źródła.
Wartość zwracana
Poprzednie źródło widoku (we współrzędnych CPoint
urządzenia) jako obiekt.
CDC::OffsetWindowOrg
Modyfikuje współrzędne źródła okna względem współrzędnych bieżącego źródła okna.
CPoint OffsetWindowOrg(
int nWidth,
int nHeight);
Parametry
nWidth
Określa liczbę jednostek logicznych, które mają zostać dodane do współrzędnych x bieżącego źródła.
nHeight
Określa liczbę jednostek logicznych, które mają zostać dodane do współrzędnej y bieżącego źródła.
Wartość zwracana
Poprzednie źródło okna (we współrzędnych CPoint
logicznych) jako obiekt.
CDC::operator HDC
Użyj tego operatora, aby pobrać uchwyt CDC
kontekstu urządzenia obiektu.
operator HDC() const;
Wartość zwracana
W przypadku powodzenia uchwyt obiektu kontekstu urządzenia; w przeciwnym razie, NULL
.
Uwagi
Uchwyt umożliwia bezpośrednie wywoływanie interfejsów API systemu Windows.
CDC::PaintRgn
Wypełnia region określony przy użyciu pRgn
bieżącego pędzla.
BOOL PaintRgn(CRgn* pRgn);
Parametry
pRgn
Identyfikuje region do wypełnienia. Współrzędne dla danego regionu są określone w jednostkach logicznych.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
CDC::PatBlt
Tworzy wzorzec bitowy na urządzeniu.
BOOL PatBlt(
int x,
int y,
int nWidth,
int nHeight,
DWORD dwRop);
Parametry
x
Określa logiczną współrzędną x lewego górnego rogu prostokąta, który ma odbierać wzorzec.
y
Określa współrzędną logiczną y lewego górnego rogu prostokąta, który ma odbierać wzorzec.
nWidth
Określa szerokość (w jednostkach logicznych) prostokąta, który ma odbierać wzorzec.
nHeight
Określa wysokość (w jednostkach logicznych) prostokąta, który ma odbierać wzorzec.
dwRop
Określa kod operacji raster-operation. Kody operacji rasterowych (ROPs) definiują sposób, w jaki GDI łączy kolory w operacjach wyjściowych, które obejmują bieżące szczotki, możliwą mapę bitową źródłową i docelową mapę bitową. Ten parametr może być jedną z następujących wartości:
PATCOPY
Kopiuje wzorzec do docelowej mapy bitowej.PATINVERT
Łączy docelową mapę bitową ze wzorcem przy użyciu operatora logicznego XOR (^
).DSTINVERT
Odwraca docelową mapę bitową.BLACKNESS
Zamienia wszystkie dane wyjściowe na.WHITENESS
Zmienia wszystkie dane wyjściowe na białe.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Wzorzec jest kombinacją wybranego pędzla i wzorca już na urządzeniu. Kod operacji rastrowej określony przez dwRop
definiuje sposób łączenia wzorców. Operacje rasterowe wymienione dla tej funkcji są ograniczonym podzestawem pełnych 256 kodów operacji raster-operacji; w szczególności nie można użyć kodu operacji raster-operation, który odwołuje się do źródła.
Nie wszystkie konteksty urządzeń obsługują PatBlt
funkcję. Aby określić, czy kontekst urządzenia obsługuje PatBlt
, wywołaj GetDeviceCaps
funkcję składową za pomocą indeksu RASTERCAPS
i sprawdź wartość zwracaną dla flagi RC_BITBLT
.
CDC::Pie
Rysuje klina w kształcie kołowego, rysując łuk wielokropkowy, którego środek i dwa punkty końcowe są połączone liniami.
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);
Parametry
x1
Określa współrzędną x lewego górnego rogu prostokąta ograniczenia (w jednostkach logicznych).
y1
Określa współrzędną y lewego górnego rogu prostokąta ograniczenia (w jednostkach logicznych).
x2
Określa współrzędną x prawego dolnego rogu prostokąta ograniczenia (w jednostkach logicznych).
y2
Określa współrzędną y prawego dolnego rogu prostokąta ograniczenia (w jednostkach logicznych).
x3
Określa współrzędną x punktu początkowego łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
y3
Określa współrzędną y punktu początkowego łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
x4
Określa współrzędną x punktu końcowego łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
y4
Określa współrzędną y punktu końcowego łuku (w jednostkach logicznych). Ten punkt nie musi leżeć dokładnie na łuku.
lpRect
Określa prostokąt ograniczenia. Można przekazać CRect
obiekt lub wskaźnik do RECT
struktury dla tego parametru.
ptStart
Określa punkt początkowy łuku. Ten punkt nie musi leżeć dokładnie na łuku. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
ptEnd
Określa punkt końcowy łuku. Ten punkt nie musi leżeć dokładnie na łuku. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Środek łuku to środek prostokąta ograniczenia określonego przez x1
, y1
, x2
i y2
(lub przez lpRect
). Punkty początkowe i końcowe łuku są określane przez , , i y4
(lub przez ptStart
i ptEnd
). x4
y3
x3
Łuk jest rysowany za pomocą zaznaczonego pióra, przesuwając się w kierunku przeciwkręciowym. Dwa kolejne wiersze są rysowane z każdego punktu końcowego do środka łuku. Obszar kołowy jest wypełniony bieżącym pędzlem. Jeśli x3
równa x4
się i y3
równa y4
, wynik jest wielokropkiem z jedną linią z środka wielokropka do punktu (x3
, y3
) lub (x4
, y4
).
Rysunek rysowany przez tę funkcję rozciąga się do góry, ale nie zawiera współrzędnych prawej i dolnej. Oznacza to, że wysokość rysunku to y2
- y1
, a szerokość rysunku to .x2
- x1
Zarówno szerokość, jak i wysokość prostokąta ograniczenia muszą być większe niż 2 jednostki i mniejsze niż 32 767 jednostek.
Przykład
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
Odtwarza zawartość określonego metapliku w kontekście urządzenia.
BOOL PlayMetaFile(HMETAFILE hMF);
BOOL PlayMetaFile(
HENHMETAFILE hEnhMetaFile,
LPCRECT lpBounds);
Parametry
hMF
Identyfikuje metaplik, który ma być odtwarzany.
hEnhMetaFile
Identyfikuje rozszerzony metaplik.
lpBounds
RECT
Wskazuje strukturę lub CRect
obiekt, który zawiera współrzędne prostokąta ograniczenia używanego do wyświetlania obrazu. Współrzędne są określane w jednostkach logicznych.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Metaplik można odtworzyć dowolną liczbę razy.
Druga wersja PlayMetaFile
przedstawia obraz przechowywany w danym metapliku w formacie rozszerzonym. Gdy aplikacja wywołuje drugą wersję PlayMetaFile
programu , system Windows używa ramki obrazu w nagłówku enhanced-metafile do mapowania obrazu na prostokąt wskazywany przez parametr lpBounds . (Ten obraz może być ścinany lub obracany przez ustawienie świata przekształcenia w urządzeniu wyjściowym przed wywołaniem metody PlayMetaFile
. Punkty wzdłuż krawędzi prostokąta znajdują się w obrazie. Obraz rozszerzonego metapliku można przycinać przez zdefiniowanie regionu wycinkowania na urządzeniu wyjściowym przed odtworzeniem rozszerzonego metapliku.
Jeśli rozszerzony metaplik zawiera opcjonalną paletę, aplikacja może osiągnąć spójne kolory, konfigurując paletę kolorów na urządzeniu wyjściowym przed wywołaniem drugiej wersji programu PlayMetaFile
. Aby pobrać paletę opcjonalną, użyj GetEnhMetaFilePaletteEntries
funkcji systemu Windows. Rozszerzony metaplik można osadzać w nowo utworzonym rozszerzonym metapliku, wywołując drugą wersję PlayMetaFile
i odtwarzając źródłowy rozszerzony metaplik w kontekście urządzenia dla nowego rozszerzonego metapliku.
Stany kontekstu wyjściowego urządzenia są zachowywane przez tę funkcję. Dowolny obiekt utworzony, ale nie usunięty w rozszerzonym metapliku, jest usuwany przez tę funkcję. Aby zatrzymać tę funkcję, aplikacja może wywołać CancelDC
funkcję systemu Windows z innego wątku, aby zakończyć operację. W tym przypadku funkcja zwraca zero.
CDC::PlgBlt
Wykonuje bitowy transfer bitów danych kolorów z określonego prostokąta w kontekście urządzenia źródłowego do określonego równoległegoogramu w danym kontekście urządzenia.
BOOL PlgBlt(
LPPOINT lpPoint,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nWidth,
int nHeight,
CBitmap& maskBitmap,
int xMask,
int yMask);
Parametry
lpPoint
Wskazuje tablicę trzech punktów w przestrzeni logicznej, która identyfikuje trzy rogi docelowego równoległości. Lewy górny róg prostokąta źródłowego jest mapowany na pierwszy punkt w tej tablicy, prawy górny róg do drugiego punktu w tej tablicy, a dolny lewy róg do trzeciego punktu. Prawy dolny róg prostokąta źródłowego jest mapowany na niejawny czwarty punkt w równoległości.
pSrcDC
Identyfikuje kontekst urządzenia źródłowego.
xSrc
Określa współrzędną x w jednostkach logicznych lewego górnego rogu prostokąta źródłowego.
ySrc
Określa współrzędną y w jednostkach logicznych lewego górnego rogu prostokąta źródłowego.
nWidth
Określa szerokość w jednostkach logicznych prostokąta źródłowego.
nHeight
Określa wysokość w jednostkach logicznych prostokąta źródłowego.
maskBitmap
Identyfikuje opcjonalną mapę bitową monochromatyczną używaną do maskowania kolorów prostokąta źródłowego.
xMask
Określa współrzędną x lewego górnego rogu monochromatycznej mapy bitowej.
yMask
Określa współrzędną y lewego górnego rogu monochromatycznej mapy bitowej.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Jeśli dana uchwyt maski bitów identyfikuje prawidłową mapę bitową monochromatyczną, funkcja używa tej mapy bitowej do maskowania bitów danych koloru z prostokąta źródłowego.
Czwarty wierzchołek równoległości (D) jest definiowany przez traktowanie pierwszych trzech punktów (A, B i C) jako wektorów i obliczeń D = B + C - A.
Jeśli maska bitów istnieje, wartość 1 w masce wskazuje, że kolor piksela źródłowego powinien zostać skopiowany do miejsca docelowego. Wartość 0 w masce wskazuje, że docelowy kolor pikseli nie jest zmieniany.
Jeśli prostokąt maski jest mniejszy niż prostokąt źródłowy i docelowy, funkcja replikuje wzorzec maski.
Przekształcenia skalowania, tłumaczenia i odbicia są dozwolone w kontekście urządzenia źródłowego; jednak przekształcenia obrotu i ścinania nie są. Jeśli mapa bitowa maski nie jest monochromatyczną mapą bitową, wystąpi błąd. Tryb rozciągania kontekstu urządzenia docelowego służy do określania sposobu rozciągania lub kompresji pikseli, jeśli jest to konieczne. Po zarejestrowaniu rozszerzonego metapliku wystąpi błąd, jeśli kontekst urządzenia źródłowego zidentyfikuje kontekst urządzenia rozszerzonego metapliku.
Współrzędne miejsca przeznaczenia są przekształcane zgodnie z kontekstem urządzenia docelowego; współrzędne źródła są przekształcane zgodnie z kontekstem urządzenia źródłowego. Jeśli przekształcenie źródła ma rotację lub ścinanie, zwracany jest błąd. Jeśli prostokąty docelowe i źródłowe nie mają tego samego formatu koloru, PlgBlt
konwertuje prostokąt źródłowy, aby był zgodny z prostokątem docelowym. Nie wszystkie urządzenia obsługują program PlgBlt
. Aby uzyskać więcej informacji, zobacz opis RC_BITBLT
możliwości rasteru w funkcji składowej CDC::GetDeviceCaps
.
Jeśli konteksty urządzenia źródłowego i docelowego reprezentują niezgodne urządzenia, PlgBlt
zwraca błąd.
CDC::PolyBezier
Rysuje co najmniej jedną krzywą Bzier.
BOOL PolyBezier(
const POINT* lpPoints,
int nCount);
Parametry
lpPoints
Wskazuje tablicę POINT
struktur danych, które zawierają punkty końcowe i punkty kontrolne linii spline.
nCount
Określa liczbę punktów w tablicy lpPoints
. Ta wartość musi być większa niż trzy razy więcej niż trzy razy większa niż liczba linii szprych, ponieważ każda linia spline Bzier wymaga dwóch punktów kontrolnych i punktu końcowego, a początkowa linia spline wymaga innego punktu początkowego.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Ta funkcja rysuje sześcienne linie Bzier przy użyciu punktów końcowych i punktów kontrolnych określonych przez lpPoints
parametr . Pierwsza linia szprychy jest pobierana od pierwszego punktu do czwartego punktu przy użyciu drugiego i trzeciego punktu jako punktów kontrolnych. Każda kolejna linia w sekwencji wymaga dokładnie trzech kolejnych punktów: punkt końcowy poprzedniej linii spline jest używany jako punkt początkowy, kolejne dwa punkty w sekwencji to punkty kontrolne, a trzeci jest punktem końcowym.
Bieżące położenie nie jest używane ani aktualizowane przez PolyBezier
funkcję. Ilustracja nie jest wypełniona. Ta funkcja rysuje linie przy użyciu bieżącego pióra.
CDC::PolyBezierTo
Rysuje co najmniej jedną krzywą Bzier.
BOOL PolyBezierTo(
const POINT* lpPoints,
int nCount);
Parametry
lpPoints
Wskazuje tablicę POINT
struktur danych, która zawiera punkty końcowe i punkty kontrolne.
nCount
Określa liczbę punktów w tablicy lpPoints
. Ta wartość musi być trzy razy liczbą linii do narysowania, ponieważ każda linia spline Bzier wymaga dwóch punktów kontrolnych i punktu końcowego.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Ta funkcja rysuje sześcienne linie Bzier przy użyciu punktów kontrolnych określonych przez lpPoints
parametr . Pierwsza linia szprychy jest pobierana z bieżącej pozycji do trzeciego punktu przy użyciu dwóch pierwszych punktów jako punktów kontrolnych. Dla każdej kolejnej linii spline funkcja potrzebuje dokładnie trzech kolejnych punktów i używa punktu końcowego poprzedniej linii spline jako punktu początkowego dla następnego. PolyBezierTo
przenosi bieżącą pozycję do punktu końcowego ostatniego szprychy Bziera. Ilustracja nie jest wypełniona. Ta funkcja rysuje linie przy użyciu bieżącego pióra.
Przykład
Zobacz przykład dla elementu CDC::BeginPath
.
CDC::PolyDraw
Rysuje zestaw segmentów linii i krzywych Bzier.
BOOL PolyDraw(
const POINT* lpPoints,
const BYTE* lpTypes,
int nCount);
Parametry
lpPoints
Wskazuje tablicę POINT
struktur danych, która zawiera punkty końcowe dla każdego segmentu wiersza, punktów końcowych i punktów kontrolnych dla każdego wiersza Bzier.
lpTypes
Wskazuje tablicę określającą sposób użycia każdego punktu w tablicy lpPoints
. Wartości mogą być jedną z następujących wartości:
PT_MOVETO
Określa, że ten punkt rozpoczyna rozłączny rysunek. Ten punkt staje się nową bieżącą pozycją.PT_LINETO
Określa, że wiersz ma być rysowany z bieżącego położenia do tego punktu, który następnie staje się nową bieżącą pozycją.PT_BEZIERTO
Określa, że ten punkt jest punktem kontrolnym lub punktem końcowym dla linii spline Bzier.
PT_BEZIERTO
typy są zawsze wykonywane w zestawach trzech. Bieżąca pozycja definiuje punkt wyjścia dla linii spline Bzier. Pierwsze dwa PT_BEZIERTO
punkty to punkty kontrolne, a trzeci PT_BEZIERTO
punkt to punkt końcowy. Punkt końcowy staje się nową bieżącą pozycją. Jeśli nie ma trzech kolejnych PT_BEZIERTO
punktów, wynik błędu.
Typ PT_LINETO
lub PT_BEZIERTO
można połączyć z następującą stałą przy użyciu operatora bitowego OR , aby wskazać, że odpowiedni punkt jest ostatnim punktem na rysunku i rysunek jest zamknięty:
PT_CLOSEFIGURE
Określa, że rysunek jest automatycznie zamykany po zakończeniuPT_LINETO
PT_BEZIERTO
lub typu dla tego punktu. Linia jest rysowana od tego punktu do ostatniegoPT_MOVETO
lubMoveTo
punktu.Ta flaga jest łączona z
PT_LINETO
typem linii lubPT_BEZIERTO
typem punktu końcowego linii Bzier przy użyciu operatora bitowego OR . Bieżące położenie jest ustawione na punkt końcowy linii zamykającej.
nCount
Określa całkowitą liczbę punktów w lpPoints
tablicy, taką samą jak liczba bajtów w tablicy lpTypes
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Ta funkcja może służyć do rysowania rozłącznych liczb zamiast kolejnych wywołań funkcji CDC::MoveTo
, CDC::LineTo
i CDC::PolyBezierTo
elementów członkowskich. Linie i linie szprych są rysowane przy użyciu bieżącego pióra, a figury nie są wypełnione. Jeśli istnieje aktywna ścieżka uruchomiona przez wywołanie funkcji składowej CDC::BeginPath
, PolyDraw
dodaje element do ścieżki. Punkty zawarte w tablicy lpPoints
i w lpTypes
elemecie wskazują, czy każdy punkt jest częścią CDC::MoveTo
operacji , CDC::LineTo
lub operacji CDC::BezierTo
. Możliwe jest również zamknięcie liczb. Ta funkcja aktualizuje bieżące położenie.
Przykład
Zobacz przykład dla elementu CDC::BeginPath
.
CDC::Polygon
Rysuje wielokąt składający się z co najmniej dwóch punktów (wierzchołków) połączonych liniami przy użyciu bieżącego pióra.
BOOL Polygon(
LPPOINT lpPoints,
int nCount);
Parametry
lpPoints
Wskazuje tablicę punktów, która określa wierzchołki wielokąta. Każdy punkt w tablicy jest strukturą POINT
lub obiektem CPoint
.
nCount
Określa liczbę wierzchołków w tablicy.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
System zamyka wielokąt automatycznie, w razie potrzeby, rysując linię z ostatniego wierzchołka do pierwszego.
Bieżący tryb wypełniania wielokątnego można pobrać lub ustawić za pomocą funkcji składowych GetPolyFillMode
i SetPolyFillMode
.
Przykład
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
Rysuje zestaw segmentów linii łączących punkty określone przez lpPoints
.
BOOL Polyline(
LPPOINT lpPoints,
int nCount);
Parametry
lpPoints
Wskazuje tablicę POINT
struktur lub CPoint
obiektów, które mają być połączone.
nCount
`
Określa liczbę punktów w tablicy. Ta wartość musi być co najmniej 2.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Linie są rysowane od pierwszego punktu do kolejnych punktów przy użyciu bieżącego pióra. W przeciwieństwie do funkcji Polyline
składowej LineTo
funkcja nie używa ani nie aktualizuje bieżącego położenia.
Aby uzyskać więcej informacji, zobacz PolyLine
w zestawie Windows SDK.
CDC::PolylineTo
Rysuje co najmniej jedną prostą linię.
BOOL PolylineTo(
const POINT* lpPoints,
int nCount);
Parametry
lpPoints
Wskazuje tablicę POINT
struktur danych, która zawiera wierzchołki linii.
nCount
Określa liczbę punktów w tablicy.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Linia jest rysowana z bieżącej pozycji do pierwszego punktu określonego przez lpPoints
parametr przy użyciu bieżącego pióra. Dla każdego dodatkowego wiersza funkcja pobiera od punktu końcowego poprzedniego wiersza do następnego punktu określonego przez lpPoints
. PolylineTo
przenosi bieżącą pozycję do punktu końcowego ostatniego wiersza. Jeśli segmenty linii rysowane przez tę funkcję tworzą zamkniętą postać, rysunek nie jest wypełniony.
CDC::PolyPolygon
Tworzy co najmniej dwa wielokąty wypełnione przy użyciu bieżącego trybu wypełniania wielokątowego.
BOOL PolyPolygon(
LPPOINT lpPoints,
LPINT lpPolyCounts,
int nCount);
Parametry
lpPoints
Wskazuje tablicę POINT
struktur lub CPoint
obiektów, które definiują wierzchołki wielokątów.
lpPolyCounts
Wskazuje tablicę liczb całkowitych, z których każda określa liczbę punktów w jednej z wielokątów w tablicy lpPoints
.
nCount
Liczba wpisów w tablicy lpPolyCounts
. Ta liczba określa liczbę wielokątów do narysowania. Ta wartość musi być co najmniej 2.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Wielokąty mogą być rozłączne lub nakładające się.
Każdy wielokąt określony w wywołaniu PolyPolygon
funkcji musi być zamknięty. W przeciwieństwie do wielokątów utworzonych przez Polygon
funkcję składową, wielokąty utworzone przez PolyPolygon
program nie są zamykane automatycznie.
Funkcja tworzy co najmniej dwa wielokąty. Aby utworzyć pojedynczy wielokąt, aplikacja powinna używać funkcji składowej Polygon
.
Bieżący tryb wypełniania wielokątnego można pobrać lub ustawić za pomocą funkcji składowych GetPolyFillMode
i SetPolyFillMode
.
CDC::PolyPolyline
Rysuje wiele serii połączonych segmentów linii.
BOOL PolyPolyline(
const POINT* lpPoints,
const DWORD* lpPolyPoints,
int nCount);
Parametry
lpPoints
Wskazuje tablicę struktur, które zawierają wierzchołki wielolinii. Linie wielokątne są określane kolejno.
lpPolyPoints
Wskazuje tablicę zmiennych określających liczbę punktów w lpPoints
tablicy dla odpowiedniego wielokąta. Każdy wpis musi być większy lub równy 2.
nCount
Określa łączną liczbę liczb w tablicy lpPolyPoints
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Segmenty linii są rysowane przy użyciu bieżącego pióra. Liczby utworzone przez segmenty nie są wypełnione. Bieżące położenie nie jest używane ani aktualizowane przez tę funkcję.
CDC::PtVisible
Określa, czy dany punkt znajduje się w regionie przycinania kontekstu urządzenia.
virtual BOOL PtVisible(
int x,
int y) const;
BOOL PtVisible(POINT point) const;
Parametry
x
Określa logiczną współrzędną x punktu.
y
Określa współrzędną logiczną punktu.
point
Określa punkt do zaewidencjonowania współrzędnych logicznych. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Nonzero, jeśli określony punkt znajduje się w regionie wycinki; w przeciwnym razie 0.
CDC::QueryAbort
Wywołuje funkcję abort zainstalowaną przez SetAbortProc
funkcję składową dla aplikacji drukowania i wysyła zapytanie o to, czy drukowanie powinno zostać zakończone.
BOOL QueryAbort() const;
Wartość zwracana
Wartość zwracana jest niezerowa, jeśli drukowanie powinno być kontynuowane lub jeśli nie ma procedury przerwania. Jeśli zadanie drukowania powinno zostać zakończone, jego wartość to 0. Wartość zwracana jest dostarczana przez funkcję abort.
CDC::RealizePalette
Mapuje wpisy z bieżącej palety logicznej na paletę systemowa.
UINT RealizePalette();
Wartość zwracana
Wskazuje, ile wpisów na palecie logicznej zostało zamapowanych na różne wpisy na palecie systemowej. Reprezentuje to liczbę wpisów, które ta funkcja została ponownie zamapowana, aby uwzględnić zmiany w palecie systemu od czasu ostatniego realizacji palety logicznej.
Uwagi
Paleta kolorów logicznych działa jako bufor między aplikacjami intensywnie korzystającymi z kolorów a systemem, umożliwiając aplikacji używanie jak największej liczby kolorów bez zakłócania wyświetlania własnych kolorów lub kolorów wyświetlanych przez inne okna.
Gdy okno ma fokus wejściowy i wywołuje RealizePalette
funkcję , system Windows zapewnia, że okno wyświetli wszystkie żądane kolory, maksymalnie maksymalną liczbę jednocześnie dostępną na ekranie. System Windows wyświetla również kolory, których nie można odnaleźć w palecie okna, dopasowując je do dostępnych kolorów.
Ponadto system Windows pasuje do kolorów żądanych przez nieaktywne okna, które nazywają funkcję tak ściśle, jak to możliwe dla dostępnych kolorów. Znacznie zmniejsza to niepożądane zmiany w kolorach wyświetlanych w nieaktywnych oknach.
CDC::Rectangle
Rysuje prostokąt przy użyciu bieżącego pióra.
BOOL Rectangle(
int x1,
int y1,
int x2,
int y2);
BOOL Rectangle(LPCRECT lpRect);
Parametry
x1
Określa współrzędną x lewego górnego rogu prostokąta (w jednostkach logicznych).
y1
Określa współrzędną y lewego górnego rogu prostokąta (w jednostkach logicznych).
x2
Określa współrzędną x prawego dolnego rogu prostokąta (w jednostkach logicznych).
y2
Określa współrzędną y prawego dolnego rogu prostokąta (w jednostkach logicznych).
lpRect
Określa prostokąt w jednostkach logicznych. Można przekazać CRect
obiekt lub wskaźnik do RECT
struktury dla tego parametru.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Wnętrze prostokąta jest wypełnione przy użyciu bieżącego pędzla.
Prostokąt rozciąga się w górę do, ale nie obejmuje współrzędnych prawej i dolnej. Oznacza to, że wysokość prostokąta wynosi y2
- y1
, a szerokość prostokąta to .x2
- x1
Zarówno szerokość, jak i wysokość prostokąta muszą być większe niż 2 jednostki i mniejsze niż 32 767 jednostek.
Przykład
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
Określa, czy jakakolwiek część danego prostokąta znajduje się w regionie wycinki kontekstu wyświetlania.
virtual BOOL RectVisible(LPCRECT lpRect) const;
Parametry
lpRect
RECT
Wskazuje strukturę lub CRect
obiekt zawierający współrzędne logiczne określonego prostokąta.
Wartość zwracana
Nonzero, jeśli jakakolwiek część danego prostokąta leży w regionie wycinkowania; w przeciwnym razie 0.
CDC::ReleaseAttribDC
Wywołaj tę funkcję składową, aby ustawić wartość m_hAttribDC
NULL.
virtual void ReleaseAttribDC();
Uwagi
Nie powoduje Detach
to wystąpienia. Tylko kontekst urządzenia wyjściowego CDC
jest dołączony do obiektu i można go tylko odłączyć.
CDC::ReleaseOutputDC
Wywołaj tę funkcję składową, aby ustawić m_hDC
element członkowski na NULL
.
virtual void ReleaseOutputDC();
Uwagi
Tej funkcji składowej nie można wywołać, gdy kontekst wyjściowego CDC
urządzenia jest dołączony do obiektu. Użyj funkcji składowej Detach
, aby odłączyć kontekst wyjściowego urządzenia.
CDC::ResetDC
Wywołaj tę funkcję składową, aby zaktualizować kontekst urządzenia opakowany przez CDC
obiekt.
BOOL ResetDC(const DEVMODE* lpDevMode);
Parametry
lpDevMode
Wskaźnik do struktury systemu Windows DEVMODE
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Kontekst urządzenia jest aktualizowany z informacji określonych w strukturze systemu Windows DEVMODE
. Ta funkcja składowa resetuje tylko kontekst urządzenia atrybutu.
Aplikacja zazwyczaj używa funkcji składowej ResetDC
, gdy okno przetwarza WM_DEVMODECHANGE
komunikat. Możesz również użyć tej funkcji składowej, aby zmienić orientację papieru lub pojemniki na papier podczas drukowania dokumentu.
Nie można użyć tej funkcji składowej, aby zmienić nazwę sterownika, nazwę urządzenia lub port wyjściowy. Gdy użytkownik zmieni połączenie z portem lub nazwę urządzenia, musisz usunąć oryginalny kontekst urządzenia i utworzyć nowy kontekst urządzenia przy użyciu nowych informacji.
Przed wywołaniem tej funkcji składowej należy upewnić się, że zaznaczono wszystkie obiekty (inne niż obiekty magazynowe), które zostały wybrane w kontekście urządzenia.
CDC::RestoreDC
Przywraca kontekst urządzenia do poprzedniego stanu zidentyfikowany przez nSavedDC
program .
virtual BOOL RestoreDC(int nSavedDC);
Parametry
nSavedDC
Określa kontekst urządzenia do przywrócenia. Może to być wartość zwracana przez poprzednie SaveDC
wywołanie funkcji. Jeśli nSavedDC
wartość to -1, zostanie przywrócony ostatnio zapisany kontekst urządzenia.
Wartość zwracana
Nonzero, jeśli określony kontekst został przywrócony; w przeciwnym razie 0.
Uwagi
RestoreDC
przywraca kontekst urządzenia przez wyświetlanie informacji o stanie poza stosem utworzonym przez wcześniejsze wywołania funkcji składowej SaveDC
.
Stos może zawierać informacje o stanie dla kilku kontekstów urządzenia. Jeśli kontekst określony przez nSavedDC
element nie znajduje się w górnej części stosu, RestoreDC
usuwa wszystkie informacje o stanie między kontekstem urządzenia określonym przez nSavedDC
i u góry stosu. Usunięte informacje zostaną utracone.
CDC::RoundRect
Rysuje prostokąt z zaokrąglonymi rogami przy użyciu bieżącego pióra.
BOOL RoundRect(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3);
BOOL RoundRect(
LPCRECT lpRect,
POINT point);
Parametry
x1
Określa współrzędną x lewego górnego rogu prostokąta (w jednostkach logicznych).
y1
Określa współrzędną y lewego górnego rogu prostokąta (w jednostkach logicznych).
x2
Określa współrzędną x prawego dolnego rogu prostokąta (w jednostkach logicznych).
y2
Określa współrzędną y prawego dolnego rogu prostokąta (w jednostkach logicznych).
x3
Określa szerokość wielokropka używanego do rysowania zaokrąglonych narożników (w jednostkach logicznych).
y3
Określa wysokość wielokropka używanego do rysowania zaokrąglonych narożników (w jednostkach logicznych).
lpRect
Określa prostokąt ograniczenia w jednostkach logicznych. Można przekazać CRect
obiekt lub wskaźnik do RECT
struktury dla tego parametru.
point
Współrzędna point
x określa szerokość wielokropka, aby narysować zaokrąglone rogi (w jednostkach logicznych). Współrzędna point
y określa wysokość wielokropka, aby narysować zaokrąglone rogi (w jednostkach logicznych). Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Wnętrze prostokąta jest wypełnione przy użyciu bieżącego pędzla.
Rysunek, który rysuje ta funkcja, rozciąga się do góry, ale nie zawiera prawej i dolnej współrzędnych. Oznacza to, że wysokość rysunku to y2
- y1
, a szerokość rysunku to .x2
- x1
Wysokość i szerokość prostokąta ograniczenia muszą być większe niż 2 jednostki i mniejsze niż 32 767 jednostek.
Przykład
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
Zapisuje bieżący stan kontekstu urządzenia, kopiując informacje o stanie (takie jak region wycinki, wybrane obiekty i tryb mapowania) do stosu kontekstu obsługiwanego przez system Windows.
virtual int SaveDC();
Wartość zwracana
Liczba całkowita identyfikująca zapisany kontekst urządzenia. Jeśli wystąpi błąd, jest to 0. Ta wartość zwracana może służyć do przywrócenia kontekstu urządzenia przez wywołanie metody RestoreDC
.
Uwagi
Zapisany kontekst urządzenia można później przywrócić przy użyciu polecenia RestoreDC
.
SaveDC
Można użyć dowolnej liczby razy, aby zapisać dowolną liczbę stanów kontekstu urządzenia.
CDC::ScaleViewportExt
Modyfikuje zakresy widoku względem bieżących wartości.
virtual CSize ScaleViewportExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Parametry
xNum
Określa ilość, o którą należy pomnożyć bieżący zakres x.
xDenom
Określa ilość, o którą należy podzielić wynik mnożenia bieżącego x-extent przez wartość parametru xNum
.
yNum
Określa ilość, o którą należy pomnożyć bieżący zakres y.
yDenom
Określa ilość, o którą należy podzielić wynik mnożenia bieżącego zakresu y przez wartość parametru yNum
.
Wartość zwracana
Poprzednie zakresy widoku (w jednostkach urządzeń) jako CSize
obiekt.
Uwagi
Formuły są zapisywane w następujący sposób:
xNewVE = ( xOldVE * xNum ) / xDenom
yNewVE = ( yOldVE * yNum ) / yDenom
Nowe zakresy widoku są obliczane przez pomnożenie bieżących zakresów przez dany licznik, a następnie podzielenie przez dany mianownik.
CDC::ScaleWindowExt
Modyfikuje zakresy okien względem bieżących wartości.
virtual CSize ScaleWindowExt(
int xNum,
int xDenom,
int yNum,
int yDenom);
Parametry
xNum
Określa ilość, o którą należy pomnożyć bieżący zakres x.
xDenom
Określa ilość, o którą należy podzielić wynik mnożenia bieżącego x-extent przez wartość parametru xNum
.
yNum
Określa ilość, o którą należy pomnożyć bieżący zakres y.
yDenom
Określa ilość, o którą należy podzielić wynik mnożenia bieżącego zakresu y przez wartość parametru yNum
.
Wartość zwracana
Poprzednie zakresy okna (w jednostkach logicznych) jako CSize
obiekt.
Uwagi
Formuły są zapisywane w następujący sposób:
xNewWE = ( xOldWE * xNum ) / xDenom
yNewWE = ( yOldWE * yNum ) / yDenom
Nowe zakresy okien są obliczane przez pomnożenie bieżących zakresów przez dany licznik, a następnie podzielenie przez dany mianownik.
CDC::ScrollDC
Przewija prostokąt bitów w poziomie i w pionie.
BOOL ScrollDC(
int dx,
int dy,
LPCRECT lpRectScroll,
LPCRECT lpRectClip,
CRgn* pRgnUpdate,
LPRECT lpRectUpdate);
Parametry
dx
Określa liczbę poziomych jednostek przewijania.
dy
Określa liczbę pionowych jednostek przewijania.
lpRectScroll
RECT
Wskazuje strukturę lub CRect
obiekt zawierający współrzędne prostokąta przewijania.
lpRectClip
RECT
Wskazuje strukturę lub CRect
obiekt, który zawiera współrzędne prostokąta wycinków. Gdy ten prostokąt jest mniejszy niż oryginalny wskazywany przez lpRectScroll
, przewijanie występuje tylko w mniejszym prostokątze.
pRgnUpdate
Identyfikuje region odkryty przez proces przewijania. Funkcja ScrollDC
definiuje ten region; nie musi być prostokątem.
lpRectUpdate
RECT
Wskazuje strukturę lub CRect
obiekt, który odbiera współrzędne prostokąta powiązanego z przewijającym regionem aktualizacji. Jest to największy prostokątny obszar, który wymaga przemalowania. Wartości w strukturze lub obiekcie, gdy funkcja zwraca, znajdują się we współrzędnych klienta, niezależnie od trybu mapowania dla danego kontekstu urządzenia.
Wartość zwracana
Niezerowe, jeśli jest wykonywane przewijanie; w przeciwnym razie 0.
Uwagi
Jeśli lpRectUpdate
jest to NULL
, system Windows nie oblicza prostokąta aktualizacji. Jeśli obie pRgnUpdate
wartości i lpRectUpdate
są NULL
, system Windows nie oblicza regionu aktualizacji. Jeśli pRgnUpdate
nie NULL
jest , system Windows zakłada, że zawiera prawidłowy wskaźnik do regionu odkrytego przez proces przewijania (zdefiniowany przez funkcję składową ScrollDC
). Region aktualizacji zwrócony w lpRectUpdate
pliku można przekazać do CWnd::InvalidateRgn
, jeśli jest to wymagane.
Aplikacja powinna używać ScrollWindow
funkcji składowej klasy CWnd
, gdy konieczne jest przewinięcie całego obszaru klienta okna. W przeciwnym razie należy użyć polecenia ScrollDC
.
CDC::SelectClipPath
Wybiera bieżącą ścieżkę jako region wycinków dla kontekstu urządzenia, łącząc nowy region z dowolnym istniejącym regionem wycinków przy użyciu określonego trybu.
BOOL SelectClipPath(int nMode);
Parametry
nMode
Określa sposób używania ścieżki. Dozwolone są następujące wartości:
RGN_AND
Nowy region wycinków obejmuje skrzyżowanie (nakładające się obszary) bieżącego regionu wycinkowania i bieżącą ścieżkę.RGN_COPY
Nowy region wycinków jest bieżącą ścieżką.RGN_DIFF
Nowy region wycinków zawiera obszary bieżącego regionu wycinkowania, a te z bieżącej ścieżki są wykluczone.RGN_OR
Nowy region wycinków obejmuje unię (połączone obszary) bieżącego regionu wycinkowania i bieżącą ścieżkę.RGN_XOR
Nowy region wycinków zawiera związek bieżącego regionu wycinkowania i bieżącej ścieżki, ale bez nakładających się obszarów.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Zidentyfikowany kontekst urządzenia musi zawierać zamkniętą ścieżkę.
CDC::SelectClipRgn
Wybiera dany region jako bieżący region wycinków dla kontekstu urządzenia.
int SelectClipRgn(CRgn* pRgn);
int SelectClipRgn(
CRgn* pRgn,
int nMode);
Parametry
pRgn
Identyfikuje region do wybrania.
W przypadku pierwszej wersji tej funkcji, jeśli ta wartość to
NULL
, zaznaczono cały obszar klienta, a dane wyjściowe nadal są przycinane do okna.W przypadku drugiej wersji tej funkcji ten uchwyt może być
NULL
tylko wtedy, gdyRGN_COPY
jest określony tryb.
nMode
Określa operację do wykonania. Musi to być jedna z następujących wartości:
RGN_AND
Nowy region wycinków łączy nakładające się obszary bieżącego regionu wycinków i region zidentyfikowany przezpRgn
element .RGN_COPY
Nowy region wycinków to kopia regionu zidentyfikowanego przezpRgn
element . Ta funkcja jest identyczna z pierwszą wersją programuSelectClipRgn
. Jeśli region zidentyfikowany przezpRgn
element toNULL
, nowy region wycinkowania stanie się domyślnym regionem wycinkowania (regionem o wartości null).RGN_DIFF
Nowy region wycinkowania łączy obszary bieżącego regionu wycinków z tymi obszarami wykluczonymi z regionu zidentyfikowanego przezpRgn
.RGN_OR
Nowy region wycinkowania łączy bieżący region wycinków i region zidentyfikowany przezpRgn
element .RGN_XOR
Nowy region wycinkowania łączy bieżący region wycinków i region zidentyfikowany przezpRgn
, ale wyklucza wszystkie nakładające się obszary.
Wartość zwracana
Typ regionu. Może to być dowolna z następujących wartości:
COMPLEXREGION
Nowy region wycinków ma nakładające się obramowania.ERROR
Kontekst urządzenia lub region nie jest prawidłowy.NULLREGION
Nowy region wycinków jest pusty.SIMPLEREGION
Nowy region wycinków nie ma nakładających się obramowań.
Uwagi
Używana jest tylko kopia wybranego regionu. Sam region można wybrać dla dowolnej liczby innych kontekstów urządzenia lub można go usunąć.
Funkcja zakłada, że współrzędne dla danego regionu są określone w jednostkach urządzeń. Niektóre urządzenia drukarki obsługują dane wyjściowe tekstu w wyższej rozdzielczości niż dane wyjściowe grafiki, aby zachować precyzję potrzebną do wyrażenia metryk tekstu. Te urządzenia zgłaszają jednostki urządzeń w wyższej rozdzielczości, czyli w jednostkach tekstowych. Następnie te urządzenia skalują współrzędne grafiki, tak aby kilka zgłoszonych jednostek urządzeń było mapowanych tylko na 1 jednostkę graficzną. Zawsze należy wywoływać SelectClipRgn
funkcję przy użyciu jednostek tekstowych.
Aplikacje, które muszą wykonywać skalowanie obiektów graficznych w GDI, mogą używać GETSCALINGFACTOR
ucieczki drukarki w celu określenia współczynnika skalowania. Ten współczynnik skalowania wpływa na wycinki. Jeśli region jest używany do tworzenia klipów graficznych, interfejs GDI dzieli współrzędne przez współczynnik skalowania. Jeśli region jest używany do wycinek tekstu, interfejs GDI nie powoduje dostosowania skalowania. Współczynnik skalowania 1 powoduje podzielenie współrzędnych przez 2; współczynnik skalowania 2 powoduje podzielenie współrzędnych przez 4; i tak dalej.
CDC::SelectObject
Wybiera obiekt w kontekście urządzenia.
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);
Parametry
pPen
Wskaźnik do obiektu do wybrania CPen
.
pBrush
Wskaźnik do obiektu do wybrania CBrush
.
pFont
Wskaźnik do obiektu do wybrania CFont
.
pBitmap
Wskaźnik do obiektu do wybrania CBitmap
.
pRgn
Wskaźnik do obiektu do wybrania CRgn
.
pObject
Wskaźnik do obiektu do wybrania CGdiObject
.
Wartość zwracana
Wskaźnik do zastępowanego obiektu. Jest to wskaźnik do obiektu jednej z klas pochodnych z CGdiObject
klasy , takich jak CPen
, w zależności od używanej wersji funkcji. Wartość zwracana jest NULL
w przypadku wystąpienia błędu. Ta funkcja może zwrócić wskaźnik do obiektu tymczasowego. Ten obiekt tymczasowy jest prawidłowy tylko podczas przetwarzania jednego komunikatu systemu Windows. Aby uzyskać więcej informacji, zobacz CGdiObject::FromHandle
.
Wersja funkcji składowej, która przyjmuje parametr regionu, wykonuje to samo zadanie co funkcja składowa SelectClipRgn
. Jego wartość zwracana może być dowolną z następujących wartości:
COMPLEXREGION
Nowy region wycinków ma nakładające się obramowania.ERROR
Kontekst urządzenia lub region nie jest prawidłowy.NULLREGION
Nowy region wycinków jest pusty.SIMPLEREGION
Nowy region wycinków nie ma nakładających się obramowań.
Uwagi
Klasa CDC
oferuje pięć wersji wyspecjalizowanych dla konkretnych rodzajów obiektów GDI, w tym pióra, pędzli, czcionek, map bitowych i regionów. Nowo wybrany obiekt zastępuje poprzedni obiekt tego samego typu. Jeśli na przykład pObject
ogólna wersja SelectObject
wskazuje CPen
obiekt, funkcja zastępuje bieżące pióro piórem określonym przez pObject
.
Aplikacja może wybrać mapę bitową tylko w kontekstach urządzenia pamięci i tylko w jednym kontekście urządzenia pamięci jednocześnie. Format mapy bitowej musi być monochromatyczny lub zgodny z kontekstem urządzenia; jeśli tak nie jest, SelectObject
zwraca błąd.
W przypadku systemu Windows 3.1 lub nowszego SelectObject
funkcja zwraca tę samą wartość, niezależnie od tego, czy jest używana w metapliku, czy nie. W poprzednich wersjach systemu Windows SelectObject
zwróciła wartość niezerową dla powodzenia i 0 dla niepowodzenia, gdy została użyta w metapliku.
CDC::SelectPalette
Wybiera paletę logiczną określoną przez pPalette
jako wybrany obiekt palety kontekstu urządzenia.
CPalette* SelectPalette(
CPalette* pPalette,
BOOL bForceBackground);
Parametry
pPalette
Identyfikuje paletę logiczną do wybrania. Ta paleta musi już zostać utworzona za pomocą funkcji CreatePalette
składowej CPalette
.
bForceBackground
Określa, czy paleta logiczna jest zmuszona do bycia paletą tła. Jeśli bForceBackground
jest niezerowa, wybrana paleta jest zawsze paletą tła, niezależnie od tego, czy okno ma fokus wejściowy. Jeśli bForceBackground
wartość to 0, a kontekst urządzenia jest dołączony do okna, paleta logiczna jest paletą pierwszego planu, gdy okno ma fokus wejściowy.
Wartość zwracana
Wskaźnik do obiektu identyfikującego paletę logiczną zastąpioną paletą CPalette
określoną przez pPalette
. Jeśli NULL
wystąpi błąd.
Uwagi
Nowa paleta staje się obiektem palety używanym przez interfejs GDI do sterowania kolorami wyświetlanymi w kontekście urządzenia i zastępuje poprzednią paletę.
Aplikacja może wybrać paletę logiczną w więcej niż jednym kontekście urządzenia. Jednak zmiany w palecie logicznej będą mieć wpływ na wszystkie konteksty urządzeń, dla których jest zaznaczona. Jeśli aplikacja wybierze paletę w więcej niż jednym kontekście urządzenia, konteksty urządzeń muszą należeć do tego samego urządzenia fizycznego.
CDC::SelectStockObject
CGdiObject
Wybiera obiekt odpowiadający jednemu ze wstępnie zdefiniowanych długopisów, pędzli lub czcionek.
virtual CGdiObject* SelectStockObject(int nIndex);
Parametry
nIndex
Określa żądany rodzaj obiektu stockowego. Może to być jedna z następujących wartości:
BLACK_BRUSH
szczotka.DKGRAY_BRUSH
Ciemnoszary szczotka.GRAY_BRUSH
Szara szczotka.HOLLOW_BRUSH
Pusta szczotka.LTGRAY_BRUSH
Jasnoszary szczotka.NULL_BRUSH
Szczotka o wartości null.WHITE_BRUSH
Biały szczotka.BLACK_PEN
długopis.NULL_PEN
Pióro o wartości null.WHITE_PEN
Białe pióro.ANSI_FIXED_FONT
Stała czcionka systemu ANSI.ANSI_VAR_FONT
Czcionka systemu zmiennych ANSI.DEVICE_DEFAULT_FONT
Czcionka zależna od urządzenia.OEM_FIXED_FONT
Czcionka stała zależna od producenta OEM.SYSTEM_FONT
Czcionka systemowa. Domyślnie system Windows używa czcionki systemowej do rysowania menu, kontrolek okna dialogowego i innego tekstu. Najlepiej jednak nie polegać naSYSTEM_FONT
uzyskaniu czcionki używanej przez okna dialogowe i okna. Zamiast tego użyjSystemParametersInfo
funkcji z parametremSPI_GETNONCLIENTMETRICS
, aby pobrać bieżącą czcionkę.SystemParametersInfo
Uwzględnia bieżący motyw i udostępnia informacje o czcionkach dla podpisów, menu i okien dialogowych komunikatów.SYSTEM_FIXED_FONT
Czcionka systemu o stałej szerokości używana w systemie Windows przed wersją 3.0. Ten obiekt jest dostępny w celu zachowania zgodności z wcześniejszymi wersjami systemu Windows.DEFAULT_PALETTE
Domyślna paleta kolorów. Ta paleta składa się z 20 kolorów statycznych na palecie systemowej.
Wartość zwracana
Wskaźnik do CGdiObject
obiektu, który został zastąpiony, jeśli funkcja zakończy się pomyślnie. Rzeczywisty obiekt wskazywany jest obiektem CPen
, CBrush
lub CFont
. Jeśli wywołanie nie powiedzie się, zwracana wartość ma wartość NULL.
CDC::SetAbortProc
Instaluje procedurę przerwania zadania drukowania.
int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
Parametry
lpfn
Wskaźnik do funkcji przerwania, aby zainstalować jako procedurę przerwania. Aby uzyskać więcej informacji na temat funkcji wywołania zwrotnego, zobacz Callback Function for CDC::SetAbortProc
.
Wartość zwracana
Określa wynik SetAbortProc
funkcji. Niektóre z poniższych wartości są bardziej prawdopodobne niż inne, ale wszystkie są możliwe.
SP_ERROR
Błąd ogólny.SP_OUTOFDISK
Za mało miejsca na dysku jest obecnie dostępne na potrzeby buforowania i nie będzie dostępne żadne miejsce.SP_OUTOFMEMORY
Za mało pamięci jest dostępna do buforowania.SP_USERABORT
Użytkownik zakończył zadanie za pośrednictwem Menedżera wydruku.
Uwagi
Jeśli aplikacja ma zezwolić na anulowanie zadania drukowania podczas buforowania, musi ustawić funkcję przerwania przed uruchomieniem zadania drukowania z funkcją składową StartDoc
. Menedżer wydruku wywołuje funkcję abort podczas buforowania, aby umożliwić aplikacji anulowanie zadania drukowania lub przetwarzanie warunków braku miejsca na dysku. Jeśli nie ustawiono funkcji przerwania, zadanie drukowania zakończy się niepowodzeniem, jeśli nie ma wystarczającej ilości miejsca na dysku do buforowania.
Funkcje programu Microsoft Visual C++ upraszczają tworzenie funkcji wywołania zwrotnego przekazanej do elementu SetAbortProc
. Adres przekazywany do funkcji składowej EnumObjects
jest wskaźnikiem do funkcji wyeksportowanej za pomocą __declspec(dllexport)
polecenia i z konwencją __stdcall
wywoływania.
Nie trzeba również eksportować nazwy funkcji w EXPORTS
instrukcji w pliku definicji modułu aplikacji. Zamiast tego można użyć EXPORT
modyfikatora funkcji, jak w
BOOL CALLBACK EXPORT AFunction( HDC, int );
aby spowodować, że kompilator emituje odpowiedni rekord eksportu dla eksportu według nazwy bez aliasu. To działa w przypadku większości potrzeb. W niektórych specjalnych przypadkach, takich jak eksportowanie funkcji przez porządkowe lub alias eksportu, nadal trzeba użyć EXPORTS
instrukcji w pliku definicji modułu.
Interfejsy rejestracji wywołania zwrotnego są teraz bezpieczne dla typu (należy przekazać wskaźnik funkcji wskazujący odpowiedni rodzaj funkcji dla określonego wywołania zwrotnego).
Wszystkie funkcje wywołania zwrotnego muszą wychwycić wyjątki programu Microsoft Foundation przed powrotem do systemu Windows, ponieważ wyjątki nie mogą być zgłaszane przez granice wywołania zwrotnego. Aby uzyskać więcej informacji na temat wyjątków, zobacz artykuł Wyjątki.
CDC::SetArcDirection
Ustawia kierunek rysunku, który ma być używany dla funkcji łuku i prostokąta.
int SetArcDirection(int nArcDirection);
Parametry
nArcDirection
Określa nowy kierunek łuku. Ten parametr może być jedną z następujących wartości:
AD_COUNTERCLOCKWISE
Rysunki rysowane w kierunku odwrotnym od ruchu wskazówek zegara.AD_CLOCKWISE
Rysunki rysowane zgodnie z ruchem wskazówek zegara.
Wartość zwracana
Określa stary kierunek łuku, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Domyślnym kierunkiem jest kierunek odwrotny. Funkcja SetArcDirection
określa kierunek, w którym rysują następujące funkcje:
Arc | Kołowy |
---|---|
ArcTo |
Rectangle |
Chord |
RoundRect |
Ellipse |
CDC::SetAttribDC
Wywołaj tę funkcję, aby ustawić kontekst urządzenia atrybutu . m_hAttribDC
virtual void SetAttribDC(HDC hDC);
Parametry
hDC
Kontekst urządzenia z systemem Windows.
Uwagi
Ta funkcja składowa nie dołącza kontekstu urządzenia do CDC
obiektu. Tylko kontekst urządzenia wyjściowego CDC
jest dołączony do obiektu.
CDC::SetBkColor
Ustawia bieżący kolor tła na określony kolor.
virtual COLORREF SetBkColor(COLORREF crColor);
Parametry
crColor
Określa nowy kolor tła.
Wartość zwracana
Poprzedni kolor tła jako wartość koloru RGB. Jeśli wystąpi błąd, zwracana wartość jest 0x80000000.
Uwagi
Jeśli tryb tła to OPAQUE
, system używa koloru tła, aby wypełnić luki w styliowanych liniach, luki między kreskowanymi liniami w pędzlach i tłem w komórkach znaków. System używa również koloru tła podczas konwertowania map bitowych między kontekstami kolorów i monochromatycznych urządzeń.
Jeśli urządzenie nie może wyświetlić określonego koloru, system ustawi kolor tła na najbliższy kolor fizyczny.
CDC::SetBkMode
Ustawia tryb tła.
int SetBkMode(int nBkMode);
Parametry
nBkMode
Określa tryb, który ma zostać ustawiony. Ten parametr może być jedną z następujących wartości:
OPAQUE
Tło jest wypełnione bieżącym kolorem tła przed rysowanym tekstem, szczotką kreskowaną lub piórem. Jest to domyślny tryb tła.TRANSPARENT
Tło nie jest zmieniane przed rysunkiem.
Wartość zwracana
Poprzedni tryb tła.
Uwagi
Tryb tła określa, czy system usuwa istniejące kolory tła na powierzchni rysunku przed rysowaniem tekstu, wyklutych pędzli lub jakiegokolwiek stylu pióra, który nie jest linią ciągłą.
Przykład
Zobacz przykład dla elementu CWnd::OnCtlColor
.
CDC::SetBoundsRect
Steruje akumulacją informacji o ograniczeniach prostokąta dla określonego kontekstu urządzenia.
UINT SetBoundsRect(
LPCRECT lpRectBounds,
UINT flags);
Parametry
lpRectBounds
RECT
Wskazuje strukturę lub CRect
obiekt używany do ustawiania prostokąta ograniczenia. Wymiary prostokąta są podane we współrzędnych logicznych. Ten parametr może mieć wartość NULL
.
flags
Określa sposób łączenia nowego prostokąta z skumulowanym prostokątem. Ten parametr może być kombinacją następujących wartości:
DCB_ACCUMULATE
Dodaj prostokąt określony przezlpRectBounds
do prostokąta ograniczenia (przy użyciu operacji łączenia prostokąta).DCB_DISABLE
Wyłącz akumulację granic.DCB_ENABLE
Włącz akumulację granic. (Ustawienie domyślne dla akumulacja granic jest wyłączone).
Wartość zwracana
Bieżący stan prostokąta ograniczenia, jeśli funkcja zakończy się pomyślnie. Na przykład flags
wartość zwracana może być kombinacją DCB_
wartości:
DCB_ACCUMULATE
Prostokąt ograniczenia nie jest pusty. Ta wartość będzie zawsze ustawiana.DCB_DISABLE
Akumulacja granic jest wyłączona.DCB_ENABLE
Akumulacja granic jest włączona.
Uwagi
System Windows może obsługiwać prostokąt ograniczenia dla wszystkich operacji rysunku. Ten prostokąt może być odpytywane i resetowane przez aplikację. Granice rysunku są przydatne do unieważniania pamięci podręcznych map bitowych.
CDC::SetBrushOrg
Określa źródło, które GDI przypisze do następnego pędzla wybranego przez aplikację w kontekście urządzenia.
CPoint SetBrushOrg(
int x,
int y);
CPoint SetBrushOrg(POINT point);
Parametry
x
Określa współrzędną x (w jednostkach urządzenia) nowego źródła. Ta wartość musi należeć do zakresu od 0 do 7.
y
Określa współrzędną y (w jednostkach urządzenia) nowego źródła. Ta wartość musi należeć do zakresu od 0 do 7.
point
Określa współrzędne x-i y nowego źródła. Każda wartość musi znajdować się w zakresie od 0 do 7. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Poprzednie źródło pędzla w jednostkach urządzenia.
Uwagi
Domyślne współrzędne źródła pędzla to (0, 0). Aby zmienić początek pędzla, wywołaj UnrealizeObject
funkcję dla CBrush
obiektu, wywołaj metodę , a następnie wywołaj SetBrushOrg
SelectObject
funkcję składową, aby wybrać szczotkę w kontekście urządzenia.
Nie należy używać SetBrushOrg
z obiektami stockowymi CBrush
.
CDC::SetColorAdjustment
Ustawia wartości korekty kolorów dla kontekstu urządzenia przy użyciu określonych wartości.
BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
Parametry
lpColorAdjust
Wskazuje strukturę danych zawierającą COLORADJUSTMENT
wartości korekty koloru.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Wartości korekty koloru służą do dostosowywania koloru wejściowego źródłowej mapy bitowej dla wywołań CDC::StretchBlt
funkcji składowej po HALFTONE
ustawieniu trybu.
CDC::SetDCBrushColor
Ustawia kolor pędzla bieżącego kontekstu urządzenia (DC) na określoną wartość koloru.
COLORREF SetDCBrushColor(COLORREF crColor);
Parametry
crColor
Określa nowy kolor pędzla.
Wartość zwracana
Jeśli funkcja powiedzie się, zwracana wartość określa poprzedni kolor pędzla COLORREF
kontrolera domeny jako wartość.
Jeśli funkcja zakończy się niepowodzeniem, zwracana wartość to CLR_INVALID
.
Uwagi
Ta metoda emuluje funkcjonalność funkcji SetDCBrushColor
, zgodnie z opisem w zestawie Windows SDK.
CDC::SetDCPenColor
Ustawia bieżący kolor pióra kontekstu urządzenia (DC) na określoną wartość koloru.
COLORREF SetDCPenColor(COLORREF crColor);
Parametry
crColor
Określa nowy kolor pióra.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa korzysta z funkcji SetDCPenColor
Win32, zgodnie z opisem w zestawie Windows SDK.
CDC::SetGraphicsMode
Ustawia tryb graficzny dla określonego kontekstu urządzenia.
int SetGraphicsMode(int iMode);
Parametry
iMode
Określa tryb graficzny. Aby uzyskać listę wartości, które mogą przyjmować ten parametr, zobacz SetGraphicsMode
.
Wartość zwracana
Zwraca stary tryb graficzny w przypadku powodzenia.
Zwraca wartość 0 w przypadku błędu. Aby uzyskać rozszerzone informacje o błędzie, wywołaj metodę GetLastError
.
Uwagi
Ta metoda opakowuje funkcję SetGraphicsMode
GDI systemu Windows .
CDC::SetLayout
Wywołaj tę funkcję składową, aby zmienić układ tekstu i grafiki kontekstu urządzenia na od prawej do lewej, standardowy układ kultur, takich jak arabski i hebrajski.
DWORD SetLayout(DWORD dwLayout);
Parametry
dwLayout
Układ kontekstu urządzenia i flagi kontrolki mapy bitowej. Może to być kombinacja następujących wartości.
Wartość | Znaczenie |
---|---|
LAYOUT_BITMAPORIENTATIONPRESERVED |
Wyłącza wszelkie odbicia dla wywołań do CDC::BitBlt i CDC::StretchBlt . |
LAYOUT_RTL |
Ustawia domyślny układ poziomy w prawo do lewej. |
LAYOUT_LTR |
Ustawia układ domyślny na lewy do prawej. |
Wartość zwracana
W przypadku powodzenia poprzedni układ kontekstu urządzenia.
Jeśli nie powiedzie się, GDI_ERROR
. Aby uzyskać rozszerzone informacje o błędzie, wywołaj metodę GetLastError
.
Uwagi
Zwykle nie można wywołać SetLayout
okna. Zamiast tego kontrolujesz układ od prawej do lewej w oknie, ustawiając rozszerzone style okna, takie jak WS_EX_RTLREADING
. Kontekst urządzenia, taki jak drukarka lub metaplik, nie dziedziczy tego układu. Jedynym sposobem ustawienia kontekstu urządzenia dla układu od prawej do lewej jest wywołanie metody SetLayout
.
Jeśli wywołasz metodę SetLayout(LAYOUT_RTL)
, SetLayout
automatycznie zmieni tryb mapowania na MM_ISOTROPIC
. W rezultacie kolejne wywołanie GetMapMode
metody zwróci MM_ISOTROPIC
wartość zamiast MM_TEXT
.
W niektórych przypadkach, takich jak wiele map bitowych, możesz zachować układ od lewej do prawej. W takich przypadkach renderuj obraz przez wywołanie BitBlt
metody lub StretchBlt
, a następnie ustaw flagę kontrolki mapy bitowej na dwLayout
wartość LAYOUT_BITMAPORIENTATIONPRESERVED
.
Po zmianie układu flagą LAYOUT_RTL
flagi flagi zwykle określające prawą lub lewą stronę są odwrócone. Aby uniknąć nieporozumień, możesz zdefiniować alternatywne nazwy flag standardowych. Aby uzyskać listę sugerowanych nazw flag alternatywnych, zobacz SetLayout
w zestawie Windows SDK.
CDC::SetMapMode
Ustawia tryb mapowania.
virtual int SetMapMode(int nMapMode);
Parametry
nMapMode
Określa nowy tryb mapowania. Może to być dowolna z następujących wartości:
MM_ANISOTROPIC
Jednostki logiczne są konwertowane na dowolne jednostki z dowolnie skalowanymi osiami. Ustawienie trybuMM_ANISOTROPIC
mapowania na nie powoduje zmiany bieżących ustawień okna ani widoku. Aby zmienić jednostki, orientację i skalowanie, wywołajSetWindowExt
funkcje składowe iSetViewportExt
.MM_HIENGLISH
Każda jednostka logiczna jest konwertowana na 0,001 cala. Wartość dodatnia x jest po prawej stronie; dodatnia y jest w górę.MM_HIMETRIC
Każda jednostka logiczna jest konwertowana na 0,01 milimetra. Wartość dodatnia x jest po prawej stronie; dodatnia y jest w górę.MM_ISOTROPIC
Jednostki logiczne są konwertowane na dowolne jednostki o równomiernie skalowanych osiach; oznacza to, że 1 jednostka wzdłuż osi x jest równa 1 jednostce wzdłuż osi y.SetWindowExt
Użyj funkcji składowych iSetViewportExt
, aby określić żądane jednostki i orientację osi. GDI wprowadza korekty w razie potrzeby, aby zapewnić, że jednostki x i y pozostają takie same.MM_LOENGLISH
Każda jednostka logiczna jest konwertowana na 0,01 cala. Wartość dodatnia x jest po prawej stronie; dodatnia y jest w górę.MM_LOMETRIC
Każda jednostka logiczna jest konwertowana na 0,1 milimetra. Wartość dodatnia x jest po prawej stronie; dodatnia y jest w górę.MM_TEXT
Każda jednostka logiczna jest konwertowana na 1 piksel urządzenia. Wartość dodatnia x jest po prawej stronie; dodatni y jest w dół.MM_TWIPS
Każda jednostka logiczna jest konwertowana na 1/20 punktu. (Ponieważ punkt wynosi 1/72 cala, twip to 1/1440 cala). Wartość dodatnia x jest po prawej stronie; dodatnia y jest w górę.
Wartość zwracana
Poprzedni tryb mapowania.
Uwagi
Tryb mapowania definiuje jednostkę miary używaną do konwertowania jednostek logicznych na jednostki urządzeń; definiuje również orientację osi x i y urządzenia. Funkcja GDI używa trybu mapowania do konwertowania współrzędnych logicznych na odpowiednie współrzędne urządzenia. Tryb MM_TEXT
umożliwia aplikacjom pracę w pikselach urządzenia, gdzie 1 jednostka jest równa 1 pikselowi. Rozmiar fizyczny piksela różni się od urządzenia do urządzenia.
Tryby MM_HIENGLISH
, , MM_HIMETRIC
MM_LOENGLISH
, MM_LOMETRIC
i MM_TWIPS
są przydatne w przypadku aplikacji, które muszą rysować w fizycznie znaczących jednostkach (takich jak cala lub milimetry). Tryb MM_ISOTROPIC
zapewnia współczynnik proporcji 1:1, co jest przydatne, gdy ważne jest zachowanie dokładnego kształtu obrazu. Tryb MM_ANISOTROPIC
umożliwia niezależne dostosowywanie współrzędnych x-i y.
Uwaga
Jeśli wywołasz SetLayout
metodę zmiany kontrolera domeny (kontekstu urządzenia) na układ od prawej do lewej, SetLayout
automatycznie zmieni tryb mapowania na MM_ISOTROPIC
.
Przykład
Zobacz przykład dla elementu CView::OnPrepareDC
.
CDC::SetMapperFlags
Zmienia metodę używaną przez maper czcionek podczas konwertowania czcionki logicznej na czcionkę fizyczną.
DWORD SetMapperFlags(DWORD dwFlag);
Parametry
dwFlag
Określa, czy maper czcionek próbuje dopasować wysokość i szerokość czcionki do urządzenia. Gdy ta wartość to ASPECT_FILTERING
, maper wybiera tylko czcionki, których x-aspekt i y dokładnie pasują do tych z określonego urządzenia.
Wartość zwracana
Poprzednia wartość flagi mapowania czcionek.
Uwagi
Aplikacja może użyć SetMapperFlags
polecenia , aby maper czcionki próbował wybrać tylko czcionkę fizyczną, która dokładnie odpowiada współczynnikowi proporcji określonego urządzenia.
Aplikacja, która używa tylko czcionek rasterowych, może używać SetMapperFlags
funkcji, aby upewnić się, że czcionka wybrana przez maper czcionek jest atrakcyjna i czytelna na określonym urządzeniu. Aplikacje korzystające ze skalowalnych czcionek (TrueType) zwykle nie używają elementu SetMapperFlags
.
Jeśli żadna czcionka fizyczna nie ma proporcji zgodnej ze specyfikacją czcionki logicznej, interfejs GDI wybiera nowy współczynnik proporcji i wybiera czcionkę zgodną z tym nowym współczynnikiem proporcji.
CDC::SetMiterLimit
Ustawia limit długości sprzężeń miter dla kontekstu urządzenia.
BOOL SetMiterLimit(float fMiterLimit);
Parametry
fMiterLimit
Określa nowy limit miter dla kontekstu urządzenia.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Długość miter jest definiowana jako odległość od przecięcia ścian linii na środku sprzężenia do przecięcia ścian linii na zewnątrz sprzężenia. Limit miter jest maksymalny dozwolony stosunek długości miter do szerokości linii. Domyślny limit miter to 10.0.
CDC::SetOutputDC
Wywołaj tę funkcję składową, aby ustawić kontekst wyjściowego urządzenia, m_hDC
.
virtual void SetOutputDC(HDC hDC);
Parametry
hDC
Kontekst urządzenia z systemem Windows.
Uwagi
Tę funkcję składową można wywołać tylko wtedy, gdy kontekst urządzenia nie został dołączony do CDC
obiektu. Ta funkcja składowa ustawia m_hDC
, ale nie dołącza kontekstu urządzenia do CDC
obiektu.
CDC::SetPixel
Ustawia piksel w punkcie określonym w najbliższym przybliżeniu koloru określonego przez crColor
.
COLORREF SetPixel(
int x,
int y,
COLORREF crColor);
COLORREF SetPixel(
POINT point,
COLORREF crColor);
Parametry
x
Określa logiczną współrzędną x punktu do ustawienia.
y
Określa współrzędną logiczną punktu do ustawienia.
crColor
COLORREF
Wartość RGB określająca kolor używany do malowania punktu. Aby uzyskać opis tej wartości, zobacz COLORREF
w zestawie Windows SDK.
point
Określa współrzędne logiczne x-i y punktu do ustawienia. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Wartość RGB dla koloru, który punkt jest malowany. Ta wartość może być inna niż określona przez crColor
, jeśli jest używane przybliżenie tego koloru. Jeśli funkcja nie powiedzie się (jeśli punkt znajduje się poza regionem wycinkowania), zwracana wartość to -1.
Uwagi
Punkt musi znajdować się w regionie wycinki. Jeśli punkt nie znajduje się w regionie wycinki, funkcja nie wykonuje żadnych czynności.
Nie wszystkie urządzenia obsługują SetPixel
funkcję. Aby określić, czy urządzenie obsługuje SetPixel
funkcję , wywołaj GetDeviceCaps
funkcję składową za pomocą indeksu RASTERCAPS
i sprawdź wartość zwracaną flagi RC_BITBLT
.
CDC::SetPixelV
Ustawia piksel na określonych współrzędnych do najbliższego przybliżenia określonego koloru.
BOOL SetPixelV(
int x,
int y,
COLORREF crColor);
BOOL SetPixelV(
POINT point,
COLORREF crColor);
Parametry
x
Określa współrzędną x w jednostkach logicznych punktu do ustawienia.
y
Określa współrzędną y w jednostkach logicznych punktu do ustawienia.
crColor
Określa kolor, który ma być używany do malowania punktu.
point
Określa współrzędne logiczne x-i y punktu do ustawienia. Można przekazać POINT
strukturę danych lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Punkt musi znajdować się zarówno w regionie wycinki, jak i widocznej części powierzchni urządzenia. Nie wszystkie urządzenia obsługują funkcję składową. Aby uzyskać więcej informacji, zobacz RC_BITBLT
możliwości w funkcji składowej CDC::GetDeviceCaps
. SetPixelV
jest szybszy niż SetPixel
dlatego, że nie musi zwracać wartości koloru punktu malowanego.
CDC::SetPolyFillMode
Ustawia tryb wypełniania wielokątowego.
int SetPolyFillMode(int nPolyFillMode);
Parametry
nPolyFillMode
Określa nowy tryb wypełniania. Ta wartość może mieć ALTERNATE
wartość lub WINDING
. Domyślnym trybem ustawionym w systemie Windows jest ALTERNATE
.
Wartość zwracana
Poprzedni tryb wypełniania, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Gdy tryb wypełniania wielokątowego to ALTERNATE
, system wypełnia obszar między nieparzystymi i parzystymi bokami wielokąta na każdej linii skanowania. Oznacza to, że system wypełnia obszar między pierwszą i drugą stroną, między trzecią i czwartą stroną itd. Ten tryb jest domyślny.
Gdy tryb wypełniania wielokątnego to WINDING
, system używa kierunku, w którym rysunek został narysowany, aby określić, czy wypełnić obszar. Każdy segment linii w wielokącie jest rysowany w kierunku wskazówek zegara lub w kierunku odwrotnym. Za każdym razem, gdy wyimaginowana linia wyciągnięta z otaczającego obszaru na zewnątrz figury przechodzi przez segment linii zegarowej, liczba jest zwiększana. Gdy linia przechodzi przez segment linii odwrotnej do ruchu wskazówek zegara, liczba jest dekrementowana. Obszar jest wypełniony, jeśli liczba jest niezerowa, gdy linia osiągnie wartość zewnętrzną rysunku.
CDC::SetROP2
Ustawia bieżący tryb rysunku.
int SetROP2(int nDrawMode);
Parametry
nDrawMode
Określa nowy tryb rysunku. Może to być dowolna z następujących wartości:
R2_BLACK
Piksel jest zawsze.R2_WHITE
Piksel jest zawsze biały.R2_NOP
Piksel pozostaje niezmieniony.R2_NOT
Piksel jest odwrotnością koloru ekranu.R2_COPYPEN
Piksel jest kolorem pióra.R2_NOTCOPYPEN
Piksel jest odwrotnością koloru pióra.R2_MERGEPENNOT
Piksel jest kombinacją koloru pióra i odwrotności koloru ekranu (końcowy piksel = (~
piksel ekranu)|
pióra).R2_MASKPENNOT
Pixel to kombinacja kolorów wspólnych zarówno dla pióra, jak i odwrotności ekranu (końcowy piksel = (~
piksel ekranu)&
pióra).R2_MERGENOTPEN
Pixel to kombinacja koloru ekranu i odwrotność koloru pióra (piksel końcowy = (~
pióro)|
piksel ekranu).R2_MASKNOTPEN
Pixel to kombinacja kolorów wspólnych zarówno dla ekranu, jak i odwrotności pióra (piksel końcowy = (~
pióro)&
pikseli ekranu).R2_MERGEPEN
Pixel to kombinacja koloru pióra i koloru ekranu (piksel końcowy = piksel pióra|
).R2_NOTMERGEPEN
Piksel jest odwrotnościąR2_MERGEPEN
koloru (końcowy piksel =~
(piksel ekranu pióra|
)).R2_MASKPEN
Pixel to kombinacja kolorów wspólnych zarówno dla pióra, jak i ekranu (piksel końcowy = piksel pióra&
).R2_NOTMASKPEN
Piksel jest odwrotnościąR2_MASKPEN
koloru (końcowy piksel =~
(piksel ekranu pióra&
)).R2_XORPEN
Pixel to kombinacja kolorów, które znajdują się w piórze lub na ekranie, ale nie w obu (piksel końcowy = piksel pióra^
).R2_NOTXORPEN
Piksel jest odwrotnościąR2_XORPEN
koloru (końcowy piksel =~
(piksel ekranu pióra^
)).
Wartość zwracana
Poprzedni tryb rysunku.
Może to być dowolna z wartości podanych w zestawie Windows SDK.
Uwagi
Tryb rysunku określa, w jaki sposób kolory pióra i wnętrza wypełnionych obiektów są łączone z kolorem już na powierzchni wyświetlacza.
Tryb rysunku dotyczy tylko urządzeń rasterowych; nie ma zastosowania do urządzeń wektorowych. Tryby rysunku to binarne kody operacji raster-operacje reprezentujące wszystkie możliwe kombinacje logiczne dwóch zmiennych przy użyciu operatorów &
binarnych , |
i ^
(wyłączny |
) oraz operacji ~
jednoargumentowej .
CDC::SetStretchBltMode
Ustawia tryb rozciągania mapy bitowej dla funkcji składowej StretchBlt
.
int SetStretchBltMode(int nStretchMode);
Parametry
nStretchMode
Określa tryb rozciągania. Może to być dowolna z następujących wartości:
Wartość | Opis |
---|---|
BLACKONWHITE |
Wykonuje operację logiczną & przy użyciu wartości kolorów dla wyeliminowanych i istniejących pikseli. Jeśli mapa bitowa jest monochromatyczną mapą bitową, ten tryb zachowuje czarne piksele kosztem białych pikseli. |
COLORONCOLOR |
Usuwa piksele. Ten tryb usuwa wszystkie wyeliminowane linie pikseli bez próby zachowania informacji. |
HALFTONE |
Mapuje piksele ze źródłowego prostokąta na bloki pikseli w prostokątze docelowym. Średni kolor bloku docelowego pikseli przybliża kolor pikseli źródłowych. |
Po ustawieniu HALFTONE trybu rozciągania aplikacja musi wywołać funkcję SetBrushOrgEx Win32, aby ustawić źródło pędzla. Jeśli tego nie zrobisz, nastąpi niezgodność pędzla. |
|
STRETCH_ANDSCANS |
Windows 95/98: taki sam jak BLACKONWHITE |
STRETCH_DELETESCANS |
Windows 95/98: taki sam jak COLORONCOLOR |
STRETCH_HALFTONE |
Windows 95/98: taki sam jak HALFTONE . |
STRETCH_ORSCANS |
Windows 95/98: taki sam jak WHITEONBLACK |
WHITEONBLACK |
Wykonuje operację logiczną | przy użyciu wartości kolorów dla wyeliminowanych i istniejących pikseli. Jeśli mapa bitowa jest monochromatyczną mapą bitową, ten tryb zachowuje białe piksele kosztem czarnych pikseli. |
Wartość zwracana
Poprzedni tryb rozciągania. Może to być STRETCH_ANDSCANS
, STRETCH_DELETESCANS
lub STRETCH_ORSCANS
.
Uwagi
Tryb rozciągania mapy bitowej definiuje sposób usuwania informacji z map bitowych skompresowanych przy użyciu funkcji .
Tryby BLACKONWHITE
(STRETCH_ANDSCANS
) i WHITEONBLACK
(STRETCH_ORSCANS
) są zwykle używane do zachowywania pikseli pierwszego planu w monochromatycznych mapach bitowych. Tryb COLORONCOLOR
(STRETCH_DELETESCANS
) jest zwykle używany do zachowania koloru w kolorach map bitowych.
Tryb HALFTONE
wymaga większej ilości przetwarzania obrazu źródłowego niż pozostałe trzy tryby; jest wolniejszy niż pozostałe, ale generuje obrazy o wyższej jakości. Ponadto należy wywołać metodę HALFTONE
po ustawieniu trybu, SetBrushOrgEx
aby uniknąć niezgodności pędzla.
Więcej trybów rozciągania może być również dostępnych w zależności od możliwości sterownika urządzenia.
CDC::SetTextAlign
Ustawia flagi wyrównania tekstu.
UINT SetTextAlign(UINT nFlags);
Parametry
nFlags
Określa flagi wyrównania tekstu. Flagi określają relację między punktem a prostokątem powiązanym z tekstem. Punkt może być bieżącą pozycją lub współrzędnymi określonymi przez funkcję text-output. Prostokąt, który wiąże tekst, jest definiowany przez sąsiadujące komórki znaków w ciągu tekstowym. Parametr nFlags
może być co najmniej jedną flagą z następujących trzech kategorii. Wybierz tylko jedną flagę z każdej kategorii. Pierwsza kategoria ma wpływ na wyrównanie tekstu w kierunku x:
TA_CENTER
Wyrównuje punkt do środka poziomego prostokąta ograniczenia.TA_LEFT
Wyrównuje punkt z lewą stroną prostokąta ograniczenia. Ustawienie domyślne.TA_RIGHT
Wyrównuje punkt z prawą stroną prostokąta ograniczenia.
Druga kategoria ma wpływ na wyrównanie tekstu w kierunku y:
TA_BASELINE
Wyrównuje punkt do linii bazowej wybranej czcionki.TA_BOTTOM
Wyrównuje punkt do dołu prostokąta ograniczenia.TA_TOP
Wyrównuje punkt z góry prostokąta ograniczenia. Ustawienie domyślne.
Trzecia kategoria określa, czy bieżące położenie jest aktualizowane po zapisaniu tekstu:
TA_NOUPDATECP
Nie aktualizuje bieżącego położenia po każdym wywołaniu funkcji text-output. Ustawienie domyślne.TA_UPDATECP
Aktualizuje bieżącą pozycję x po każdym wywołaniu funkcji text-output. Nowe położenie znajduje się po prawej stronie prostokąta ograniczenia tekstu. Po ustawieniu tej flagi współrzędne określone w wywołaniach funkcji składowejTextOut
są ignorowane.
Wartość zwracana
Poprzednie ustawienie wyrównania tekstu, jeśli powiedzie się. Bajt o niskiej kolejności zawiera ustawienie poziome, a bajt o wysokiej kolejności zawiera ustawienie pionowe; w przeciwnym razie 0.
Uwagi
Funkcje TextOut
składowe i ExtTextOut
używają tych flag podczas pozycjonowania ciągu tekstu na ekranie lub urządzeniu. Flagi określają relację między określonym punktem a prostokątem, który jest powiązany z tekstem. Współrzędne tego punktu są przekazywane jako parametry do funkcji składowej TextOut
. Prostokąt, który wiąże tekst, jest tworzony przez sąsiadujące komórki znaków w ciągu tekstowym.
CDC::SetTextCharacterExtra
Ustawia odstęp międzycharakterowy.
int SetTextCharacterExtra(int nCharExtra);
Parametry
nCharExtra
Określa ilość dodatkowego miejsca (w jednostkach logicznych) do dodania do każdego znaku. Jeśli bieżący tryb mapowania nie MM_TEXT
jest , nCharExtra
jest przekształcany i zaokrąglany do najbliższego piksela.
Wartość zwracana
Ilość poprzedniego odstępu międzycharakterowego.
Uwagi
Interfejs GDI dodaje ten odstęp do każdego znaku, w tym znaki podziału, gdy zapisuje wiersz tekstu w kontekście urządzenia. Wartość domyślna dla odstępu międzycharakterowego wynosi 0.
CDC::SetTextColor
Ustawia kolor tekstu na określony kolor.
virtual COLORREF SetTextColor(COLORREF crColor);
Parametry
crColor
Określa kolor tekstu jako wartość koloru RGB.
Wartość zwracana
Wartość RGB dla poprzedniego koloru tekstu.
Uwagi
System używa tego koloru tekstu podczas pisania tekstu w tym kontekście urządzenia, a także podczas konwertowania map bitowych między kontekstami kolorów i monochromatycznych urządzeń.
Jeśli urządzenie nie może reprezentować określonego koloru, system ustawia kolor tekstu na najbliższy kolor fizyczny. Kolor tła znaku jest określany przez funkcje składowe SetBkColor
i SetBkMode
.
Przykład
Zobacz przykład dla elementu CWnd::OnCtlColor
.
CDC::SetTextJustification
Dodaje spację do znaków przerwania w ciągu.
int SetTextJustification(
int nBreakExtra,
int nBreakCount);
Parametry
nBreakExtra
Określa łączną ilość dodatkowego miejsca do dodania do wiersza tekstu (w jednostkach logicznych). Jeśli bieżący tryb mapowania nie MM_TEXT
jest , wartość podana przez ten parametr jest konwertowana na bieżący tryb mapowania i zaokrąglana do najbliższej jednostki urządzenia.
nBreakCount
Określa liczbę znaków przerwania w wierszu.
Wartość zwracana
Jeden, jeśli funkcja zakończy się pomyślnie; w przeciwnym razie 0.
Uwagi
Aplikacja może używać funkcji składowych GetTextMetrics
do pobierania znaku przerwania czcionki.
Po wywołaniu funkcji składowej SetTextJustification
wywołanie funkcji text-output (na przykład TextOut
) rozdziela określoną dodatkową spację równomiernie między określoną liczbę znaków przerwania. Znak przerwania jest zwykle znakiem spacji (ASCII 32), ale może być zdefiniowany przez czcionkę jako inny znak.
Funkcja składowa jest zwykle używana z funkcją GetTextExtent
SetTextJustification
. GetTextExtent
oblicza szerokość danego wiersza przed wyrównaniem. Aplikacja może określić ilość miejsca do określenia w parametrze nBreakExtra
przez odjęcie wartości zwracanej przez GetTextExtent
szerokość ciągu po wyrównaniu.
Funkcja SetTextJustification
może służyć do wyrównania wiersza zawierającego wiele przebiegów w różnych czcionkach. W takim przypadku wiersz musi zostać utworzony fragmentarycznie przez wyrównywanie i zapisywanie każdego przebiegu oddzielnie.
Ponieważ błędy zaokrąglania mogą wystąpić podczas wyrównania, system utrzymuje uruchomiony termin błędu, który definiuje bieżący błąd. Podczas wyrównywania wiersza zawierającego wiele przebiegów GetTextExtent
automatycznie używa tego terminu błędu podczas obliczania zakresu następnego uruchomienia. Dzięki temu funkcja text-output umożliwia połączenie błędu z nowym uruchomieniem.
Po wyrównaniu każdego wiersza ten termin błędu musi zostać wyczyszczone, aby zapobiec włączeniu go do następnego wiersza. Termin można wyczyścić, wywołując polecenie SetTextJustification
z ustawioną wartością nBreakExtra
0.
CDC::SetViewportExt
Ustawia zakresy x-i y obszaru widoku kontekstu urządzenia.
virtual CSize SetViewportExt(
int cx,
int cy);
CSize SetViewportExt(SIZE size);
Parametry
cx
Określa x-extent widoku (w jednostkach urządzeń).
cy
Określa zakres y widoku (w jednostkach urządzeń).
size
Określa zakresy x i y widoku (w jednostkach urządzeń).
Wartość zwracana
Poprzednie zakresy widoku jako CSize
obiekt. W przypadku wystąpienia błędu współrzędne x i y zwracanego CSize
obiektu są ustawione na 0.
Uwagi
Okno widoku wraz z oknem kontekstu urządzenia definiuje sposób mapowania punktów GDI w logicznym systemie współrzędnych na punkty w układzie współrzędnych rzeczywistego urządzenia. Innymi słowy, definiują one sposób, w jaki GDI konwertuje współrzędne logiczne na współrzędne urządzenia.
Po ustawieniu następujących trybów mapowania wywołania na SetWindowExt
i SetViewportExt
są ignorowane:
MM_HIENGLISH |
MM_LOMETRIC |
---|---|
MM_HIMETRIC |
MM_TEXT |
MM_LOENGLISH |
MM_TWIPS |
Po MM_ISOTROPIC
ustawieniu trybu aplikacja musi wywołać SetWindowExt
funkcję składową, zanim wywoła SetViewportExt
funkcję .
Przykład
Zobacz przykład dla elementu CView::OnPrepareDC
.
CDC::SetViewportOrg
Ustawia źródło widoku kontekstu urządzenia.
virtual CPoint SetViewportOrg(
int x,
int y);
CPoint SetViewportOrg(POINT point);
Parametry
x
Określa współrzędną x (w jednostkach urządzeń) źródła widoku. Wartość musi należeć do zakresu układu współrzędnych urządzenia.
y
Określa współrzędną y (w jednostkach urządzeń) źródła widoku. Wartość musi należeć do zakresu układu współrzędnych urządzenia.
point
Określa początek widoku. Wartości muszą należeć do zakresu układu współrzędnych urządzenia. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Poprzednie źródło widoku (we współrzędnych CPoint
urządzenia) jako obiekt.
Uwagi
Okno widoku wraz z oknem kontekstu urządzenia definiuje sposób mapowania punktów GDI w logicznym systemie współrzędnych na punkty w układzie współrzędnych rzeczywistego urządzenia. Innymi słowy, definiują one sposób, w jaki GDI konwertuje współrzędne logiczne na współrzędne urządzenia.
Źródło widoku oznacza punkt w systemie współrzędnych urządzenia, do którego GDI mapuje źródło okna, punkt w układzie współrzędnych logicznych określonych przez funkcję składową SetWindowOrg
. Interfejs GDI mapuje wszystkie inne punkty, wykonując ten sam proces wymagany do mapowania źródła okna na źródło widoku. Na przykład wszystkie punkty w okręgu wokół punktu początkowego okna będą znajdować się w okręgu wokół punktu początkowego widoku. Podobnie wszystkie punkty w wierszu przechodzącym przez źródło okna będą w wierszu przechodzącym przez źródło widoku.
Przykład
Zobacz przykład dla elementu CView::OnPrepareDC
.
CDC::SetWindowExt
Ustawia zakresy x i y okna skojarzonego z kontekstem urządzenia.
virtual CSize SetWindowExt(
int cx,
int cy);
CSize SetWindowExt(SIZE size);
Parametry
cx
Określa x-extent (w jednostkach logicznych) okna.
cy
Określa zakres y (w jednostkach logicznych) okna.
size
Określa zakresy x i y (w jednostkach logicznych) okna.
Wartość zwracana
Poprzednie zakresy okna (w jednostkach logicznych) jako CSize
obiekt. Jeśli wystąpi błąd, współrzędne x i y zwróconego CSize
obiektu są ustawione na 0.
Uwagi
Okno wraz z widokiem kontekstu urządzenia definiuje sposób mapowania interfejsu GDI w logicznym systemie współrzędnych do punktów w systemie współrzędnych urządzenia.
Po ustawieniu następujących trybów mapowania wywołania funkcji SetWindowExt
i SetViewportExt
są ignorowane:
MM_HIENGLISH
MM_HIMETRIC
MM_LOENGLISH
MM_LOMETRIC
MM_TEXT
MM_TWIPS
Po MM_ISOTROPIC
ustawieniu trybu aplikacja musi wywołać SetWindowExt
funkcję składową przed wywołaniem metody SetViewportExt
.
Przykład
Zobacz przykład dla elementu CView::OnPrepareDC
.
CDC::SetWindowOrg
Ustawia źródło okna kontekstu urządzenia.
CPoint SetWindowOrg(
int x,
int y);
CPoint SetWindowOrg(POINT point);
Parametry
x
Określa logiczną współrzędną x nowego źródła okna.
y
Określa logiczną współrzędną y nowego źródła okna.
point
Określa współrzędne logiczne nowego źródła okna. Można przekazać POINT
strukturę lub obiekt dla tego parametru CPoint
.
Wartość zwracana
Poprzednie źródło okna jako CPoint
obiekt.
Uwagi
Okno wraz z widokiem kontekstu urządzenia definiuje sposób mapowania interfejsu GDI w logicznym systemie współrzędnych do punktów w systemie współrzędnych urządzenia.
Źródło okna oznacza punkt w logicznym systemie współrzędnych, z którego GDI mapuje źródło widoku, punkt w układzie współrzędnych urządzenia określonym przez SetWindowOrg
funkcję. Interfejs GDI mapuje wszystkie inne punkty, wykonując ten sam proces wymagany do mapowania źródła okna na źródło widoku. Na przykład wszystkie punkty w okręgu wokół punktu początkowego okna będą znajdować się w okręgu wokół punktu początkowego widoku. Podobnie wszystkie punkty w wierszu przechodzącym przez źródło okna będą w wierszu przechodzącym przez źródło widoku.
CDC::SetWorldTransform
Ustawia dwuwymiarową transformację liniową między przestrzenią światową a przestrzenią strony dla określonego kontekstu urządzenia. Za pomocą tej transformacji można skalować, obracać, ścinać lub tłumaczyć dane wyjściowe grafiki.
BOOL SetWorldTransform(const XFORM& rXform);
Parametry
rXform
Odwołanie do XFORM
struktury zawierającej dane przekształcenia.
Wartość zwracana
Zwraca wartość niezerową dla powodzenia.
Zwraca wartość 0 w przypadku błędu.
Aby uzyskać rozszerzone informacje o błędzie, wywołaj metodę GetLastError
.
Uwagi
Ta metoda opakowuje funkcję SetWorldTransform
GDI systemu Windows .
CDC::StartDoc
Informuje sterownik urządzenia o uruchomieniu nowego zadania drukowania i że wszystkie kolejne StartPage
EndPage
wywołania powinny być buforowane w ramach tego samego zadania do momentu EndDoc
wystąpienia wywołania.
int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);
Parametry
lpDocInfo
Wskazuje strukturę zawierającą DOCINFO
nazwę pliku dokumentu i nazwę pliku wyjściowego.
lpszDocName
Wskaźnik do ciągu zawierającego nazwę pliku dokumentu.
Wartość zwracana
Jeśli funkcja powiedzie się, zwracana wartość jest większa niż zero. Ta wartość jest identyfikatorem zadania drukowania dla dokumentu.
Jeśli funkcja zakończy się niepowodzeniem, zwracana wartość jest mniejsza lub równa zero.
Uwagi
Dzięki temu dokumenty dłuższe niż jedna strona nie będą przeplatane z innymi zadaniami.
W przypadku systemu Windows w wersji 3.1 lub nowszej ta funkcja zastępuje ucieczkę STARTDOC
drukarki. Użycie tej funkcji zapewnia, że dokumenty zawierające więcej niż jedną stronę nie są przeplatane innymi zadaniami drukowania.
StartDoc
nie należy używać wewnątrz metaplików.
Przykład
Ten fragment kodu pobiera drukarkę domyślną, otwiera zadanie drukowania i buforuje jedną stronę z komunikatem "Hello, World!" na nim. Ponieważ tekst drukowany przez ten kod nie jest skalowany do jednostek logicznych drukarki, tekst wyjściowy może znajdować się w tak małych literach, że wynik jest nieczytelny. Funkcje skalowania CDC, takie jak SetMapMode
, SetViewportOrg
i SetWindowExt
, mogą służyć do naprawiania skalowania.
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
Wywołaj tę funkcję składową, aby przygotować sterownik drukarki do odbierania danych.
int StartPage();
Wartość zwracana
Większe niż lub równe 0, jeśli funkcja zakończy się pomyślnie, lub wartość ujemna, jeśli wystąpił błąd.
Uwagi
StartPage
NEWFRAME
zastępuje i BANDINFO
ucieka.
Aby zapoznać się z omówieniem sekwencji wywołań drukowania, zobacz funkcję składową StartDoc
.
System wyłącza ResetDC
funkcję składową między wywołaniami do StartPage
i EndPage
.
Przykład
Zobacz przykład dla elementu CDC::StartDoc
.
CDC::StretchBlt
Kopiuje mapę bitową z prostokąta źródłowego do prostokąta docelowego, w razie potrzeby rozciągając ją lub zmniejszając, aby dopasować ją do wymiarów prostokąta docelowego.
BOOL StretchBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
DWORD dwRop);
Parametry
x
Określa współrzędną x (w jednostkach logicznych) lewego górnego rogu prostokąta docelowego.
y
Określa współrzędną y (w jednostkach logicznych) lewego górnego rogu prostokąta docelowego.
nWidth
Określa szerokość (w jednostkach logicznych) prostokąta docelowego.
nHeight
Określa wysokość (w jednostkach logicznych) prostokąta docelowego.
pSrcDC
Określa kontekst urządzenia źródłowego.
xSrc
Określa współrzędną x (w jednostkach logicznych) lewego górnego rogu prostokąta źródłowego.
ySrc
Określa współrzędną y (w jednostkach logicznych) lewego górnego rogu prostokąta źródłowego.
nSrcWidth
Określa szerokość (w jednostkach logicznych) prostokąta źródłowego.
nSrcHeight
Określa wysokość (w jednostkach logicznych) prostokąta źródłowego.
dwRop
Określa operację rastrową, która ma być wykonana. Kody operacji rastrowych definiują, jak interfejs GDI łączy kolory w operacjach wyjściowych, które obejmują aktualny pędzel, możliwą źródłową mapę bitową i docelową mapę bitową. Ten parametr może przybierać jedną z następujących wartości:
BLACKNESS
Zamienia wszystkie dane wyjściowe na.DSTINVERT
Odwraca docelową mapę bitową.MERGECOPY
Łączy wzorzec i mapę bitową źródłową przy użyciu operatora Logiczne AND .MERGEPAINT
Łączy odwróconą mapę bitową źródłową z docelową mapą bitową przy użyciu operatora logicznego OR .NOTSRCCOPY
Kopiuje odwróconą mapę bitową źródłową do miejsca docelowego.NOTSRCERASE
Odwraca wynik łączenia docelowych i źródłowych map bitowych przy użyciu operatora logicznego OR .PATCOPY
Kopiuje wzorzec do docelowej mapy bitowej.PATINVERT
Łączy docelową mapę bitową ze wzorcem przy użyciu operatora XOR logicznego.PATPAINT
Łączy odwróconą mapę bitową źródłową ze wzorcem przy użyciu operatora logicznego OR . Łączy wynik tej operacji z docelową mapą bitową przy użyciu operatora logicznego OR .SRCAND
Łączy piksele miejsc docelowych i źródłowych map bitowych przy użyciu operatora Boolean AND .SRCCOPY
Kopiuje mapę bitową źródłową do docelowej mapy bitowej.SRCERASE
Odwraca docelową mapę bitową i łączy wynik ze źródłową mapą bitową przy użyciu operatora Boolean AND .SRCINVERT
Łączy piksele miejsc docelowych i źródłowych map bitowych przy użyciu operatora logicznego XOR .SRCPAINT
Łączy piksele miejsc docelowych i źródłowych map bitowych przy użyciu operatora logicznego OR .WHITENESS
Zmienia wszystkie dane wyjściowe na białe.
Wartość zwracana
Różne od zera, jeśli mapa bitowa jest rysowana; w przeciwnym razie 0.
Uwagi
Funkcja używa trybu rozciągania kontekstu urządzenia docelowego (ustawionego przez SetStretchBltMode
), aby określić, jak rozciągnąć lub skompresować mapę bitową.
Funkcja StretchBlt
przenosi mapę bitową z urządzenia źródłowego podanego przez pSrcDC
urządzenie docelowe reprezentowane przez obiekt kontekstu urządzenia, którego wywoływana jest funkcja składowa. Parametry xSrc
, ySrc
, nSrcWidth
i nSrcHeight
definiują lewy górny róg i wymiary prostokąta źródłowego. Parametry x
, y
, nWidth
i nHeight
dają lewy górny róg i wymiary prostokąta docelowego. Operacja rasterowa określona przez dwRop
definiuje sposób łączenia źródłowej mapy bitowej i bitów już na urządzeniu docelowym.
Funkcja StretchBlt
tworzy obraz dublowania mapy bitowej, jeśli oznaki parametrów nSrcWidth
i i nSrcHeight
nWidth
nHeight
różnią się. Jeśli nSrcWidth
i nWidth
mają różne znaki, funkcja tworzy lustrzany obraz mapy bitowej wzdłuż osi x. Jeśli nSrcHeight
i nHeight
mają różne znaki, funkcja tworzy lustrzany obraz mapy bitowej wzdłuż osi y.
Funkcja StretchBlt
rozciąga lub kompresuje źródłową mapę bitową w pamięci, a następnie kopiuje wynik do miejsca docelowego. Jeśli wzorzec ma zostać scalony z wynikiem, nie zostanie on scalony do momentu skopiowania rozproszonej źródłowej mapy bitowej do miejsca docelowego. Jeśli jest używana szczotka, jest to zaznaczona szczotka w kontekście urządzenia docelowego. Współrzędne miejsca przeznaczenia są przekształcane zgodnie z kontekstem urządzenia docelowego; współrzędne źródła są przekształcane zgodnie z kontekstem urządzenia źródłowego.
Jeśli mapa bitowa miejsca docelowego, źródła i wzorca nie ma tego samego formatu koloru, StretchBlt
konwertuje mapy bitowe źródła i wzorca, aby pasowały do docelowych map bitowych. Kolory pierwszego planu i tła kontekstu urządzenia docelowego są używane do konwersji.
Jeśli StretchBlt
musi przekonwertować monochromatyczną mapę bitową na kolor, ustawia białe bity (1) na kolor tła i czarne bity (0) na kolor pierwszego planu. Aby przekonwertować kolor na monochromatyczny, ustawia piksele, które odpowiadają kolorowi tła, na biały (1), a wszystkie inne piksele ustawia na czarny (0). Używane są kolory pierwszego planu i tła kontekstu urządzenia z kolorem.
Nie wszystkie urządzenia obsługują StretchBlt
funkcję. Aby określić, czy urządzenie obsługuje StretchBlt
funkcję , wywołaj GetDeviceCaps
funkcję składową za pomocą indeksu RASTERCAPS
i sprawdź wartość zwracaną flagi RC_STRETCHBLT
.
CDC::StrokeAndFillPath
Zamyka wszystkie otwarte figury w ścieżce, uderza kontur ścieżki przy użyciu bieżącego pióra i wypełnia jego wnętrze za pomocą bieżącego pędzla.
BOOL StrokeAndFillPath();
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Kontekst urządzenia musi zawierać zamkniętą ścieżkę. Funkcja StrokeAndFillPath
składowa ma taki sam efekt, jak zamykanie wszystkich otwartych figur w ścieżce, a także nakładanie i wypełnianie ścieżki oddzielnie, z tą różnicą, że wypełniony region nie nakłada się na region pociągnięty, nawet jeśli pióro jest szerokie.
CDC::StrokePath
Renderuje określoną ścieżkę przy użyciu bieżącego pióra.
BOOL StrokePath();
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Kontekst urządzenia musi zawierać zamkniętą ścieżkę.
CDC::TabbedTextOut
Wywołaj tę funkcję składową, aby napisać ciąg znaków w określonej lokalizacji, rozwijając karty do wartości określonych w tablicy pozycji tabulatora.
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);
Parametry
x
Określa logiczną współrzędną x punktu początkowego ciągu.
y
Określa logiczną współrzędną y punktu początkowego ciągu.
lpszString
Wskazuje ciąg znaków do narysowania. Wskaźnik można przekazać do tablicy znaków lub obiektu dla tego parametru CString
.
nCount
Określa długość ciągu wskazywanego przez lpszString
.
nTabPositions
Określa liczbę wartości w tablicy pozycji tabulatora.
lpnTabStopPositions
Wskazuje tablicę zawierającą pozycje tab-stop (w jednostkach logicznych). Tabulatory muszą być sortowane w kolejności rosnącej; najmniejsza wartość x powinna być pierwszym elementem w tablicy.
nTabOrigin
Określa współrzędną x pozycji początkowej, z której są rozwinięte karty (w jednostkach logicznych).
str
CString
Obiekt zawierający określone znaki.
Wartość zwracana
Wymiary ciągu (w jednostkach logicznych) jako CSize
obiekt.
Uwagi
Tekst jest zapisywany w aktualnie wybranej czcionki. Jeśli nTabPositions
ma wartość 0 i lpnTabStopPositions
ma NULL
wartość , karty są rozszerzane do ośmiu razy średniego szerokości znaku.
Jeśli nTabPositions
wartość to 1, tabulatory są oddzielone odległością określoną przez pierwszą wartość w tablicy lpnTabStopPositions
. Jeśli tablica lpnTabStopPositions
zawiera więcej niż jedną wartość, dla każdej wartości w tablicy ustawiono zatrzymanie tabulatora, maksymalnie liczbę określoną przez nTabPositions
wartość . Parametr nTabOrigin
umożliwia aplikacji wywołanie TabbedTextOut
funkcji kilka razy dla pojedynczego wiersza. Jeśli aplikacja wywołuje funkcję więcej niż raz z zestawem nTabOrigin
do tej samej wartości za każdym razem, funkcja rozszerza wszystkie karty względem pozycji określonej przez nTabOrigin
.
Domyślnie bieżące położenie nie jest używane ani aktualizowane przez funkcję. Jeśli aplikacja musi zaktualizować bieżące położenie podczas wywoływania funkcji, aplikacja może wywołać SetTextAlign
funkcję składową z ustawioną wartością nFlags
TA_UPDATECP
. Po ustawieniu tej flagi system Windows ignoruje x
parametry i y
w kolejnych wywołaniach metody TabbedTextOut
, używając bieżącego położenia.
CDC::TextOut
Zapisuje ciąg znaków w określonej lokalizacji przy użyciu aktualnie wybranej czcionki.
virtual BOOL TextOut(
int x,
int y,
LPCTSTR lpszString,
int nCount);
BOOL TextOut(
int x,
int y,
const CString& str);
Parametry
x
Określa logiczną współrzędną x punktu początkowego tekstu.
y
Określa logiczną współrzędną y punktu początkowego tekstu.
lpszString
Wskazuje ciąg znaków do rysowania.
nCount
Określa liczbę znaków w ciągu.
str
CString
Obiekt zawierający znaki do narysowania.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Początki znaków są w lewym górnym rogu komórki znaków. Domyślnie bieżące położenie nie jest używane ani aktualizowane przez funkcję.
Jeśli aplikacja musi zaktualizować bieżące położenie podczas wywoływania TextOut
metody , aplikacja może wywołać SetTextAlign
funkcję składową z ustawioną wartością nFlags
TA_UPDATECP
. Po ustawieniu tej flagi system Windows ignoruje x
parametry i y
w kolejnych wywołaniach metody TextOut
, używając bieżącego położenia.
Przykład
Zobacz przykład dla elementu CDC::BeginPath
.
CDC::TransparentBlt
Wywołaj tę funkcję składową, aby przenieść bitowy blok danych kolorów, który odpowiada prostokątowi pikseli z określonego kontekstu urządzenia źródłowego do kontekstu urządzenia docelowego.
BOOL TransparentBlt(
int xDest,
int yDest,
int nDestWidth,
int nDestHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
UINT clrTransparent);
Parametry
xDest
Określa współrzędną x w jednostkach logicznych lewego górnego rogu prostokąta docelowego.
yDest
Określa współrzędną y w jednostkach logicznych lewego górnego rogu prostokąta docelowego.
nDestWidth
Określa szerokość w jednostkach logicznych prostokąta docelowego.
nDestHeight
Określa wysokość w jednostkach logicznych prostokąta docelowego.
pSrcDC
Wskaźnik do kontekstu urządzenia źródłowego.
xSrc
Określa współrzędną x w jednostkach logicznych prostokąta źródłowego.
ySrc
Określa współrzędną y w jednostkach logicznych prostokąta źródłowego.
nSrcWidth
Określa szerokość w jednostkach logicznych prostokąta źródłowego.
nSrcHeight
Określa wysokość w jednostkach logicznych prostokąta źródłowego.
clrTransparent
Kolor RGB w źródłowej mapie bitowej do traktowania jako przezroczysty.
Wartość zwracana
TRUE
w przypadku powodzenia; w przeciwnym razie FALSE
.
Uwagi
TransparentBlt
umożliwia przejrzystość; oznacza to, że kolor RGB wskazywany przez clrTransparent
element jest renderowany przezroczysty dla transferu.
Aby uzyskać więcej informacji, zobacz TransparentBlt
w zestawie Windows SDK.
CDC::UpdateColors
Aktualizuje obszar klienta kontekstu urządzenia, dopasowując bieżące kolory w obszarze klienta do palety systemowej na podstawie pikseli.
void UpdateColors();
Uwagi
Nieaktywne okno z zrealizowaną paletą logiczną może wywołać UpdateColors
alternatywę do ponownego wyrysowania obszaru klienta po zmianie palety systemu.
Aby uzyskać więcej informacji na temat używania palet kolorów, zobacz UpdateColors
w zestawie Windows SDK.
Funkcja UpdateColors
składowa zwykle aktualizuje obszar klienta szybciej niż ponowne rysowanie obszaru. Jednak ponieważ funkcja wykonuje tłumaczenie kolorów na podstawie koloru każdego piksela przed zmianą palety systemowej, każde wywołanie tej funkcji powoduje utratę pewnej dokładności kolorów.
CDC::WidenPath
Ponownie definiuje bieżącą ścieżkę jako obszar, który będzie malowany, jeśli ścieżka została pociągnięta przy użyciu pióra aktualnie wybranego w kontekście urządzenia.
BOOL WidenPath();
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Ta funkcja zakończyła się powodzeniem tylko wtedy, gdy bieżący pióro jest piórem geometrycznym utworzonym przez drugą wersję funkcji składowej lub jeśli pióro jest tworzone z pierwszą wersją CreatePen
CreatePen
i ma szerokość w jednostkach urządzenia o wartości większej niż 1. Kontekst urządzenia musi zawierać zamkniętą ścieżkę. Wszystkie krzywe Bzier w ścieżce są konwertowane na sekwencje linii prostych zbliżających się do rozszerzonych krzywych. W związku z tym żadne krzywe Bzier nie pozostają w ścieżce po WidenPath
wywołaniu.
Zobacz też
CObject
Klasa
Wykres hierarchii
CPaintDC
Klasa
CWindowDC
Klasa
CClientDC
Klasa
CMetaFileDC
Klasa