如何:用图像纹理填充形状

可以使用 Image 类和 TextureBrush 类,用纹理填充封闭形状。

示例

以下示例用图像填充椭圆形。 该代码构造了一个 Image 对象,然后将 Image 对象的地址作为参数传递给 TextureBrush 构造函数。 第三个语句缩放图像,第四个语句用缩放后的图像的重复副本填充椭圆形。

在以下代码中,Transform 属性包含在绘制图像之前应用于该图像的转换。 假设原始图像的宽度为 640 像素,高度为 480 像素。 转换通过设置水平和垂直缩放值将图像缩小到 75×75。

注意

在以下示例中,图像大小为 75×75,椭圆形的大小为 150×250。 由于图像小于它填充的椭圆形,因此用该图像平铺椭圆形。 平铺是指图像在水平和垂直方向重复,直到达到形状的边界。 有关平铺的详细信息,请参阅如何:使用图像平铺形状

Image image = new Bitmap("ImageFile.jpg");
TextureBrush tBrush = new TextureBrush(image);
tBrush.Transform = new Matrix(
   75.0f / 640.0f,
   0.0f,
   0.0f,
   75.0f / 480.0f,
   0.0f,
   0.0f);
e.Graphics.FillEllipse(tBrush, new Rectangle(0, 150, 150, 250));
Dim image As New Bitmap("ImageFile.jpg")
Dim tBrush As New TextureBrush(image)
tBrush.Transform = New Matrix( _
   75.0F / 640.0F, _
   0.0F, _
   0.0F, _
   75.0F / 480.0F, _
   0.0F, _
   0.0F)
e.Graphics.FillEllipse(tBrush, New Rectangle(0, 150, 150, 250))

编译代码

前面的示例专用于 Windows 窗体,它需要 PaintEventArgse,后者是 Paint 事件处理程序的参数。

另请参阅