求一个纯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的库或者文件的话,请看清我的需求是命令提示符窗口下生成一个窗口,在窗口中绘图,
如果函数测试过可以使用,定重谢加分悬赏。请提出您要多少财富值。我看个人情况尽量满足。 展开
filename是图片的名字,x,y,w,h表示绘图图片的左上角坐标x,y,以及要绘图图片的宽高。int返回值,表示绘制是否成功,当然,返回值无所依,可以为void
注意,请不要再C++或者MFC中实现功能,MFC的我知道怎么做。我就是想得到命令窗口下WIN32程序,生成一个窗口(opengl的可以做到,但opengl怎么绘图的不清楚了,找了好久不知道怎么办),可以使用这个C函数在窗口中绘图。谢谢帮忙,找了好久,没有头绪。
如果使用C++,MFC的库或者文件的话,请看清我的需求是命令提示符窗口下生成一个窗口,在窗口中绘图,
如果函数测试过可以使用,定重谢加分悬赏。请提出您要多少财富值。我看个人情况尽量满足。 展开
3个回答
展开全部
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);
}
#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);
}
展开全部
如果要求显示的话, 用过GDI,或者direct draw来显示.如果就是画的话, 你要怎样的画法?意思是只要鼠标点到的地方就生成点?如果那样的不会, 目前的方法是开一块内存,用二维数组表示里面的像素点里的内容,然后自己写一些函数, 类似于draw_a_line(x1, x2, y1,y2);改写数组里的数据.然后通过进程间的通信传送到GDI程序或者Direct draw程序,然后让他显示.
这个办法实在是太笨了. 不过能是自己写的那个图片.不知道你需要不.
冒昧问一下,这是做什么?有没有机会我们能沟通?
这个办法实在是太笨了. 不过能是自己写的那个图片.不知道你需要不.
冒昧问一下,这是做什么?有没有机会我们能沟通?
追问
自己随便写的函数,闲暇时间自己想写个图片接口,我平时基本上都是用的C语言,很少使用C++等其他语言,但C语言在图片方面的资料太少,不好查找。 请问你的QQ是多少?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以参考一下SDL,不过这方面的知识我也只是了解一点点。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |