كيفية القيام بما يلي: استخدام الوضع تكوين الشاشة باستخدام لخلط عنصر تحكم ألفا
There may be مرة/مرات when you want إلى إنشاء an إيقاف-شاشة صورة نقطية that has the following characteristics:
الألوان have أولي قيم that are أصغر من 255.
الألوان are not أولي ممزوج مع each غير ذلك كـ you إنشاء the صورة نقطية.
When you عرض the finished صورة نقطية, الألوان في the صورة نقطية are أولي ممزوج مع the الخلفية الألوان تشغيل the عرض جهاز.
إلى إنشاء such a صورة نقطية, construct a فارغ Bitmap كائن, و then construct a Graphics كائن based تشغيل that صورة نقطية. التعيين the compositing الوضع of the Graphics كائن إلى CompositingMode.SourceCopy.
The following مثال creates a Graphics كائن based تشغيل a Bitmap كائن. The تعليمات برمجية uses the Graphics كائن along مع الثاني نصف شفاف brushes (أولي = 160) إلى paint تشغيل the صورة نقطية. The تعليمات برمجية fills a أحمر ellipse و a أخضر ellipse using the نصف شفاف brushes. The أخضر ellipse overlaps the أحمر ellipse, but the أخضر ليس ممزوج مع the أحمر because the compositing الوضع of the Graphics كائن هو التعيين إلى SourceCopy.
The تعليمات برمجية draws the صورة نقطية تشغيل the شاشة twice: once تشغيل a أبيض الخلفية و once تشغيل a multicolored الخلفية. The بكسل في the صورة نقطية that are part of the الثاني ellipses have an أولي مكوّن of 160, so the ellipses are ممزوج مع the الخلفية الألوان تشغيل the شاشة.
The following illustration shows the إخراج of the تعليمات برمجية مثال. ملاحظة that the ellipses are ممزوج مع the الخلفية, but they are not ممزوج مع each غير ذلك.
The تعليمات برمجية مثال يحتوي على this كشف:
bitmapGraphics.CompositingMode = CompositingMode.SourceCopy
bitmapGraphics.CompositingMode = CompositingMode.SourceCopy;
If you want the ellipses إلى be ممزوج مع each غير ذلك كـ well كـ مع the الخلفية, تغيير that كشف إلى the following:
bitmapGraphics.CompositingMode = CompositingMode.SourceOver
bitmapGraphics.CompositingMode = CompositingMode.SourceOver;
The following illustration shows the إخراج of the revised تعليمات برمجية.
' Create a blank bitmap.
Dim myBitmap As New Bitmap(180, 100)
' Create a Graphics object that we can use to draw on the bitmap.
Dim bitmapGraphics As Graphics = Graphics.FromImage(myBitmap)
' Create a red brush and a green brush, each with an alpha value of 160.
Dim redBrush As New SolidBrush(Color.FromArgb(160, 255, 0, 0))
Dim greenBrush As New SolidBrush(Color.FromArgb(160, 0, 255, 0))
' Set the compositing mode so that when we draw overlapping ellipses,
' the colors of the ellipses are not blended.
bitmapGraphics.CompositingMode = CompositingMode.SourceCopy
' Fill an ellipse using a red brush that has an alpha value of 160.
bitmapGraphics.FillEllipse(redBrush, 0, 0, 150, 70)
' Fill a second ellipse using a green brush that has an alpha value of
' 160. The green ellipse overlaps the red ellipse, but the green is not
' blended with the red.
bitmapGraphics.FillEllipse(greenBrush, 30, 30, 150, 70)
'Set the compositing quality of the form's Graphics object.
e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
' Draw a multicolored background.
Dim colorBrush As New SolidBrush(Color.Aqua)
e.Graphics.FillRectangle(colorBrush, 200, 0, 60, 100)
colorBrush.Color = Color.Yellow
e.Graphics.FillRectangle(colorBrush, 260, 0, 60, 100)
colorBrush.Color = Color.Fuchsia
e.Graphics.FillRectangle(colorBrush, 320, 0, 60, 100)
'Display the bitmap on a white background.
e.Graphics.DrawImage(myBitmap, 0, 0)
' Display the bitmap on a multicolored background.
e.Graphics.DrawImage(myBitmap, 200, 0)
// Create a blank bitmap.
Bitmap myBitmap = new Bitmap(180, 100);
// Create a Graphics object that we can use to draw on the bitmap.
Graphics bitmapGraphics = Graphics.FromImage(myBitmap);
// Create a red brush and a green brush, each with an alpha value of 160.
SolidBrush redBrush = new SolidBrush(Color.FromArgb(160, 255, 0, 0));
SolidBrush greenBrush = new SolidBrush(Color.FromArgb(160, 0, 255, 0));
// Set the compositing mode so that when we draw overlapping ellipses,
// the colors of the ellipses are not blended.
bitmapGraphics.CompositingMode = CompositingMode.SourceCopy;
// Fill an ellipse using a red brush that has an alpha value of 160.
bitmapGraphics.FillEllipse(redBrush, 0, 0, 150, 70);
// Fill a second ellipse using a green brush that has an alpha value of 160.
// The green ellipse overlaps the red ellipse, but the green is not
// blended with the red.
bitmapGraphics.FillEllipse(greenBrush, 30, 30, 150, 70);
// Set the compositing quality of the form's Graphics object.
e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
// Draw a multicolored background.
SolidBrush colorBrush = new SolidBrush(Color.Aqua);
e.Graphics.FillRectangle(colorBrush, 200, 0, 60, 100);
colorBrush.Color = Color.Yellow;
e.Graphics.FillRectangle(colorBrush, 260, 0, 60, 100);
colorBrush.Color = Color.Fuchsia;
e.Graphics.FillRectangle(colorBrush, 320, 0, 60, 100);
// Display the bitmap on a white background.
e.Graphics.DrawImage(myBitmap, 0, 0);
// Display the bitmap on a multicolored background.
e.Graphics.DrawImage(myBitmap, 200, 0);
The preceding example is designed for use with Windows Forms, and it requires PaintEventArgs e, which is a parameter of PaintEventHandler.