1. c语言图像处理
c语言不自带图形处理方面的东西。TC特有的头文件graphics.h,其他编译环境都用不了,可移植性是零。而且TC实在太老,与现在c语言标准差距非常大。基本是无法运行现在的代码。所以不太建议你用它。
非要用纯c,可以自己写函数调用WindowsAP和GUI接口。而且需要包含windows.h头文件。
网上有个大神用c—free写的代码在附件里。
/*
纯C通过WindowsAPI编写的基本Windows图形界面
整理加原创,基本上每一句代码都有注释
通过C-Free3.5编译
*/
#include<string.h>//这个头文件在扩展名为.c时是不需要加的
#include<windows.h>//windowsapi必须包含的头文件
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数的前向声明
//参数说明:
//HINSTANCEhInstance当前实例句柄
//HINSTANCEhPrevInstance以前版本的遗留产物,现在总是置为NULL
//LPSTRlpCmdLine命令行的产生,可以从开始->获得程序运行的参数,由此传入
//intnCmdShow程序最初的显示模式,正常,最大化或最小化
//主函数的入口是WinMain,类型为int
//WINAPI标志是一种特定的调用,它定义了一种生成机器代码和放置函数参数的方式
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpcmdLine,intnCmdShow)
{
//TCHAR,TEXT都是统一单字节和双字节字符的类型,建议使用
staticTCHARszAppName[]=TEXT("MyFirstWindows");
staticTCHARszClassName[]=TEXT("MFWClass");
HWNDhwnd;//一定一个窗口句柄
MSGmsg;//定义一个消息结构体
WNDCLASSwndclass;//定义一个WNDCLASS结构用于注册窗口
wndclass.style=CS_HREDRAW|CS_VREDRAW;//窗口类的类风格,每当水平和垂直大小改变时完全刷新窗口
wndclass.lpfnWndProc=WndProc;//此窗口类所使用的窗口函数的入口地址
wndclass.cbClsExtra=0;//用于在类结构中预留一些额外的空间
wndclass.cbWndExtra=0;//用于在windows内部保存的窗口结构中预留一些额外的空间
wndclass.hInstance=hInstance;//指定所在程序的实例句柄
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//定制图标
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//定制鼠标图形
wndclass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);//定义背景颜色
wndclass.lpszMenuName=NULL;//指定窗口类的菜单
wndclass.lpszClassName=szClassName;//指定窗口类的类名
//注册窗口,参数为指向WNDCLASS结构的指针
//如果注册不成功,则弹出一个对话框说明情况
//MessageBox是仅有的可以在旧版本和新版本windows都可以运行的对话框
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("!"),szAppName,MB_ICONERROR);
return0;
}
//创建窗口
hwnd=CreateWindow(
szClassName,//窗口类的名称
TEXT("Title:MyFirstWindowsProgram.这里是标题"),//窗口标题
//WS_OVERLAPPEDWINDOW,//窗口显示风格,这行实际是一个预定义,相当于下面的集合,可以单独设置
WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX,
CW_USEDEFAULT,//初始x方向的位置
CW_USEDEFAULT,//初始y方向的位置
CW_USEDEFAULT,//初始x方向的大小
CW_USEDEFAULT,//初始y方向的大小
NULL,//父窗口句柄
NULL,//菜单句柄
hInstance,//程序实例句柄
NULL);//创建参数
//显示窗口,第一个参数hwnd是CreateWindow所创建的窗口的句柄
//第二个参数nCmdShow是主函数给的,由快捷方式获得
ShowWindow(hwnd,nCmdShow);
//刷新窗口,给窗口函数,在本程序中即WndProc发送一个WM_PAINT
UpdateWindow(hwnd);
//消息循环
while(GetMessage(&msg,NULL,0,0))//接受自己创建的所有窗口的所有消息
{
TranslateMessage(&msg);//将msg结构体传给windows以进行一些键盘转换,即将击键消息转换为字符消息
DispatchMessage(&msg);//再次将msg结构体传给windows,由windows将该消息发送给适当的窗口函数
}
return(int)msg.wParam;
}
//窗口函数
//参数说明:
//HWNDhwnd,接受消息的窗口句柄,由CreateWindow函数返回
//UINTmessage,消息标志符,用以标识消息,每个消息均有一个唯一对应的消息标识符
//WPARAMwParam,是WORDPARAM的意思,一个32位的消息参数,其含义和数值根据消息的不同而不同
//LPARAMlParam,是LONGPARAM的意思,一个32位的消息参数,其值和消息有关
//CALLBACK函数指由程序员定义,编程实现,而由windows系统调用的函数
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
HDChdc;//定义一个设备描述表句柄结构体
//定义一个PAINTSTRUCT的绘制信息结构体,
//其包含了包含了当前无效矩形区域的坐标和其他信息,用于刷新用户区的内容
PAINTSTRUCTps;
RECTrect;//定义一个RECT结构体,其有left,top,right,bottom四个域
//处理传进的各种消息
switch(message)
{
//窗口创建
caseWM_CREATE:MessageBox(NULL,"MessageContent:ThisisWM_CREATE,这是WM_CREATE。",
"MessageTiTle这是对话框的标题",MB_OK);
return0;
//窗口绘制
caseWM_PAINT:hdc=BeginPaint(hwnd,&ps);//由BeginPaint开始,返回设备描述表以开始绘图
GetClientRect(hwnd,&rect);//获取用户区域的大小
//格式话文本输出
DrawText(hdc,TEXT("WindowsContent:Iamadeveloper.我为计算机而生。"),
-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
EndPaint(hwnd,&ps);//以EndPaint结束,释放设备描述表句柄
return0;
//窗口消亡
caseWM_DESTROY:MessageBox(NULL,"MessageContent:ThisisWM_DESTROY,这是WM_DESTROY。",
"MessageTiTle这是对话框的标题",MB_OK);
PostQuitMessage(0);
return0;
}
//凡是窗口函数不予处理的消息应交由windows默认消息处理函数DefWindowProc处理
returnDefWindowProc(hwnd,message,wParam,lParam);
}
2. c语言图形处理函数怎么用
#include <iostream>
#include <windows.h>
using namespace std;
/************************************************/
/*参数说明:
char *pszDestPath为需要遍历的目标路径
/************************************************/
EnmuDirectory(char *pszDestPath, int& sum)
{
//此结构说明参MSDN
WIN32_FIND_DATA FindFileData;
//查找文件的句柄
HANDLE hListFile;
//绝对路径,例:c:\windows\system32\cmd.exe
char szFullPath[MAX_PATH];
//相对路径
char szFilePath[MAX_PATH];
//构造相对路径
wsprintf(szFilePath, "%s\\*", pszDestPath);
//查找第一个文件,获得查找句柄,如果FindFirstFile返回INVALID_HANDLE_VALUE则返回
if((hListFile = FindFirstFile(szFilePath, &FindFileData)) == INVALID_HANDLE_VALUE)
{
//查找文件错误
return 1;
}
else
{
do
{
if( lstrcmp(FindFileData.cFileName, TEXT(".")) == 0 ||
lstrcmp(FindFileData.cFileName, TEXT("..")) == 0 )
{
continue;
}
//构造全路径
wsprintf(szFullPath, "%s\\%s", pszDestPath, FindFileData.cFileName);
//读取文件属性,如果不是文件夹
if(!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
char *pszFileType = NULL;
pszFileType = &(FindFileData.cFileName[strlen(FindFileData.cFileName) - 3]);
if(!stricmp(pszFileType, "txt"))
{
cout<<FindFileData.cFileName<<endl;
++sum;
}
}
//如果是文件夹,则递归调用EnmuDirectory函数
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
EnmuDirectory(szFullPath, sum);
}
//循环,查找下一个文件
}while(FindNextFile(hListFile, &FindFileData));
}
//关闭句柄
FindClose(hListFile);
//清空结构。可有可无的一句代码。函数退出会自动清空。
ZeroMemory(&FindFileData, sizeof(FindFileData));
return 0;
}
int main()
{
int sum = 0;
EnmuDirectory("D:", sum);
3. 如何用c语言作出有图形界面的小程序
那需要学VC。确切的说是要学MFC。
MFC编图形化程序也是很麻烦的,难学,繁琐。
其实你可以再学Java或者C#。
Java本身也不适合做图形化应用程序,但是比MFC要简单得多。
C#则是当前做图形化程序最简单高效的了,不需要编程单靠鼠标拖拽就能做出图形界面。特别是C#的WPF图形框架更是把图形化编程简化如神行到了极限。
所以强烈建议学C#。
C#语言综合Java和C++的优点。Java和C++都源自C语言。所以学C#之前最好先学一下C++,C、C++、C#可以说是一脉相承,向下兼容的。
总之,学图形化编程比较好的顺序是:
C(结构化语言渣哗,入门)-> C++(面向对象语言,铺垫) -> C# (享受快速图形化开发吧)
忘解释那几个名词了,补上:
集成瞎姿开发环境:就是IDE,一类开发工具。
你的代码本来可以直接在记事本里写完,然后命令行下调用编译器编译就能执行了。
集成开发环境将代码编辑、代码编译执行、代码调试功能集成在一起(甚至集成更多功能),使开发人员的开发变得更加高效。比如Visual C++ 6.0就是一个集成开发环境,还有Eclipse、CodeBlocks、Visual Studio等都是。
4. C语言图形处理代码解释
解释什么? 很清楚啊!
5. 纯C语言实现图像处理
这个不难吧?虽然我不用c,可是说下怎么做,首先打开一个BMP文件,然后按照bmp格式解析到一个数组中,接着进行二值化(这个有很多方法),最后将数组中的数据写入一个新的BMP文件就可以了。
6. 如何用C语言软件画图
matalab是我所知比较好的数学关系处理软件(当然简单一些的用excel就绰绰有余了),C语言软件中turbo-c显得就力不从心了,而且要进行比较复杂的编程语言转换,这个对于初学者太抽象了(命令式,可以类比于dos了··),如果你还是想借助c语言类软件的话,推荐用图形界面的软件,VB适于初学者,在之后可以选择学习VC(其中VC就已经足够强大了),另外要开发用于手机上的程式,就要学习java了··
(其他工具软件autoCAD也行,立体建模使用3d max 或者玛雅··)
以上仅供参考,希望对您有所帮助
7. C语言打印图案的原理,麻烦详细解释,最好有配图和文字解说,本人大一,正在困惑中
打印图案有多种。
一、有规律的图形,比如正方形,菱形,圆 ......等等。这些都可以找图形规律(比如菱形上半部分依次下层比上层多2个字符),再通过简单的参数循环,用单一字符打印出来(printf就可以了)。这种比较简单,网上也有很多现成的代码可以参考,比如:【引用】c语言打印规则图形
二、复杂的图像,比如一张照片,可以写代码把图片转换成2值图(2值图就是把图片中每个像素用0或1数字矩阵来表示)然后再打印转换后的01矩阵,这个比较复杂,网上也有很多现成的转2值图代码。【引用】图片二值化程序
当然你也可以直接用网上工具把图片转换成字符图(就是贴吧里经常用的那种字符组成的图案),然后保存到文件中,c语言写读取文件打印。(或者直接把字符全部赋值到printf中打印,但这样就没啥意思了)。【引用】在线图片转字符画
8. C语言中,图像处理函数的使用
Tc中用initgraph()函数可以切换到图形模式,用closegraph()可以从图形模式切换回字符模式。
initgraph()和closegraph()都是图形函数,使用图形函数必须包括头文件"graphics.h"。
void far i nitgraph(int far *graphdriver, int far *graphmode,char far *pathtodriver);
graphdriver是指向图形驱动序号变量的指针,
graphmode是在graphdriver选定后,指向图形显示模式序号变量的指针,
pathtodriver表示存放图形驱动文件的路径。
图形驱动序号不同,图形驱动文件也不同。序号为VGA图形驱动对应"egavga.bgi"这个图形驱动文件。
"egavga.bgi"一般在 Tc目录下
例如:
-------
#include <graphics.h>
int Drive,Mode=DETECT;
initgraph(&Drive,&Mode,""); //图形显示器、显示模式、路径自动检测
运行时需要在当前目录下存在 EGAVGA.BGI文件
在TC\BGI目录底下
-------
如果编译后的.exe文件在另外一个目录(如编译后的.exe文件在D:\MyTc 目录下,而编译器的程序和.BGI文件在C:\Turboc\bin 目录下,则需要填上BGI文件的路径
例如:
initgraph(&Drive,&Mode,"C:\\Turboc\\bgi");