求一个纯C语言绘图函数

函数要求egintdraw_image(char*filename,intx,inty,intw,inth)filename是图片的名字,x,y,w,h表示绘图图片的左上... 函数要求eg int draw_image(char* filename,int x,int y,int w,int h)
filename是图片的名字,x,y,w,h表示绘图图片的左上角坐标x,y,以及要绘图图片的宽高。int返回值,表示绘制是否成功,当然,返回值无所依,可以为void
注意,请不要再C++或者MFC中实现功能,MFC的我知道怎么做。我就是想得到命令窗口下WIN32程序,生成一个窗口(opengl的可以做到,但opengl怎么绘图的不清楚了,找了好久不知道怎么办),可以使用这个C函数在窗口中绘图。谢谢帮忙,找了好久,没有头绪。
如果使用C++,MFC的库或者文件的话,请看清我的需求是命令提示符窗口下生成一个窗口,在窗口中绘图,
如果函数测试过可以使用,定重谢加分悬赏。请提出您要多少财富值。我看个人情况尽量满足。
展开
 我来答
霂璇尹凝伪9x
2012-07-06 · TA获得超过195个赞
知道答主
回答量:180
采纳率:0%
帮助的人:102万
展开全部
SDL可以做到。给你贴个源码:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<SDL/SDL.h>
#include<SDL/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());
exit(-1);
}
return 0;
}

/*
创建屏幕,并将屏幕设置为640x480大小
*/
SDL_Surface *createScreen(int width,int height,int bpp,Uint32 flags)
{
SDL_Surface *screen;
if((screen = SDL_SetVideoMode(width,height,bpp,flags))==NULL)
{
fprintf(stderr,"Could not create a screen:%s\n",SDL_GetError());
exit(-1);
}
return screen;
}

/*
加载图片
*/
void loadImage(char *filename,SDL_Surface *screen,int xPos,int yPos)
{
SDL_Surface *image;
SDL_Rect dest;

image = SDL_LoadBMP(filename);

if ( image == NULL ){
fprintf(stderr, "无法加载 %s: %s\n", filename, SDL_GetError());
exit(-1);
}

dest.x = xPos;
dest.y = yPos;

dest.w = image->w;
dest.h = image->h;
SDL_BlitSurface(image,NULL,screen,&dest);
SDL_UpdateRects(screen,1,&dest);

}

void destroyScreen(SDL_Surface * screen)
{
SDL_FreeSurface(screen);
}
jelly279
推荐于2016-11-23 · TA获得超过244个赞
知道小有建树答主
回答量:332
采纳率:0%
帮助的人:98.7万
展开全部
如果要求显示的话, 用过GDI,或者direct draw来显示.如果就是画的话, 你要怎样的画法?意思是只要鼠标点到的地方就生成点?如果那样的不会, 目前的方法是开一块内存,用二维数组表示里面的像素点里的内容,然后自己写一些函数, 类似于draw_a_line(x1, x2, y1,y2);改写数组里的数据.然后通过进程间的通信传送到GDI程序或者Direct draw程序,然后让他显示.
这个办法实在是太笨了. 不过能是自己写的那个图片.不知道你需要不.
冒昧问一下,这是做什么?有没有机会我们能沟通?
追问
自己随便写的函数,闲暇时间自己想写个图片接口,我平时基本上都是用的C语言,很少使用C++等其他语言,但C语言在图片方面的资料太少,不好查找。 请问你的QQ是多少?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流浪诗人chr
2012-07-06 · TA获得超过128个赞
知道答主
回答量:121
采纳率:0%
帮助的人:37.8万
展开全部
可以参考一下SDL,不过这方面的知识我也只是了解一点点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式