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");