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:
Kompilowanie kodu
Powyższy przykład jest przeznaczony do użycia z formularzami Systemu Windows i wymaga PaintEventArgse
parametru , który jest parametrem PaintEventHandler.
Zobacz też
.NET Desktop feedback