源代码

只有在源代码中,才有可能知真像
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Gdi+ 画刷

Posted on 2012-08-22 09:06  eSurfer  阅读(799)  评论(0)    收藏  举报

画刷和填充的形状

闭合的形状(例如,矩形或椭圆)由轮廓和内部组成。轮廓用钢笔绘制,内部用画刷填充。GDI+提供了几种用于填充闭合形状内部的画刷类:SolidBrush、HatchBrush、TextureBrush和GradientBrush。所有这些类都是从Brush类继承的。

1.使用实心画刷

要填充闭合图形,需要有Graphics对象和Brush对象。Graphics对象提供 FillRectangle和FillEllipse这样的方法,Brush对象存储填充的属性,如颜色和图案。Brush对象作为参数之一被传递到填充方法。例如用纯红色填充椭圆:

SolidBrush sb(Color(100,100,100,100));
g.FillEllipse(&sb,10,10,100,100);

效果图:

2.使用阴影画刷

用阴影画刷填充图形时,要指定前景色、背景色和阴影样式。前景色是阴影的颜色。

    HatchBrush hb(HatchStyleHorizontalBrick , Color.Black, Color.Gray);
    g.FillRectangle(&hb,50,150,150,120);

GDI+提供了50多种阴影样式

效果图:

3.使用纹理画刷

有了纹理画刷,就可以用位图中存储的图案来填充图形。例如,假定在磁盘中存储了一个名为MyTexture.bmp的图片,下面的代码通过使用MyTexture.bmp中的图片来填充椭圆。

Image myImage(L"brush.bmp");
TextureBrush th (&myImage); 
g.FillEllipse(&th, 50300150120);

效果:

4.使用渐变画刷

GDI+提供两种渐变画刷:线性和路径。可以使用线性渐变画刷来用颜色(在横向、纵向或斜向移过图形时会逐渐变化的颜色)填充图形。

下面的示例用水平渐变画刷填充一个椭圆,当从椭圆的左边缘向右边缘移动时画刷颜色会由蓝变绿。

LinearGradientBrush lgb(  
        Point(50,450),
        Point(200,450),
        Color.Blue,                   
        Color.Green);  
g.FillEllipse(&lgb,50,450,150,120);

效果图: