高手进:如何在WINDOWS下用C语言编写图形函数1、图形编程都是用的纯C函数库,
比如Windows的GDI,还有DirectX,以及开源的OpenGL 。这些都是纯C库,也就是说会C语言就能开发图形界面和游戏了 。C++当然也可以调用这些函数库,但不是必要的 。
2、学GDI的话最好的书是《Windows程序设计.chm》这个文档,这东西网上到处都有 。
学OpenGL的话,有个网站Nehe有完整的教学 。人翻译了这个教程的中文版,google
“Nehe
opengl”
就能找到了 。
c语言高手帮帮忙,谢谢?。。?编写程序,编写一个函数输出如下图形,ls的兄弟,题目要求是用函数voiddraw(n, c)来实现功能的 。。
下面的程序在vc6.0中通过编译 。
#include stdio.h
void draw(int n,char c)
{
int i,j,k;
for(i=1;i=n;i++)
{
for(j=1;j=n-i;j++)
printf(" ");
for(k=1;k=2*(i-1)+1;k++)
printf("%c",c);
printf("\n");
}
}
main()
{
int n;
char c;
scanf("%d%c",n,c);
draw(n,c);
}
C语言如何画图framebuffer(帧缓冲) 。
帧的最低数量为24(人肉眼可见)(低于24则感觉到画面不流畅) 。
显卡与帧的关系:由cpu调节其数据传输速率来输出其三基色的配比 。
三基色:RGB(红绿蓝) 。
在没有桌面和图形文件的系统界面,可以通过C语言的编程来实现在黑色背景上画图!
用下面的代码,在需要的地方(有注释)适当修改,就能画出自己喜欢的图形!
PS:同样要编译运行后才能出效果 。
#include stdio.h
#include sys/mman.h
#include fcntl.h
#include linux/fb.h
#include stdlib.h
#defineRGB888(r,g,b)((r0xff) 16 | (g0xff)8 | (b0xff))
#defineRGB565(r,g,b)((r0x1f) 11 | (g0x3f)5 | (b0x1f))
int main()
{
int fd = open("/dev/fb0", O_RDWR);
if(fd0){
perror("open err. \n");
exit(EXIT_FAILURE);
printf("xres: %d\n", info.xres);
printf("yres: %d\n", info.yres);
printf("bits_per_pixel: %d\n", info.bits_per_pixel);
size_t len = info.xres*info.yres*info.bits_per_pixel3;
unsigned long* addr = NULL;
addr = mmap(NULL, len, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
if(addr == (void*)-1){
perror("mmap err. \n");
我c语言编写函数,函数功能,输出如下图形 。void printscr(int n , char gl) {//输出N 个 GL
for (int i = 0 ,in ; i ++)
printf("%c",gl);
}
int main(){
intn, l = 13 , r = 6 , k = 0 ;
printscr(l,'*');
while ( r = 1r = 6){
printscr(r,'*');printscr(l - r*2,' '); printscr(r,'*'); printscr(1,'/n');
if (k == 0 ) r --;
if ( r == 1 ) k = 1;
if (k == 1 ) r ++;
}
printscr(l,'*');
return 0;
}
求一个纯C语言绘图函数SDL可以做到 。给你贴个源码:
#includestdio.h
#includestdlib.h
#includeunistd.h
#includeSDL/SDL.h
#includeSDL/SDL_image.h
//函数声明
int Init(void);
SDL_Surface *createScreen(int width,int height,int bpp,Uint32 flags);
void destroyScreen(SDL_Surface *screen);
SDL_Surface *loadImageBMP(char *filename);
void loadImage(char *filename,SDL_Surface *screen,int xPos,int yPos);
SDL_Surface *screen;
SDL_Surface *image_handler;
char buffer[10];
int main(int argc,char *argv[])
{
int height=640,width=480;
int bpp=8;
Init();
screen = createScreen(width,height,bpp,SDL_SWSURFACE);
loadImage("./wuyajie.bmp",screen,width/2,height/4);
read(STDIN_FILENO,buffer,1);
destroyScreen(screen);
SDL_Quit();
return 0;
}
int Init(void)
{
if(SDL_Init(SDL_INIT_VIDEO)==-1)
{
fprintf(stderr,"SDL Init Error:%s\n",SDL_GetError());
推荐阅读
- 删除mysql注册表删除不了,mysql删除注册表残留文件
- 华为6se怎么读不出u盘,华为手机读不出u盘
- 安装oracle软件时创建哪些组,oracle安装时不创建数据库
- 关于为什么ppt视频的信息
- java基础代码完整 java代码编写教程
- 手机上u盘文件怎么样看,怎么样把手机文件传到u盘里
- 关注的公众号别人也关注了,我关注了公众号,他能看到我的朋友圈吗
- 大型单机游戏在哪里下载,大型单机去哪下载
- vb.net压缩文件做成 vba压缩文件夹