Documentation/Source example
Example source
samples/basic/Brushes.js
"use strict";
// window.DrawMode = 1;
include(`${fb.ComponentPath}\\docs\\Helpers.js`);
include(`${fb.ComponentPath}\\docs\\Flags.js`);
let ww = 0;
let wh = 0;
function on_size(width, height) {
ww = width;
wh = height;
}
const solidBrush = gdi.Brush(BrushType.Solid, 0xFF000000);
const img = gdi.Image(`${fb.ComponentPath}\\samples\\d2d\\images\\Flowers.jpg`);
const bitmapBrush = gdi.Brush(BrushType.Bitmap, img, BrushWrapMode.TileFlipXY);
const font = gdi.Font("Segoe UI", 96, 1);
const text = "TEST FOR TEXT BRUSH";
function on_paint(gr) {
gr.FillSolidRect(0, 0, ww, wh, solidBrush);
gr.SetSmoothingMode(SmoothingMode.HighQuality);
gr.SetTextRenderingHint(TextRenderingHint.AntiAlias);
const ms = gr.MeasureString(text, font, 0, 0, ww, wh, StringFormat(1));
const linearGradientBrush = gdi.Brush(
BrushType.LinearGradient,
[ms.X, ms.Y],
[ms.X, ms.Y + ms.Height],
[0.0, 0xFFFFFFFF, 0.5, 0xFFFF0000, 1.0, 0xFF000000]
);
gr.DrawString(text, font, linearGradientBrush, 0, 0, ww, wh, StringFormat(1));
bitmapBrush.Scale(ww / img.Width / 2, (wh - ms.Height) / img.Height / 2);
bitmapBrush.Translate(0, ms.Height);
gr.FillEllipse(0, ms.Height, ww, wh - ms.Height, bitmapBrush);
bitmapBrush.ResetTransform();
const lightRadius = Math.min(ww, wh) / 2;
const radialGradientBrush = gdi.Brush(
BrushType.RadialGradient,
[lastX, lastY],
[lightRadius, lightRadius],
[0.0, 0x00FFFFFF, 1.0, 0xFFFFFFFF],
BrushWrapMode.Clamp
);
gr.FillEllipse(lastX - lightRadius, lastY - lightRadius, lightRadius * 2, lightRadius * 2, radialGradientBrush);
}
let lastX = 0, lastY = 0;
function on_mouse_move(x, y) {
lastX = x;
lastY = y;
window.Repaint();
}