Gör så här: Rita med ogenomskinliga och halvtransparenterade penslar
När du fyller en form måste du skicka ett Brush objekt till någon av fyllningsmetoderna i klassen Graphics. Den enda parametern i SolidBrush konstruktorn är ett Color objekt. Om du vill fylla en ogenomskinlig form anger du färgens alfakomponent till 255. Om du vill fylla en halvtransparent form anger du alfakomponenten till valfritt värde från 1 till 254.
När du fyller en halvtransparent form blandas formens färg med bakgrundsfärgerna. Alfakomponenten anger hur formen och bakgrundsfärgerna blandas. alfavärden nära 0 lägger mer vikt på bakgrundsfärgerna, och alfavärden nära 255 lägger mer vikt på formfärgen.
Exempel
I följande exempel ritas en bitmapp och fyller sedan tre ellipser som överlappar bitmappen. Den första ellipsen använder en alfakomponent på 255, så den är ogenomskinlig. Den andra och tredje ellipsen använder en alfakomponent på 128, så de är halvtransparent; du kan se bakgrundsbilden via ellipserna. Anropet som anger egenskapen CompositingQuality gör att blandningen för den tredje ellipsen görs tillsammans med gammakorrigering.
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)
Följande bild visar utdata från följande kod:
Kompilera koden
Föregående exempel är utformat för användning med Windows Forms och kräver PaintEventArgse
, som är en parameter för PaintEventHandler.
Se även
.NET Desktop feedback