Udostępnij za pośrednictwem


Porady: rysowanie za pomocą nieprzezroczystych i półprzezroczystych pędzli

Po wypełnieniu kształtu należy przekazać Brush obiekt do jednej z metod Graphics wypełnienia klasy. Jeden parametr konstruktora SolidBrush jest obiektem Color . Aby wypełnić nieprzezroczystym kształtem, ustaw składnik alfa koloru na 255. Aby wypełnić półprzezroczystny kształt, ustaw składnik alfa na dowolną wartość z zakresu od 1 do 254.

Po wypełnieniu półprzezroczystego kształtu kolor kształtu jest mieszany z kolorami tła. Składnik alfa określa, jak są mieszane kolory kształtu i tła; wartości alfa w pobliżu 0 umieść większą wagę na kolorach tła, a wartości alfa w pobliżu 255 umieść większą wagę na kolorze kształtu.

Przykład

Poniższy przykład rysuje mapę bitową, a następnie wypełnia trzy wielokropki nakładające się na mapę bitową. Pierwszy wielokropek używa składnika alfa 255, więc jest nieprzezroczystym. Drugi i trzeci wielokropek używają składnika alfa 128, więc są półprzezroczyste; obraz tła można zobaczyć za pomocą wielokropka. Wywołanie, które ustawia CompositingQuality właściwość powoduje mieszanie trzeciego wielokropka w połączeniu z korektą gamma.

Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height);

SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));

e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30);
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30);
Dim bitmap As New Bitmap("Texture1.jpg")
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height)

Dim opaqueBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
Dim semiTransBrush As New SolidBrush(Color.FromArgb(128, 0, 0, 255))

e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30)
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30)

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30)

Poniższa ilustracja przedstawia dane wyjściowe następującego kodu:

Illustration that shows opaque and semitransparent output.

Kompilowanie kodu

Powyższy przykład jest przeznaczony do użycia z formularzami Systemu Windows i wymaga PaintEventArgseparametru , który jest parametrem PaintEventHandler.

Zobacz też