TransparencyMask.cs
C# VB
//// This code is part of Document Solutions for Imaging demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System.IO;using System.Drawing;using GrapeCity.Documents.Drawing;using GrapeCity.Documents.Text;using GrapeCity.Documents.Imaging;using GCTEXT = GrapeCity.Documents.Text;
namespace DsImagingWeb.Demos{ // This sample demonstrates the use of TransparencyMaskBitmap // when drawing on a bitmap. The transparency mask used is // created on the fly by filling an intermediary bitmap // with a linear gradient brush from 0 (black, transparent) // to 255 (white, opaque). public class TransparencyMask { public GcBitmap GenerateImage(Size pixelSize, float dpi, bool opaque, string[] sampleParams = null) { var h2 = pixelSize.Width / 2;
// Prepare a linear gradient transparency mask, // from 0 (transparent) to 255 (opaque): using var mask = new GcBitmap(h2, h2, true); using var gmask = mask.CreateGraphics(); var grad = new LinearGradientBrush(Color.Black, Color.White); gmask.FillRectangle(new RectangleF(0, 0, mask.Width, mask.Height), grad); // Convert to GrayscaleBitmap to be used as Renderer.TransparencyMaskBitmap: using var gsb = mask.ToGrayscaleBitmap();
// Create a bitmap to draw on, fill it with yellow background: using var bmp1 = new GcBitmap(h2, h2, true); using var g = bmp1.CreateGraphics(Color.Yellow);
// Apply the transparency mask: g.Renderer.TransparencyMaskBitmap = gsb;
// Fill 3 circles, note how the fill gradually changes // from transparent to opaque (left to right) along with the gradient: var d = h2 / 25f; var rc = new RectangleF(0, 0, h2 * 0.7f, h2 * 0.7f);
var bmp = new GcBitmap(pixelSize.Width, pixelSize.Height, true, dpi, dpi); bmp.Clear(Color.White); FillCircles(g, rc, h2, d); bmp.BitBlt(bmp1, 0, 0);
g.Renderer.TransparencyMaskBitmap = null; FillCircles(g, rc, h2, d); bmp.BitBlt(bmp1, h2, 0);
// Add some explanatory texts below the images: var gg = bmp.CreateGraphics(); rc = new RectangleF(0, h2 + d, h2 - d * 2, h2 - d * 2); var tf = new TextFormat() { Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "FreeMono.ttf")), FontSize = 16 }; gg.DrawString( "The circles in the image above were rendered with TransparencyMaskBitmap " + "on the target graphics set to a linear gradient from transparent to opaque.", tf, rc, TextAlignment.Center, ParagraphAlignment.Near);
rc.Offset(h2, 0); gg.DrawString( "The circles in the image above were rendered with no TransparencyMaskBitmap " + "on the target graphics.", tf, rc, TextAlignment.Center, ParagraphAlignment.Near);
return bmp; }
void FillCircles(GcBitmapGraphics g, RectangleF rc, float h2, float d) { var r = rc; r.Offset((h2 - rc.Width) / 2, 0); r.Inflate(-d, -d); g.FillEllipse(r, Color.Red); r = rc; r.Offset(h2 - rc.Width, h2 - rc.Height); r.Inflate(-d, -d); g.FillEllipse(r, Color.Green); r = rc; r.Offset(0, h2 - rc.Height); r.Inflate(-d, -d); g.FillEllipse(r, Color.Blue); } }}