SKPaint之ImageFilter
CreateMagnifier放大滤镜
public static SkiaSharp.SKImageFilter CreateMagnifier (SkiaSharp.SKRect src, float inset, SkiaSharp.SKImageFilter input = default, SkiaSharp.SKImageFilter.CropRect cropRect = default);
放大镜滤镜
var canvas = e.Surface.Canvas;
canvas.Clear(SKColors.White);
if (skBmp == null) skBmp = SKBitmap.Decode(@"Images\AIWoman.png");
//注意,这里的原缩放后的位置
var srcRect = new SKRect(140, 32, 240, 132);
//20:四周边缘框大小,与官网的说得放大系数不一致?
using (var filter = SKImageFilter.CreateMagnifier(srcRect, 20))
using (var paint = new SKPaint())
{
paint.FilterQuality = SKFilterQuality.High;
var dest = new SKRect(50, 50, 450, 450);
canvas.DrawBitmap(skBmp, dest, paint);//原图
paint.Style = SKPaintStyle.Stroke;
paint.Color = SKColors.Red;
canvas.Translate(dest.Left, dest.Top);
canvas.DrawRect(srcRect,paint);
canvas.Translate(-dest.Left, -dest.Top);
paint.ImageFilter = filter;
canvas.DrawBitmap(skBmp, new SKRect(410, 10, 810, 410), paint);//
paint.ImageFilter = null;
paint.Color = SKColors.Red;
paint.TextSize = 24;
paint.Typeface = SKTypeface.FromFamilyName("宋体");
canvas.DrawText($"原图", 20, 200, paint);
canvas.DrawText($"CreateMagnifier", 420, 200, paint);
}
将原图按目标矩形缩放后,从缩放后的矩形中选择一个区域显示到目标矩形上。
将显示区域伸缩后,会不显示部分内容?Bug不是效果?
CreateMatrixConvolution 卷积
public static SkiaSharp.SKImageFilter CreateMatrixConvolution (SkiaSharp.SKSizeI kernelSize, float[] kernel, float gain, float bias, SkiaSharp.SKPointI kernelOffset, SkiaSharp.SKShaderTileMode tileMode, bool convolveAlpha, SkiaSharp.SKImageFilter input = default, SkiaSharp.SKImageFilter.CropRect cropRect = default);
用于创建一个矩阵卷积滤镜(Matrix Convolution Filter)。这个滤镜通过应用一个内核矩阵,对图像进行卷积运算,从而实现各种图像处理效果,如模糊、锐化、边缘检测等。矩阵卷积是一种常用的图像滤波技术,用于改变图像的像素值,达到图像平滑、锐化、边缘检测等效果。
SKImageFilter.CreateMatrixConvolution 的作用
- 图像滤波:通过矩阵卷积对图像进行各种滤波处理,如模糊、锐化、边缘检测等。
- 图像增强:可以增强图像的细节,改善图像的清晰度和对比度。
- 特效处理:实现各种特效,如高斯模糊、箱形滤波、边缘检测等,常用于图像处理和计算机视觉领域。
- 定制滤镜:用户可以自定义内核矩阵,创建适合特定需求的滤镜效果。
var canvas = e.Surface.Canvas;
canvas.Clear(SKColors.White);
if (skBmp == null) skBmp = SKBitmap.Decode(@"Images\AIWoman.png");
// 定义一个3x3的锐化内核
var weights = new float[]
{
0, -1, 0,
-1, 5, -1,
0, -1, 0
};
using (var filter = SKImageFilter.CreateMatrixConvolution(new SKSizeI(3, 3), weights, 1.0F, 0.0F, new SKPointI(1, 1), SKShaderTileMode.Clamp, true))
using (var paint = new SKPaint())
{
paint.FilterQuality = SKFilterQuality.High;
var dest = new SKRect(10, 10, 410, 410);
canvas.DrawBitmap(skBmp, dest, paint);//原图
paint.ImageFilter = filter;
canvas.DrawBitmap(skBmp, new SKRect(410, 10, 810, 410), paint);//
paint.ImageFilter = null;
paint.Color = SKColors.Red;
paint.TextSize = 24;
paint.Typeface = SKTypeface.FromFamilyName("宋体");
canvas.DrawText($"原图", 20, 200, paint);
canvas.DrawText($"CreateMatrixConvolution", 420, 200, paint);
}
使用一个3x3的锐化内核,创建一个锐化卷积滤镜,锐化图像
参数说明
kernelSize
:定义卷积核的大小,这里设置为3x3
。kernel
:一个浮点数组,表示卷积核的权重矩阵。在本例中,它是一个 3x3 的锐化内核。gain
:增益,用于控制卷积运算的强度。通常设置为1.0
。bias
:偏置值,添加到卷积计算结果中,用于调整图像的亮度。通常设置为0.0
。kernelOffset
:卷积核的偏移量,用于指定卷积核中心在图像中的位置。这里设置为(1, 1)
对应卷积核的中心。tileMode
:瓦片模式,用于指定如何处理边界。这里使用SKShaderTileMode.Clamp
,即边缘像素会被重复。convolveAlpha
:一个布尔值,指定是否对 alpha 通道进行卷积。这里设置为true
。input
:可选的输入滤镜,通常用于将多个滤镜串联在一起。本示例中未使用,默认为null
。cropRect
:可选的裁剪矩形,用于限制滤镜效果的区域。本示例中未使用,默认为null
。
CreateMerge 合并叠加
public static SkiaSharp.SKImageFilter CreateMerge (SkiaSharp.SKImageFilter[] filters, SkiaSharp.SKImageFilter.CropRect cropRect = default);
public static SkiaSharp.SKImageFilter CreateMerge (SkiaSharp.SKImageFilter first, SkiaSharp.SKImageFilter second, SkiaSharp.SKImageFilter.CropRect cropRect = default);
与CreateCompose的异同
相同点
- 组合滤镜: 两者都用于组合多个图像滤镜。
- 应用效果: 都可以创建复杂的图像效果。
不同点
-
应用方式:
CreateMerge
独立应用各个滤镜,然后合并结果。CreateCompose
顺序应用滤镜,一个滤镜的输出作为下一个滤镜的输入。
-
结果叠加:
CreateMerge
可以理解为将多个滤镜的效果叠加在一起。CreateCompose
更像是形成一个滤镜链,每个滤镜依次处理图像。
var canvas = e.Surface.Canvas;
canvas.Clear(SKColors.White);
if (skBmp == null) skBmp = SKBitmap.Decode(@"Images\AIWoman.png");
var blurFilter = SKImageFilter.CreateBlur(3.0f, 3.0f);
var scaleMatrix = SKImageFilter.CreateMatrix(SKMatrix.CreateScale(0.5F, 0.5F));
using (var mergefilter = SKImageFilter.CreateMerge(scaleMatrix, blurFilter))
using (var composefilter = SKImageFilter.CreateCompose(scaleMatrix, blurFilter))
using (var paint = new SKPaint())
{
paint.FilterQuality = SKFilterQuality.High;
var dest = new SKRect(10, 10, 410, 410);
canvas.DrawBitmap(skBmp, dest, paint);//原图
paint.ImageFilter = mergefilter;
canvas.DrawBitmap(skBmp, new SKRect(410, 10, 810, 410), paint);//
paint.ImageFilter = composefilter;
canvas.DrawBitmap(skBmp, new SKRect(10, 410, 410, 810), paint);//
paint.ImageFilter = null;
paint.Color = SKColors.Red;
paint.TextSize = 24;
paint.Typeface = SKTypeface.FromFamilyName("宋体");
canvas.DrawText($"原图", 20, 200, paint);
canvas.DrawText($"CreateMerge", 420, 200, paint);
canvas.DrawText($"CreateCompose", 20, 600, paint);
}
注意CreateMerge与CreateCompose之间的区别。
使用CreateMerge会生成多个结果,CreateCompose最终只有一个结果。
CreateOffset 偏移
public static SkiaSharp.SKImageFilter CreateOffset (float dx, float dy, SkiaSharp.SKImageFilter input = default, SkiaSharp.SKImageFilter.CropRect cropRect = default);
用于创建一个偏移滤镜。它可以在图像上应用一个平移变换,使图像沿着指定的偏移量移动。
var canvas = e.Surface.Canvas;
canvas.Clear(SKColors.White);
if (skBmp == null) skBmp = SKBitmap.Decode(@"Images\AIWoman.png");
using(var filter =SKImageFilter.CreateOffset(400,0))
using (var paint = new SKPaint())
{
paint.FilterQuality = SKFilterQuality.High;
var dest = new SKRect(10, 10, 410, 410);
canvas.DrawBitmap(skBmp, dest, paint);//原图
paint.ImageFilter = filter;
canvas.DrawBitmap(skBmp, dest, paint);//注意,这里的dest与上面一样,但结果偏移了
}
注意,两次的DrawBitmap目标矩形是一样的,但绘制结果位置不同。
CreatePaint 绘制
public static SkiaSharp.SKImageFilter CreatePaint (SkiaSharp.SKPaint paint, SkiaSharp.SKImageFilter.CropRect cropRect = default);
创建一个将 SKPaint
对象应用于图像的滤镜。这个方法可以用于在绘制时,将特定的绘画效果应用到整个图像上,而不仅仅是对图像的一部分或特定区域进行处理。
主要作用和用途
-
全局绘画效果:
SKImageFilter.CreatePaint
可以用来将一个SKPaint
对象的效果应用到整个图像上。这种方法适用于需要在整个图像或画布上应用一致效果的场景。
-
效果叠加:
- 可以将
SKPaint
对象与其他滤镜组合使用,以创建更复杂的视觉效果。例如,可以结合颜色过滤、模糊效果等,以及SKImageFilter.CreatePaint
创建的滤镜,来达到多重效果的叠加和混合。
- 可以将
-
简化绘图逻辑:
- 在绘制复杂图像时,可以通过将多个绘图效果封装在一个
SKPaint
对象中,并使用SKImageFilter.CreatePaint
将其应用到图像上,以简化代码和管理。
- 在绘制复杂图像时,可以通过将多个绘图效果封装在一个
var canvas = e.Surface.Canvas;
canvas.Clear(SKColors.White);
if (skBmp == null) skBmp = SKBitmap.Decode(@"Images\AIWoman.png");
// 创建一个带有透明度和混合模式的 SKPaint 对象
var filterPaint = new SKPaint
{
Color = new SKColor(255, 0, 0, 128), // 红色,半透明
BlendMode = SKBlendMode.SrcOver, // 混合模式
IsAntialias = true
};
// 创建 Paint 类型的滤镜
var paintFilter = SKImageFilter.CreatePaint(filterPaint);
using (var paint = new SKPaint())
{
paint.Color = SKColors.Blue;
paint.IsAntialias = true;
paint.Style = SKPaintStyle.Fill;
canvas.DrawRect(new SKRect(50, 50, 200, 200), paint);
}
// 应用滤镜
var paintFilterPaint = new SKPaint
{
ImageFilter = paintFilter
};
canvas.DrawBitmap(skBmp, 0,0 , paintFilterPaint);
CreatePointLitDiffuse 点光漫反射
public static SkiaSharp.SKImageFilter CreatePointLitDiffuse (SkiaSharp.SKPoint3 location, SkiaSharp.SKColor lightColor, float surfaceScale, float kd, SkiaSharp.SKImageFilter input = default, SkiaSharp.SKImageFilter.CropRect cropRect = default);
用于创建一个点光源漫反射滤镜。这个滤镜模拟光源照射在图像上,产生光照和阴影效果,从而增强图像的立体感。它可以用于实现各种光照效果,特别是在需要模拟光源和阴影的图像处理中。
与CreateDistantLitDiffuse的异同
相同点
-
基本功能:
- 都用于创建漫反射光照效果的图像滤镜。
- 通过模拟光照来增强图像的立体感和深度感。
-
参数:
- 两者都需要指定光源的颜色、表面法线的缩放(surface scale)和漫反射系数(kd)。
- 都可以接受可选的输入滤镜和裁剪矩形(cropRect)。
-
应用场景:
- 都适用于需要模拟光照和阴影效果的图像处理和视觉效果增强的场景。
不同点
-
光源类型:
CreatePointLitDiffuse
:模拟点光源。光源有一个特定的位置,光线从这个点向外辐射。CreateDistantLitDiffuse
:模拟远距离光源。光线从远处以平行光线的形式照射到图像上,类似于太阳光。
-
光源位置:
CreatePointLitDiffuse
:需要指定光源的位置(x, y, z)坐标。CreateDistantLitDiffuse
:需要指定光源的方向向量(dx, dy, dz),表示光线的入射方向。
SKImageFilter.CreatePointLitDiffuse
模拟点光源,光线从一个特定点向外辐射,适用于需要强调特定光源位置的场景。SKImageFilter.CreateDistantLitDiffuse
模拟远距离光源,光线平行照射,适用于模拟太阳光等远距离光源的场景。
var canvas = e.Surface.Canvas;
var info = e.Info;
canvas.Clear();
const string TEXT = "SkiaSharp绘图";
float z = 300F;
float surfaceScale = 1F;
float lightConstant = 0.8F;
using (SKPaint paint = new SKPaint())
{
paint.IsAntialias = true;
// Size text to 90% of canvas width
paint.TextSize = 100;
paint.Typeface = SKTypeface.FromFamilyName("微软雅黑");
float textWidth = paint.MeasureText(TEXT);
paint.TextSize *= 0.9f * info.Width / textWidth;
// Find coordinates to center text
SKRect textBounds = new SKRect();
paint.MeasureText(TEXT, ref textBounds);
float xText = info.Rect.MidX - textBounds.MidX;
float yText = info.Rect.MidY - textBounds.MidY;
// Create distant light image filter
paint.ImageFilter = SKImageFilter.CreatePointLitDiffuse(
new SKPoint3(info.Rect.MidX, info.Rect.MidY/2, z),
SKColors.White,
surfaceScale,
lightConstant);
canvas.DrawText(TEXT, xText, yText, paint);
}
在画布中间,偏上位置产生一个光源,显示文字的阴影效果。
CreatePointLitSpecular 点光阴面反射
public static SkiaSharp.SKImageFilter CreatePointLitSpecular (SkiaSharp.SKPoint3 location, SkiaSharp.SKColor lightColor, float surfaceScale, float ks, float shininess, SkiaSharp.SKImageFilter input = default, SkiaSharp.SKImageFilter.CropRect cropRect = default);
用于创建一个点光源高光滤镜效果。这个滤镜模拟点光源的高光反射效果,可以应用于图像,以模拟一种点光源照射在表面上产生的高光效果,通过这个方法可以设置光源的位置、表面的材质属性以及光的颜色和强度,从而生成逼真的光照效果。
参数
- location:光源的位置,使用
SKPoint3
表示。 - lightColor:光源的颜色,使用
SKColor
表示。 - surfaceScale:用于缩放表面法线的值,影响表面的高度和法线的计算。
- ks:镜面反射系数,控制高光的强度。
- shininess:光泽度,控制高光的锐利度。
- input:输入图像滤镜,可以为空。
- cropRect:裁剪矩形,定义输出图像的区域。
var canvas = e.Surface.Canvas;
var info = e.Info;
canvas.Clear();
const string TEXT = "SkiaSharp绘图";
float z = 50f;
// 表面缩放值
float surfaceScale = 1.0f;
// 镜面反射系数
float ks = 0.8f;
// 光泽度
float shininess = 3.0f;
using (SKPaint paint = new SKPaint())
{
paint.IsAntialias = true;
// Size text to 90% of canvas width
paint.TextSize = 100;
paint.Typeface = SKTypeface.FromFamilyName("微软雅黑");
float textWidth = paint.MeasureText(TEXT);
paint.TextSize *= 0.9f * info.Width / textWidth;
// Find coordinates to center text
SKRect textBounds = new SKRect();
paint.MeasureText(TEXT, ref textBounds);
float xText = info.Rect.MidX - textBounds.MidX;
float yText = info.Rect.MidY - textBounds.MidY;
paint.ImageFilter = SKImageFilter.CreatePointLitSpecular(
new SKPoint3(info.Rect.MidX, info.Rect.MidY / 2, z),
SKColors.White,
surfaceScale,
ks,
shininess);
canvas.DrawText(TEXT, xText, yText, paint);
}
在画布中间偏上位置产生一个光源。
与CreateDistantLitSpecular的异同
共同点
- 用途:两者都用于创建高光反射效果,模拟光源照射在表面上的反射。
- 参数:两者都接受类似的参数,包括光源颜色、表面缩放值、镜面反射系数、光泽度、输入图像滤镜和裁剪矩形。
- 应用方式:两者的应用方式相似,通过创建滤镜然后将其应用到图像上。
不同点
-
光源类型:
CreatePointLitSpecular
模拟的是一个点光源,光源从特定的三维位置发出光线,向各个方向辐射。CreateDistantLitSpecular
模拟的是一个平行光源,光线从一个方向平行地照射到物体表面,类似于太阳光的效果。
-
光源参数:
CreatePointLitSpecular
需要一个SKPoint3
位置参数来定义点光源的位置。CreateDistantLitSpecular
需要一个SKPoint3
方向参数来定义平行光源的方向。
CreateSpotLitDiffuse聚光灯漫反射
public static SkiaSharp.SKImageFilter CreateSpotLitDiffuse (SkiaSharp.SKPoint3 location, SkiaSharp.SKPoint3 target, float specularExponent, float cutoffAngle, SkiaSharp.SKColor lightColor, float surfaceScale, float kd, SkiaSharp.SKImageFilter input = default, SkiaSharp.SKImageFilter.CropRect cropRect = default);
用于创建聚光灯漫反射效果的图像滤镜。这个滤镜模拟的是聚光灯照射在物体表面产生的漫反射效果,通过设置光源的位置、方向和其他参数,可以实现逼真的光照效果。
参数
- location:光源的位置,使用
SKPoint3
表示。 - target:光源的目标位置,即光线的方向,使用
SKPoint3
表示。 - specularExponent:镜面反射指数,控制镜面反射的强度。
- cutoffAngle:光锥的截止角度,决定光照的范围。
- lightColor:光源的颜色,使用
SKColor
表示。 - surfaceScale:用于缩放表面法线的值,影响表面的高度和法线的计算。
- kd:漫反射系数,控制漫反射光的强度。
- input:输入图像滤镜,可以为空。
- cropRect:裁剪矩形,定义输出图像的区域。
var canvas = e.Surface.Canvas;
var info = e.Info;
canvas.Clear(SKColors.White);
const string TEXT = "SkiaSharp绘图";
// 定义光源位置
var location = new SKPoint3(100, 100, 5);
// 镜面反射指数
float specularExponent = 20.0f;
// 光锥截止角度
float cutoffAngle = 30.0f;
// 光源颜色
var lightColor = SKColors.LightGreen;
// 表面缩放值
float surfaceScale = 1.0f;
// 漫反射系数
float kd = 2.1f;
using (SKPaint paint = new SKPaint())
{
paint.IsAntialias = true;
// Size text to 90% of canvas width
paint.TextSize = 100;
paint.Typeface = SKTypeface.FromFamilyName("微软雅黑");
float textWidth = paint.MeasureText(TEXT);
paint.TextSize *= 0.9f * info.Width / textWidth;
// Find coordinates to center text
SKRect textBounds = new SKRect();
paint.MeasureText(TEXT, ref textBounds);
// 定义光源目标位置
var target = new SKPoint3(info.Rect.MidX/2, info.Rect.MidY, 0);
float xText = info.Rect.MidX - textBounds.MidX;
float yText = info.Rect.MidY - textBounds.MidY;
// 创建聚光灯漫反射滤镜
paint.ImageFilter = SKImageFilter.CreateSpotLitDiffuse(
location, target, specularExponent, cutoffAngle, lightColor, surfaceScale, kd);
canvas.DrawText(TEXT, xText, yText, paint);
}
CreateSpotLitSpecular聚光阴面反射滤镜
public static SkiaSharp.SKImageFilter CreateSpotLitSpecular (SkiaSharp.SKPoint3 location, SkiaSharp.SKPoint3 target, float specularExponent, float cutoffAngle, SkiaSharp.SKColor lightColor, float surfaceScale, float ks, float shininess, SkiaSharp.SKImageFilter input = default, SkiaSharp.SKImageFilter.CropRect cropRect = default);
创建一个聚光阴面反射滤镜。这个滤镜可以用来在图像上添加一个类似于聚光灯效果的高光部分,以增强图像的视觉效果。
var canvas = e.Surface.Canvas;
var info = e.Info;
canvas.Clear(SKColors.White);
const string TEXT = "SkiaSharp绘图";
// 定义光源位置
var location = new SKPoint3(100, 100, 5);
// 镜面反射指数
float specularExponent = 0.5F;
// 光锥截止角度
float cutoffAngle = 30.0f;
// 光源颜色
var lightColor = SKColors.LightGreen;
// 表面缩放值
float surfaceScale = 1.0f;
// 漫反射系数
float ks = 0.8f;
float shininess = 1.0f;
using (SKPaint paint = new SKPaint())
{
paint.IsAntialias = true;
// Size text to 90% of canvas width
paint.TextSize = 100;
paint.Typeface = SKTypeface.FromFamilyName("微软雅黑");
float textWidth = paint.MeasureText(TEXT);
paint.TextSize *= 0.9f * info.Width / textWidth;
// Find coordinates to center text
SKRect textBounds = new SKRect();
paint.MeasureText(TEXT, ref textBounds);
// 定义光源目标位置
var target = new SKPoint3(info.Rect.MidX / 2, info.Rect.MidY, 0);
float xText = info.Rect.MidX - textBounds.MidX;
float yText = info.Rect.MidY - textBounds.MidY;
paint.ImageFilter = SKImageFilter.CreateSpotLitSpecular(
location, target, specularExponent, cutoffAngle, lightColor, surfaceScale, ks, shininess);
canvas.DrawText(TEXT, xText, yText, paint);
}
CreateTile平铺
public static SkiaSharp.SKImageFilter CreateTile (SkiaSharp.SKRect src, SkiaSharp.SKRect dst, SkiaSharp.SKImageFilter input);
平铺图像到绘图表面。
var canvas = e.Surface.Canvas;
var info = e.Info;
canvas.Clear(SKColors.White);
if (skBmp == null) skBmp = SKBitmap.Decode(@"Images\wall.png");
//if (skImg == null) skImg = SKImage.FromBitmap(skBmp);
// 定义源矩形区域(将被平铺的图像区域)
var srcRect = new SKRectI(0, 0, skBmp.Width, skBmp.Height);
// 定义目标矩形区域(图像将被平铺到的区域)
var dstRect = new SKRectI(0, 0, info.Width,info.Height);
using (var filter = SKImageFilter.CreateTile(srcRect, dstRect))
using (var paint = new SKPaint())
{
paint.FilterQuality = SKFilterQuality.High;
paint.ImageFilter = filter;
canvas.DrawBitmap(skBmp, 0,0, paint);
}
将一个小的墙图像,平铺到整个画布上。
ImageFilter回顾
总算把ImageFilter的相关创建滤镜方法过了一遍,希望在以后使用时可以翻看,但其中的细节还需要花更多的时间深入。
-
Alpha 阈值滤镜
CreateAlphaThreshold
:创建一个图像滤镜,用于采样一个区域。
-
算术混合滤镜
CreateArithmetic
:创建一个应用指定算术混合的图像滤镜。
-
混合模式滤镜
CreateBlendMode
:创建一个应用混合模式的图像滤镜。
-
模糊滤镜
CreateBlur
:创建一个应用模糊效果的图像滤镜。
-
颜色滤镜
CreateColorFilter
:创建一个应用颜色滤镜的图像滤镜。
-
组合滤镜
CreateCompose
:创建一个先应用内部滤镜,然后应用外部滤镜的图像滤镜。
-
膨胀滤镜
CreateDilate
:创建一个对位图像素应用膨胀的图像滤镜。
-
位移映射滤镜
CreateDisplacementMapEffect
:创建一个应用位移映射的图像滤镜。
-
远光漫反射滤镜
CreateDistantLitDiffuse
:创建一个应用远光漫反射照明的图像滤镜。
-
远光镜面反射滤镜
CreateDistantLitSpecular
:创建一个应用远光镜面反射照明的图像滤镜。
-
阴影滤镜
CreateDropShadow
:创建一个应用阴影效果的图像滤镜。CreateDropShadowOnly
:创建一个只有阴影效果的图像滤镜。
-
腐蚀滤镜
CreateErode
:创建一个对位图像素应用腐蚀的图像滤镜。
-
图像滤镜
CreateImage
:创建一个绘制图像的图像滤镜。
-
放大滤镜
CreateMagnifier
:创建一个放大位图区域的图像滤镜。
-
矩阵滤镜
CreateMatrix
:创建一个应用变换矩阵的图像滤镜。
-
卷积滤镜
CreateMatrixConvolution
:创建一个应用 NxM 图像处理核的图像滤镜。
-
合并滤镜
CreateMerge
:创建一个合并两个图像滤镜的图像滤镜。
-
偏移滤镜
CreateOffset
:创建一个平移绘制位图的图像滤镜。
-
绘制滤镜
CreatePaint
:创建一个绘制画笔的图像滤镜。
-
图片滤镜
CreatePicture
:创建一个绘制图片的图像滤镜。
-
点光漫反射滤镜
CreatePointLitDiffuse
:创建一个应用点光漫反射照明的图像滤镜。
-
点光阴面反射滤镜
CreatePointLitSpecular
:创建一个应用点光阴面反射照明的图像滤镜。
-
聚光灯漫反射滤镜
CreateSpotLitDiffuse
:创建一个应用聚光灯漫反射照明的图像滤镜。
-
聚光阴面反射滤镜
CreateSpotLitSpecular
:创建一个应用聚光光阴面反射照明的图像滤镜。
-
平铺滤镜
CreateTile
:创建一个平铺绘制图像的图像滤镜。