C語言寫控制臺程序是無法加圖片的,只能用命令行輸出,最多就是設(shè)置下背景和字體,顏色之類的。如果開發(fā)API窗口程序,完全依賴于操作系統(tǒng)的函數(shù)庫。C語言本身并不提供這類函數(shù)。
創(chuàng)新互聯(lián)是一家專業(yè)提供西華企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、H5網(wǎng)站設(shè)計、小程序制作等業(yè)務(wù)。10年已為西華眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進行中。
下面是windows系統(tǒng)下實現(xiàn)的函數(shù)代碼,第一個參數(shù)是圖片的存放的位置,第二個參數(shù)是窗口句柄。
HRESULT?ShowPic(char?*lpstrFile,HWND?hWnd)
{
HDC?hDC_Temp=GetDC(hWnd);
IPicture?*pPic;
IStream?*pStm;
BOOL?bResult;
HANDLE?hFile=NULL;
DWORD?dwFileSize,dwByteRead;
//打開圖形文件
hFile=CreateFile(lpstrFile,GENERIC_READ,
FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if?(hFile!=INVALID_HANDLE_VALUE)
{
dwFileSize=GetFileSize(hFile,NULL);//獲取文件字節(jié)數(shù)
if?(dwFileSize==0xFFFFFFFF)
return?E_FAIL;
}
else
{
return?E_FAIL;
}
//分配全局存儲空間
HGLOBAL?hGlobal?=?GlobalAlloc(GMEM_MOVEABLE,?dwFileSize);
LPVOID?pvData?=?NULL;
if?(hGlobal?==?NULL)
return?E_FAIL;
if?((pvData?=?GlobalLock(hGlobal))?==?NULL)//鎖定分配內(nèi)存塊
return?E_FAIL;
ReadFile(hFile,pvData,dwFileSize,dwByteRead,NULL);//把文件讀入內(nèi)存緩沖區(qū)
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal,?TRUE,?pStm);
//裝入圖形文件
bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)pPic);
if(FAILED(bResult))
return?E_FAIL;
OLE_XSIZE_HIMETRIC?hmWidth;?//圖片的真實寬度,?單位為英寸
OLE_YSIZE_HIMETRIC?hmHeight;?//圖片的真實高度,?單位為英寸
pPic-get_Width(hmWidth);
pPic-get_Height(hmHeight);
//轉(zhuǎn)換hmWidth和hmHeight為pixels距離,1英寸=25.4毫米
int?nWidth?=?MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);
int?nHeight?=?MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);
//將圖形輸出到屏幕上(有點像BitBlt)
bResult=pPic-Render(hDC_Temp,0,0,nWidth,nHeight,0,hmHeight,hmWidth,-hmHeight,NULL);
hmHeight,NULL);
pPic-Release();
CloseHandle(hFile);//關(guān)閉打開的文件
if?(SUCCEEDED(bResult))
{
return?S_OK;
}
else
{
return?E_FAIL;
}
}
試試基于C/C++語言的開源圖像處理函數(shù)庫OpenCV吧:
#include "cv.h"
#include "highgui.h"
int main( int argc, char** argv )
{
IplImage* pImg; //聲明IplImage指針
//載入圖像
if( argc == 2
(pImg = cvLoadImage( argv[1], 1)) != 0 )
{
cvNamedWindow( "Image", 1 );//創(chuàng)建窗口
cvShowImage( "Image", pImg );//顯示圖像
cvWaitKey(0); //等待按鍵
cvDestroyWindow( "Image" );//銷毀窗口
cvReleaseImage( pImg ); //釋放圖像
return 0;
}
需要Window圖像編程,Window編程就是基于C語言的,在Visual C++6.0可以編寫Win32程序
用GDI繪圖吧,比較簡單。繪圖的思想是讓x以固定的值在區(qū)間內(nèi)持續(xù)增長,比如x=0.1,0.2,0.3.....,以計算出的y值來確定y坐標。用線連接所有的點就行了。MoveTo(),LineTo()函數(shù)你用得著,具體情況請自行查看MSDN。
當(dāng)前標題:c語言怎么插入函數(shù)圖像 c語言怎么引入函數(shù)
分享網(wǎng)址:http://jinyejixie.com/article4/dosggoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、小程序開發(fā)、移動網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、電子商務(wù)、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)