Index Zelazny Roger Amber 09 Rycerz Cieni elektronika praktyczna 09 1997 rozdzial 09 (214) rozdzial 09 (204) rozdzial 09 (16) rozdzial 09 (138) rozdzial 09 (167) rozdzial 09 (250) Lackey Mercedes Strzaly krolowej Donaldson Stephen R Moc ktora oslania |
[ Pobierz caÅ‚ość w formacie PDF ] .Poni¿szy fragment kodu tworzy bia³e pióro magazynowe:CPen Pen;Pen.CreateStockObject( WHITE_PEN);Poni¿szy kod tworzy identyczne bia³e pióro nie bêd¹ce obiektem magazynowym:CPen Pen;Pen.CreatePen( PS_SOLID, l, RGB( 255, 255, 255 ) );Jeœli ¿aden z podstawowych stylów piór nie spe³nia Twoich potrzeb, klasa CPen udostêpnia tak¿e osobny konstruktor przeznaczony do tworzenia piór kosmetycznych i geometrycznych, obs³uguj¹cych wiele ró¿nych opcji stylów.Na przyk³ad mo¿esz stworzyæ pióro geometryczne rysuj¹ce wzór zdefiniowany w postaci bitmapy, mo¿esz tak¿e precyzyjnie kontrolowaæ sposób rysowania zakoñczeñ (p³askie, zaokr¹glone, kwadratowe) i za³amañ linii (œciête, spiczaste lub zaokr¹glone).Poni¿szy kod tworzy pióro geometryczne o szerokoœci 16 jednostek, rysuj¹ce jednolite zielone linie z p³askimi koñcami.Gdy dwie linie siê zetkn¹, powstaj¹ce zagiêcie jest zaokr¹glane, tworz¹c g³adkie przejœcie:LOGPEN LogPen;LogPen.lopnStyle = PS_SOLID; LogPen.lopnColor = RGB(O, 255, O ) ; CPen Pen( PS_GEOMETRIC | PS_SOLID | PS_ENDCAP_FLAT | PS_JOIN_ ROUND,&LogPen);Windows 98 nak³ada wiele ograniczeñ na korzystanie z piór kosmetycznych i geometrycznych, z których nie najmniej wa¿n¹ jest to, ¿e aby style zakoñczeñ i za³amañ dzia³a³y, figury musz¹ byæ narysowane do œcie¿ek, a dopiero potem przetworzone za pomoc¹ funkcji CDC: :StrokePath().Œcie¿kê definiuje siê poprzez ujêcie poleceñ rysunkowych pomiêdzy wywo³ania funkcji coc: : BeginPath () i coc:: EndPath (), tak jak w poni¿szym przyk³adzie:pDC->BeginPath(); pDC->MoveTo( O, O); pDC->LineTo( 200, 0); pDC->LineTo( 200, 200); pDC->LineTo( O, 200) ; pDC->CloseFigure() ; pDC->EndPath(); pDC->StrokePath();PêdzleKlasa MFC CBrush reprezentuje pêdzle GDI.Pêdzle wystêpuj¹ w trzech podstawowych odmianach: jednolite, siatkowane oraz deseniowe.Pêdzle jednolite zamalowuj¹ obszar jednolitym kolorem.Jeœli sprzêt zainstalowany w systemie nie umo¿liwia bezpoœredniego u¿ycia podanego koloru pêdzla, Windows symuluje ¿¹dany kolor za pomoc¹ roztrz¹sania kolorów, które mog¹ zostaæ wyœwietlone.Pêdzle siatkowane wype³niaj¹ obszar jednym z szeœciu predefmiowanych wzorów siatek, wybranych ze wzorów najczêœciej wystêpuj¹cych w ró¿nych rysunkach technicznych i projektach.Wzór deseniowy powoduje wype³nienie obszaru bitmap¹.Klasa CBrush udostêpnia konstruktor dla ka¿dej odmiany pêdzla.Do tworzenia jednolitego pêdzla mo¿esz u¿yæ konstruktora CBrush, przekazuj¹c mu jedynie wartoœæ COLORREF okreœlaj¹c¹ kolor pêdzla:CBrush Brush( RGB( 255, O, 0) );Jednolity pêdzel mo¿esz tak¿e utworzyæ w dwóch krokach, tworz¹c niezainicjowany obiekt klasy CBrush i wywo³uj¹c jego funkcjê CBrush: :CreateSolidBrush ( ) :CBrush Brush; Brush.CreateSolidBrush( RGB(255, O, 0));W obu przypadkach utworzyliœmy jednolity pêdzel w jasnoczerwonym kolorze.Aby stworzyæ pêdzel, mo¿esz tak¿e wype³niæ strukturê LOGBRUSH i wywo³aæ funkcjê CBrush: :CreateBrushIndirect ().Podobnie jak w przypadku konstruktorów klasy CPen, wszystkie tworz¹ce pêdzle konstruktory klasy CBrush w momencie niepowodzenia (zwykle krytycznego braku pamiêci) zg³aszaj¹ wyj¹tek braku zasobów.Tworzenie pêdzli siatkowych odbywa siê przez przekazanie konstruktorowi klasy CBrush zarówno indeksu wzoru, jak i wartoœci koloru lub przez wywo³anie funkcji CBrush: :CreateHatchBrushIndirect ().Oto przyk³ad tworzenia siatkowego pêdzla maluj¹cego prostok¹tn¹ siatkê linii obróconych o 45 stopni wzglêdem osi pionowej:CBrush Brush( HS_DIAGCROSS, RGB( 255, O, 0)); );Nastêpny przyk³ad tworzy ten sam pêdzel w dwóch krokach:CBrush Brush;Brush.CreateHatchBrush( HS_DIAGCROSS, RGB( 255, O, O ) );HS_DIAGCROSS jest jednym z szeœciu wzorów do wyboru.Wszystkie dostêpne style zosta³y zebrane w tabeli 9.5.Tabela 9.5.Wzorv siatkowaniaWzór siatkowaniaOpisHS_BDIAGONAL-Ukoœne linie od lewej do prawej pod k¹tem 45°.HS_CROSS-Siatka pionowych i poziomych linii.HS_DIAGCROSS-Ukoœna siatka przecinaj¹cych siê linii.HS_FDIAGONAL-Ukoœne linie od prawej do lewej pod k¹tem 45°.HS_HORIZONATL-Linie poziome.HS VERTICAL-Linie pionowe.Podczas malowania pêdzlem siatkowym Windows wype³nia przestrzeñ miêdzy liniami siatki domyœlnym kolorem t³a ustawionym w kontekœcie urz¹dzenia.Kolor t³a mo¿esz zmieniæ, wywo³uj¹c funkcjê coc: : SetBkColor () lub w ogóle wy³¹czyæ rysowanie t³a, wywo³uj¹c funkcjê coc: :SetBkMode () z parametrem TRANSPARENT (przezroczyste) zamiast parametru OPAQUE (nieprzezroczyste).Poni¿szy przyk³ad rysuje kwadrat o boku 100 jednostek i wype³nia go ukoœn¹ siatk¹ bia³ych linii rysowanych na jasnoszarym tle:CBrush Brush( HS_DIAGCROSS, RGB( 255, 255, 255 ) ); CBrush *pOldBrush;pOldBrush = pDC->SelectObject(SBrush); pDC->SetBkColor( RGB( 192, 192, 192 ) ); pDC->Rectangle(O, O, 100, 100); pDC->SelectObject(pOldBrush);Nastêpny przyk³ad rysuje siatkowany na czarno kwadrat na istniej¹cym tle [ Pobierz caÅ‚ość w formacie PDF ] |
||||
Wszelkie Prawa Zastrzeżone! Kawa była słaba i bez smaku. Nie miała treści, a jedynie formę. Design by SZABLONY.maniak.pl. | |||||