在vc GDI或GDI+中分别提供有CreateHatchBrush和HatchBrush的函数和类,但它们提供的模版图形尺寸都是固定的。例如:HS_DIAGCROSS类型的模版只是斜45度交叉的线,那我如何改变模版网眼的大小呢?有没有别的方法?如果自己编写多边型填充算法很麻烦的,还不一定能处理好。希望高手提供线索。

解决方案 »

  1.   

    绘图引擎默认提供的Hatch和点划线本质上都是(黑白)位图片断形式,
    实现容易但可扩展性极低。要想自定义Hatch和点划线的细节,只有抛开
    绘图引擎提供的自己实现绘制。我曾参与过的一个项目是自制了专用于底纹和花边的字体,用字符拼接的
    方式生成底纹和花边。也可以指定普通字符生成字符花边。字符拼接方式
    的好处是,片断(字符)是一个整体,生成底纹或花边不再需要关注片断
    的绘制,只需控制片断的定位就可以了。(花边拐角是个麻烦的地方)。