C语言基础(二)图形编程2
来源:互联网 发布:nginx 400 错误 编辑:程序博客网 时间:2024/04/28 10:45
#include<graphics.h>#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<time.h>int main(void){int a = 0, b = 0, c = 255;int n = -1;int change = 5;int t, x, y;char key;IMAGE start;//1.初始化界面大小initgraph(640, 480);//setbkcolor(BLUE);//cleardevice();loadimage(&start, L"./Image/LookFirst.jpg",640,480);putimage(0, 0, &start);//2.设置字体settextcolor(WHITE);setbkmode(TRANSPARENT);settextstyle(50, 50, L"黑体");outtextxy(120, 120, L"打字游戏");//3.判断有无键盘输入while (!kbhit())//无输入{settextcolor(RGB(a, b, c));settextstyle(25, 25, L"黑体");outtextxy(140, 360, L"请按任意键开始");//进行颜色变化a += change;if ( b == 0 ||b == 255)n = -n;if (n==1){b++;c--;}else{b--;c++;}if (a == 0 || a == 255)change = -change;Sleep(50);}//有输入,刷新背景loadimage(&start, L"./Image/1.jpg", 640, 480);putimage(0, 0, &start);while (1){int x1=0, y1=0, x2=0, y2=0;//矩形坐标LINESTYLE p;p.style = PS_SOLID;srand(time(NULL));t = rand() % 26 + 65;//随机生成26个大写字母x = rand() % 620;//横坐标随机生成settextcolor(BLACK);settextstyle(20, 10, L"TIMES NEW ROMAN");setbkmode(TRANSPARENT);setlinecolor(RED);for (y = 0; y < 480; y++){setlinestyle(&p);clearrectangle(x1,y1,x2,y2);putimage(0, 0, &start);x1 = x - 5;y1 = y-5;x2 = x + 25;y2 = y + 30;if (kbhit()){key = getch();if (key == t){cleardevice();break;}else if (key == 27)//按下Esc退出游戏{return 0;}}rectangle(x1, y1, x2, y2);outtextxy(x, y, t);Sleep(20);}clearrectangle(x1, y1, x2, y2);}closegraph();return 0;}
1.void loadimage(
IMAGE* pDstImg, //保存图像的IMAGE对象指针
LPCTSTR pImgFile, //图片文件名
int nWidth=0, //图片拉伸宽度
int nHeight=0, //图片拉伸高度
bool bResize=false) //是否调整IMAGE大小以适应图片
分为从图片文件获取图像和从资源文件获取图像(bmp/jpg/gif/emf/wmf/ico)
【当从资源文件获取图像时:参数pImgFile 换成 pResType(资源类型)和pResName(资源名称)】
2.putimage(
int dstX, // 绘制位置的 x坐标
int dstY, // 绘制位置的 y坐标
IMAGE *pSrcImg, // 要绘制的 IMAGE对象指针
DWORD dwRop = SRCCOPY // 三元光栅操作码
);
三元光栅操作码(即位操作模式),支持全部的 256 种三元光栅操作码,常用的几种如下:
值
含义
DSTINVERT
绘制出的像素颜色 = NOT 屏幕颜色
MERGECOPY
绘制出的像素颜色 = 图像颜色 AND 当前填充颜色
MERGEPAINT
绘制出的像素颜色 = 屏幕颜色 OR (NOT 图像颜色)
NOTSRCCOPY
绘制出的像素颜色 = NOT 图像颜色
NOTSRCERASE
绘制出的像素颜色 = NOT (屏幕颜色 OR 图像颜色)
PATCOPY
绘制出的像素颜色 = 当前填充颜色
PATINVERT
绘制出的像素颜色 = 屏幕颜色 XOR 当前填充颜色
PATPAINT
绘制出的像素颜色 = 屏幕颜色 OR ((NOT 图像颜色) OR 当前填充颜色)
SRCAND
绘制出的像素颜色 = 屏幕颜色 AND 图像颜色
SRCCOPY
绘制出的像素颜色 = 图像颜色
SRCERASE
绘制出的像素颜色 = (NOT 屏幕颜色) AND 图像颜色
SRCINVERT
绘制出的像素颜色 = 屏幕颜色 XOR 图像颜色
SRCPAINT
绘制出的像素颜色 = 屏幕颜色 OR 图像颜色
注:
(1) AND / OR / NOT / XOR 为布尔运算。
(2) "屏幕颜色"指绘制所经过的屏幕像素点的颜色。
(3) "图像颜色"是指通过 IMAGE 对象中的图像的颜色。
(4) "当前填充颜色"是指通过 setfillcolor 设置的用于当前填充的颜色。
3.void setbkmode(int mode); 设置图案填充和文字输出时的背景模式
mode指定图案填充和文字输出时的背景模式,可以是以下值:
值
描述
OPAQUE
背景用当前背景色填充(默认)。
TRANSPARENT
背景是透明的。
4.void setlinecolor(COLORREF color); 设置当前画线颜色
5.void setlinestyle(
int style,
int thickness = 1,
const DWORD *puserstyle = NULL,
DWORD userstylecount = 0
);
参数可以用LINESTYLE * pstyle 指针代替
style:画线样式,由直线样式、端点样式、连接样式三类组成。可以是其中一类或多类的组合。同一类型中只能指定一个样式。
直线样式可以是以下值:
值
含义
PS_SOLID
线形为实线。
PS_DASH
线形为:------------
PS_DOT
线形为:············
PS_DASHDOT
线形为:-·-·-·-·-·-·
PS_DASHDOTDOT
线形为:-··-··-··-··
PS_NULL
线形为不可见。
PS_USERSTYLE
线形样式为用户自定义,有参数 puserstyle 和 userstylecount 指定。
宏 PS_STYLE_MASK 是直线样式的掩码,可以通过该宏从画线样式中分离出直线样式。
端点样式可以是以下值:
值
含义
PS_ENDCAP_ROUND
端点为圆形。
PS_ENDCAP_SQUARE
端点为方形。
PS_ENDCAP_FLAT
端点为平坦。
宏 PS_ENDCAP_MASK 是端点样式的掩码,可以通过该宏从画线样式中分离出端点样式。
连接样式可以是以下值:
值
含义
PS_JOIN_BEVEL
连接处为斜面。
PS_JOIN_MITER
连接处为斜接。
PS_JOIN_ROUND
连接处为圆弧。
宏 PS_JOIN_MASK 是连接样式的掩码,可以通过该宏从画线样式中分离出连接样式。
Thickness:线的宽度,以像素为单位。
puserstyle:用户自定义样式数组,仅当线型为 PS_USERSTYLE 时该参数有效。
数组第一个元素指定画线的长度,第二个元素指定空白的长度,第三个元素指定画线的长度,第四个元素指定空白的长度,以此类推。
userstylecount:用户自定义样式数组的元素数量。
示例:
以下局部代码设置画线样式为点划线:
setlinestyle(PS_DASHDOT);
以下局部代码设置画线样式为宽度 3 像素的虚线,端点为平坦的:
setlinestyle(PS_DASH | PS_ENDCAP_FLAT, 3);
以下局部代码设置画线样式为宽度 10 像素的实线,连接处为斜面:
setlinestyle(PS_SOLID | PS_JOIN_BEVEL, 10);
以下局部代码设置画线样式为自定义样式(画 5 个像素,跳过 2 个像素,画3 个像素,跳过1 个像素……),端点为平坦的:
DWORD a[4] = {5, 2, 3, 1};
setlinestyle(PS_USERSTYLE | PS_ENDCAP_FLAT, 1, a, 4);
6.void rectangle(
int left, //矩形左部 x坐标
int top, //矩形上部 y坐标
int right, //矩形右部 x坐标
int bottom //矩形下部 y坐标
);
图形库拥有很多函数,基本上最常用的就是这几个,要想用好图形库关键还是要通过做项目来学习,这一块就先掌握到这里吧,毕竟还有很多其他东西要学,有时间再做更多的实践
- C语言基础(二)图形编程2
- C语言图形编程(二、图形显示)
- C语言基础(一)图形编程1
- C语言图形编程【2】:图形显示
- [转]C语言图形编程(二) -图形显示
- C语言图形编程
- C语言图形编程
- C语言图形编程
- C语言图形编程
- OpenGL基础图形编程(二)
- C语言图形编程--俄罗斯方块制作(二)源代码
- C语言图形编程【4】:图形文本
- C语言基础(二)
- C语言基础(二)
- C语言基础(二)
- C语言基础(二)
- C 语言基础(二)
- C语言基础(二)
- 用extern组织可跨文件访问的变量
- 虚拟目录指向新域名
- StringMVC下json传值问题
- poj 2393
- caffe 安装( i5 6500, 8G 内存, 显卡GTX1060 6G, 系统:ubuntu 16.04)
- C语言基础(二)图形编程2
- 模糊查询的一种比MySQL的like更好的搜索引擎
- Android BindService问题
- Spring3:AOP的简单实现
- 数据库的设计
- Java SE Development Kit 8 Downloads
- 网上的ASP+Html如何配置运行啊?
- iOS 对源代码进行混淆和加密
- ES6中export及export default的区别