本文主要是介绍C语言线条样式和填充样式都有哪些? 怎样设置?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、问题
线条样式和填充样式都有哪些?该怎样设置?
二、解答
在画图前,要先设置线条样式和填充样式,它们直接决定图形的显⽰效果。
1.线条样式
(1) setlinestyle( ) 函数。
void far setlinestyle(int linestyle, unsigned upattem,int thickness);/*指定画线的样式(linestyle 或 upatttern)和宽度 (thickness)*/
线条样式常量值如下:
- SOLID LINE=0:实线。
- DOTTED LINE=1: 点线。
- CENTER LINE=2:中⼼线。
- DASHED LINE=3:点画线。
- USERBIT LINE=4:⽤户定义线。
画线宽度常量值如下:
- NORM WIDTH=1:⼀点宽。
- THICK WIDTH-3:三点宽。
在没有对线条特性进⾏设定之前,TC ⽤其默认值,即⼀点宽的实线。
对于 upattern,只有 linestyle 选择 USERBITLINE 时才有意义(选择其他线型, uppattern 取0即可)。uppattern 的16 位⼆进制数的每⼀位代表1像素,其值为1显⽰,为0 则不显⽰。
(2)getlinesettings( )函数。
void far getlinesettings(struct linesettingstypefar *lineinfo); /*将有关线条的信息存放到由 lineinfo 指向的结构中*/
其中 linesettingstype 的结构如下:
struct linesettingstype
{int linestyle;unsigned upattern;int thickness;
}
例如,下⾯两句程序可以读出当前线条的特性。
struct linesettingstype *info;
getlinesettings(info);
(3) setwritemode(函数。
void far setwritemode(int mode);/*⽤于指定画线的⽅式*/
如果 mode=0,则表⽰画线时将所画位置的原来信息覆盖(这是 TC 的默认⽅式)。如果 mode=1,则表⽰画线时⽤当前特性的线与所画之处原有的线进⾏异或(XOR)操作, 实际上画出的线是原有线与当前指定的线进⾏异或后的结果。因此,当线的特性不变,进 ⾏两次画线操作相当于没有画线。
有关线型设定和画线函数的实例程序如下。
#include <stdio.h>
#include <alloc.h>
#include <graphics.h>
int main()
{int driver, mode, ij;struct linesettingstype lineset;detectgraph(&driver, &mode);initgraph(&driver, &mode, "d:\\tc");for (i = 0; i < 4; i++){setlinestyle(i, 0, 2 * j + 1);line(100, 100 + (i * 4 + j) * 20, 300, 100 + (i * 4 + j) * 20);}setlinestyle(4, 0xb77f, 1);line(100, 400, 300, 400);getch();closegraph();
}
2. 设置填充样式
(1) setfillstyle( ) 函数。
void far setfillstyle(int pattern, int color);/*设置填充模式和填充颜⾊*/
填充模式 patternr 的枚举定义如下。
enum fill_patterns
{EMPTY_FILL, /*0背景颜⾊填充*/SOLID_FILL, /*1实⼼填充*/LINE_FILL, /*2 ---填充1 */LTSLASH_FILL, /*3///填充*/SLASH_FILL, /*4 粗///填充*/BKSLASH_FILL, /*5 粗⼼填充 */LTBKSLASH_FILL, /*6\\\填充*/HATCH_FILL, /*7 直⽅⽹格填充*/XHATCH_FILL, /*8 斜⽹格填充*/INTERLEAVE_FILL, /*9 间隔点填充*/WIDE_DOT_FILL, /*10 密集点填充*/CLOSE_DOT_FILL, /*11密集点填充*/USER_FILL /*12 ⽤户定义 */
};
(2) setfillpattern( ) 函数。
函数的功能是选择⽤户定义的填充模式,与 setfillstyle( ) 功能相近,后者可以设置系统预定义的填充样式。sestfillpattern 的样式定义⽅法,⽤ 8*8 的点阵说明,C语⾔中⼀个字符占⼀个字节,8位⼆进制,可构成8*8 点阵的⼀⾏,8个字符即完整8*8点阵。
(3) getfilsettings( ) 函数。
void getfillsettings(struct fillsettingstype far *fillinfo);
函数的功能是获取系统预定义的填充模式和填充颜⾊放⼊ filinfo 结构中。
struct fillsettingstype
{int pattern;/*现⾏填充模式*/ int color;/*现⾏填充模式*/
};
(4) getfillpattern()函数。
void getfillpattern(char far *pattern);
函数的功能是获取⽤户定义的填充模式
#include <stdio.h>
#include <graphics.h>
int main()
{int driyer, mode, i, j;char buft[100];char pattern[8] = {0x80, 0x80, 0x80, Oxfr, Ox ff, 0x00, 0x00, 0x00};detectgraph(&driver, &mode);initgraph(&driver, &mode, "d:ltc");settextjustify(CENTER TEXT, CENTER_ TEXT);for (i = 0; i < 3; i++){setfillstyle(i * 4 + j, 3);fillellipse(50 + j * 100, 50 + i * 100, 40, 40);printf(buf, "pattern=%d", 4 + j);outtextxy(50 + j * 100, 50 + i * 100 + 50, buf);}setfillpattern(pattern, 3);fillellipse(50, 350, 40, 40);outtextxy(50, 410, "user define");getch();closegraph();
}
三、总结
在不需要特殊效果的时候,不设置线条样式和填充样式,即直接使⽤其默认样式实线和实⼼填充,就可以得到我们所需要的效果。
这篇关于C语言线条样式和填充样式都有哪些? 怎样设置?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!