我想画几个函数图像用C语言生成到bmp之类的图片里去

不需要在屏幕上显示函数图像,直接生成到图片里去怎么弄啊?多说了,不需要在屏幕下显示,在linux我至少可以用opengl和cario这两个库在屏幕下显示函数图像,但这不是... 不需要在屏幕上显示函数图像,直接生成到图片里去
怎么弄啊?
多说了,不需要在屏幕下显示,在linux 我至少可以用opengl和cario这两个库在屏幕下显示函数图像,但这不是我要的,我要的是生成函数的图片,最好发下代码,比如生成正弦函数图像的bmp图片(也可以是jpg,png之类的格式)
展开
 我来答
百度网友fde8673
2011-02-09 · TA获得超过423个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:551万
展开全部
Windows下的简单绘图肯定会首先考虑GDI或者GDI+,不过既然LZ都提到Linux了,那就发个平台无关的生成BMP正弦图的代码好了,这个就是最原始的手动生成BMP的代码,其实也不是很复杂。
---------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef long LONG;

#pragma pack(2)

typedef struct {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;

typedef struct {
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;

void saveBitmap()
{
// Define BMP Size
const int height = 600;
const int width = 800;
const int size = height * width * 3;
double x, y;
int index;

// Part.1 Create Bitmap File Header
BITMAPFILEHEADER fileHeader;

fileHeader.bfType = 0x4D42;
fileHeader.bfReserved1 = 0;
fileHeader.bfReserved2 = 0;
fileHeader.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + size;
fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);

// Part.2 Create Bitmap Info Header
BITMAPINFOHEADER bitmapHeader = {0};

bitmapHeader.biSize = sizeof(BITMAPINFOHEADER);
bitmapHeader.biHeight = height;
bitmapHeader.biWidth = width;
bitmapHeader.biPlanes = 3;
bitmapHeader.biBitCount = 24;
bitmapHeader.biSizeImage = size;
bitmapHeader.biCompression = 0; //BI_RGB

// Part.3 Create Data
BYTE *bits = (BYTE *)malloc(size);

// Clear
memset(bits, 0xFF, size);

// Sin Graph
for(x = 0; x < 800; x += 0.5)
{
y = sin(x / 100.0) * 200 + 300;
index = (int)y * 800 * 3 + (int)x * 3;

bits[index + 0] = 255; // Blue
bits[index + 1] = 0; // Green
bits[index + 2] = 0; // Red
}

// Write to file
FILE *output = fopen("output.bmp", "wb");

if(output == NULL)
{
printf("Cannot open file!\n");
}
else
{
fwrite(&fileHeader, sizeof(BITMAPFILEHEADER), 1, output);
fwrite(&bitmapHeader, sizeof(BITMAPINFOHEADER), 1, output);
fwrite(bits, size, 1, output);
fclose(output);
}
}

int main()
{
saveBitmap();

return 0;
}
krnvta
2011-02-08 · TA获得超过1444个赞
知道小有建树答主
回答量:1188
采纳率:50%
帮助的人:286万
展开全部
BMP就是位图文件呀,图像中每个像素的颜色值都保存在BMP文件中。

用C语言显示BMP图片,最直接的方法就是:先将每个像素的颜色值提取出来,再用C语言的画图函数画呗。

你要做的准备工作有两步:1.了解位图文件的结构。2.熟悉C语言的画图函数。
这些网上都能找到。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b31f48690
2011-02-08 · TA获得超过424个赞
知道小有建树答主
回答量:525
采纳率:0%
帮助的人:403万
展开全部
这个……还是MatlAB来的快些……当然,是如果你只是想要函数图的话
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式