CDC Klasa

Definiuje klasę obiektów kontekstu urządzenia.

Składnia

class CDC : public CObject

Członkowie

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 Arcfunkcji , 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 FromHandleprogram . 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_hDCwartość , 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 Mapy wpisów palety w bieżącej palecie logicznej do palety systemu.
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_hAttribDCelement , kontekst urządzenia atrybutu.
CDC::ReleaseOutputDC Zwalnia m_hDC, kontekst wyjściowego urządzenia.
CDC::ResetDC m_hAttribDC Aktualizacje kontekstu urządzenia.
CDC::RestoreDC Przywraca kontekst urządzenia do poprzedniego stanu zapisanego za pomocą SaveDCpolecenia .
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_hDCkontekst 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 Aktualizacje 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_hDCm_hAttribDC, które podczas tworzenia CDC obiektu odwołują się do tego samego urządzenia. CDCkieruje 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 CDCprogramu , zobacz Konteksty urządzeń.

Hierarchia dziedziczenia

CObject

CDC

Wymagania

Nagłówka: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 lub NEXTBAND 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 CDClub 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::Arcfunkcji , z tą różnicą, że bieżące położenie jest aktualizowane. Punkty ( x1, y1) i ( x2y2) 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_hDCkontekście urządzenia wyjściowego, jak i w m_hAttribDCkontekś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 BeginPathmetodę , 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 AfxRegisterWndClassglobalnej .

Interfejs GDI przekształca i nWidthnHeight, 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 czarny. 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 ( x2x1y2) określają odpowiednio lewe i dolne narożniki prostokąta ograniczającego wielokropek, który jest częścią akordu. Parametry ( , y3) i ( x4x3y4) 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 pDCprogram .

BOOL CreateCompatibleDC(CDC* pDC);

Parametry

pDC
Wskaźnik do kontekstu urządzenia. Jeśli pDC jest NULLto , 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::GetDeviceCapsskł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.HDEVMODE 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ą CreateDCmetody , CreateIClub 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 FromHandleprogram , ale nie niszczy uchwytów kontekstu urządzenia ( hDCs) 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_LOMETRIClub 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 DrawDragRectpolecenia 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 DrawDragRectparametr powinien lpRectLast mieć NULLwartość .

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 DrawEscapemetodę , 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ójstanowy

    • DFCS_BUTTONCHECK Pole wyboru

    • DFCS_BUTTONPUSH Przycisk

    • DFCS_BUTTONRADIO Przycisk radiowy

    • DFCS_BUTTONRADIOIMAGE Obraz przycisku radiowego (obraz bez kwadratu wymaga obrazu)

    • DFCS_BUTTONRADIOMASK Maska przycisku radiowego (nonsquare wymaga maski)

  • DFC_CAPTION

    • DFCS_CAPTIONCLOSE Przycisk Zamknij

    • DFCS_CAPTIONHELP Przycisk Pomoc

    • DFCS_CAPTIONMAX Przycisk Maksymalizuj

    • DFCS_CAPTIONMIN Przycisk Minimalizuj

    • DFCS_CAPTIONRESTORE Przycisk Przywróć

  • DFC_MENU

    • DFCS_MENUARROW Strzałka podmenu

    • DFCS_MENUBULLET Punktor

    • DFCS_MENUCHECK Znacznik wyboru

  • DFC_SCROLL

    • DFCS_SCROLLCOMBOBOX Pasek przewijania pola kombi

    • DFCS_SCROLLDOWN Strzałka w dół paska przewijania

    • DFCS_SCROLLLEFT Strzałka w lewo paska przewijania

    • DFCS_SCROLLRIGHT Strzałka w prawo paska przewijania

    • DFCS_SCROLLSIZEGRIP Uchwyt rozmiaru w prawym dolnym rogu okna

    • DFCS_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::LoadStandardIconlub 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_NORMALobrazu 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_CALCRECTWartości , , DT_EXTERNALLEADINGDT_INTERNAL, DT_NOCLIPi 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_CALCRECTWartości , , DT_EXTERNALLEADINGDT_INTERNAL, DT_NOCLIPi 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, , y1x2i y2lub 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 NEWFRAMEmetody 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 MakeProcInstancesystemu 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 - x1bezwzglę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 przez crColor. Ten styl jest identyczny z wypełnieniem wykonywanym przez FloodFill.

  • FLOODFILLSURFACE Obszar wypełnienia jest definiowany przez kolor określony przez crColor. 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 FLOODFILLBORDERwartość , 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ą ExtFloodFilltechnologię 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 i GetBkColor ).

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 NULLwartość , 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 ExtTextOutmetody , aplikacja może wywołać CDC funkcję SetTextAlign składową z ustawioną wartością nFlagsTA_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 , CreatePatternBrushi , CreateSolidBrushlub 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. FillRectporównuje wartości elementów top, , bottomlefti 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, CreateSolidBrushlub pobranych przez GetStockObjectprogram .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 FillSolidRectelementu 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 FrameRectelement .

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. W celu uzyskania więcej informacji, zobacz następujący temat: 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 NULLwartość .

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 NULLwartość .

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 GetDCPenColorWin32, 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 dwTableparametrów , dwOffseti 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ć NULLwartości , nawet jeśli wartość jest określona dla nFormatparametru 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ę GetGraphicsModeGDI 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ą:

Diagram that shows how a dithered pen stroke is composed.

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_hDCurzą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_hDCkontekstu 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 lpnTabStopPositionswartość . 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 NULLwartość , 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 nTabPositionswartość .

CDC::GetOutputTextExtent

Wywołaj tę funkcję składową, aby użyć kontekstu urządzenia wyjściowego, m_hDCi 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 GetOutputTextExtentelement .

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 programie lpPoints rozpoczyna rozłączny rysunek.

  • PT_LINETO Określa, że poprzedni punkt i odpowiedni punkt w lpPoints to punkty końcowe wiersza.

  • PT_BEZIERTO Określa, że odpowiedni punkt w lpPoints 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 ostatniemu PT_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 buforach). 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_hDCkontekst 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_DELETESCANSlub 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_hAttribDCatrybutu , 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 lpnTabStopPositionswartość . 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 NULLwartość , 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 nTabPositionswartość .

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:

  1. Zastosuj operator bitowy OR (|) do flagi i powiązanych flag pogrupowanych w następujący sposób:

    • TA_LEFT, TA_CENTERi TA_RIGHT

    • TA_BASELINE, TA_BOTTOMi TA_TOP

    • TA_NOUPDATECP i TA_UPDATECP

  2. Zastosuj operator bitowy AND (&) języka C++ do wyniku i zwracaną GetTextAlignwartość .

  3. 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 TextOutskładowych tekstowych GDI , ExtTextOuti 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_hAttribDCelementu , 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 GetTextExtentelement .

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 NULLwartość , 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ę GetWorldTransformGDI 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 NULLwartość , 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_GRAYTEXTkoloru . Jeśli kolor jest inny niż 0 (czarny), 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 czarny, aplikacja musi wywołać GrayString polecenie dim (szare) tekst.

Jeśli lpfnOutput element ma NULLwartość , 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ą __declspecpolecenia .

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_HIENGLISHMM_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, , y1x2i 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 MaskBltprogramu .

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ę ModifyWorldTransformGDI 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 czarny.

  • 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, x2i y2 (lub przez lpRect). Punkty początkowe i końcowe łuku są określane przez , , i y4 (lub przez ptStart i ptEnd). x4y3x3

Ł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ę PlayMetaFileprogramu , 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ńczeniu PT_LINETOPT_BEZIERTO lub typu dla tego punktu. Linia jest rysowana od tego punktu do ostatniego PT_MOVETO lub MoveTo punktu.

    Ta flaga jest łączona z PT_LINETO typem linii lub PT_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::LineToi 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::MoveTooperacji , CDC::LineTolub 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

Mapy wpisy z bieżącej palety logicznej do palety systemu.

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 RealizePalettefunkcję , 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 nSavedDCprogram .

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 lpRectUpdateNULL, system Windows nie oblicza regionu aktualizacji. Jeśli pRgnUpdate nie NULLjest , 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, gdy RGN_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 przez pRgnelement .

  • RGN_COPY Nowy region wycinków to kopia regionu zidentyfikowanego przez pRgnelement . Ta funkcja jest identyczna z pierwszą wersją programu SelectClipRgn. Jeśli region zidentyfikowany przez pRgn element to NULL, 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 przez pRgn.

  • RGN_OR Nowy region wycinkowania łączy bieżący region wycinków i region zidentyfikowany przez pRgnelement .

  • RGN_XOR Nowy region wycinkowania łączy bieżący region wycinków i region zidentyfikowany przez pRgn , 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 CGdiObjectklasy , 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. W celu uzyskania więcej informacji, zobacz następujący temat: 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 CreatePaletteskł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 Czarny 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 Czarny 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ć na SYSTEM_FONT uzyskaniu czcionki używanej przez okna dialogowe i okna. Zamiast tego użyj SystemParametersInfo funkcji z parametrem SPI_GETNONCLIENTMETRICS , aby pobrać bieżącą czcionkę. SystemParametersInfoUwzględnia bieżący motyw i zawiera informacje o czcionkach dla podpis, 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, CBrushlub 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 przez lpRectBounds 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 flagswartość 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 SetBrushOrgSelectObject 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 SetDCPenColorWin32, 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ę SetGraphicsModeGDI 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 trybu MM_ANISOTROPIC mapowania na nie powoduje zmiany bieżących ustawień okna ani widoku. Aby zmienić jednostki, orientację i skalowanie, wywołaj SetWindowExt funkcje składowe i SetViewportExt .

  • 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_HIMETRICMM_LOENGLISH, MM_LOMETRICi 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 SetPixelfunkcję , 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 czarny.

  • 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 Mapy pikseli ze źródłowego prostokąta do bloków 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_DELETESCANSlub 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_UPDATECPAktualizacje bieżącej pozycji 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ładowej TextOut 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_TEXTjest , 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_TEXTjest , 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ą GetTextExtentSetTextJustification. 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 SetViewportExtfunkcję .

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ę SetWorldTransformGDI systemu Windows .

CDC::StartDoc

Informuje sterownik urządzenia o uruchomieniu nowego zadania drukowania i że wszystkie kolejne StartPageEndPage 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, SetViewportOrgi 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

StartPageNEWFRAME 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 czarny.

  • 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, nSrcWidthi nSrcHeight definiują lewy górny róg i wymiary prostokąta źródłowego. Parametry x, y, nWidthi 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 nSrcHeightnWidthnHeight 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 StretchBltfunkcję , 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 NULLwartość , 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 nTabPositionswartość . 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ą nFlagsTA_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 TextOutmetody , aplikacja może wywołać SetTextAlign funkcję składową z ustawioną wartością nFlagsTA_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

Aktualizacje 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ą CreatePenCreatePen 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