A. C語言如何顯示圖像
這部分應該屬於圖形界面程序的知識了.
你需要知道如果使用C語言編寫含有圖形窗口的程序.
B. C語言怎樣顯示一張圖片
1、如果有圖片(例如 wzzx.jpg) 程序中插一句:
system("mspaint wzzx.jpg"); 就可以 在運行時顯示這張圖片。
用字元串變數調用也可以:
char pic_name[80]="wzzx.jpg";
char cmd[100];
sprintf(cmd,"mspaint %s",pic_name);
system(cmd); // 顯示圖片
2、system函數:
原型:int system(const char * command);
功能:執行 dos(windows系統) 或 shell(Linux/Unix系統) 命令,參數字元串command為命令名;
說明:在windows系統中,system函數直接在控制台調用一個command命令。在Linux/Unix系統中,system函數會調用fork函數產生子進程,由子進程來執行command命令,命令執行完後隨即返回原調用的進程;
頭文件:stdlib.h;
返回值:命令執行成功返回0,執行失敗返回-1。
C. c語言中,如何在運行時顯示一張圖片,函數,用法,謝謝大神
如果你有圖片(例如 wzzx.jpg) 程序中插一句:
system("mspaint wzzx.jpg"); 就可以 在運行時顯示這張圖片。
用字元串變數調用也可以:
char pic_name[80]="wzzx.jpg";
char cmd[100];
sprintf(cmd,"mspaint %s",pic_name);
system(cmd); // 顯示圖片
D. c語言怎樣顯示圖片
C語言(Turbo C)有專門的屏幕繪圖函數,
圖片的文件格式也是公開的.
你可以查查其它資料,具體作法我不懂.
但是我知道是可以用C語言讀取很多種
圖片格式的圖片並在屏幕上顯示出來的.
E. 如何用c語言顯示BMP圖片
呵呵,你是想做什麼層面?
1:從0開始解析bmp文件,然後繪制
弄清楚bmp文件結構,參見下面一片日誌:www.cnblogs.com/kingmoon/archive/2011/04/18/2020097.html
靠著硬解析,在屏幕上一個像素一個像素的建立原有的bmp圖像。
2:Win32API;這個得靠LoadImage這個API。
具體用法請查閱MSDN。問度娘MSDN LoadImage即可。
3:使用GUI開發框架,在控制項上繪制圖片。超簡單。
你們要求是什麼。對著一個個看,如果你是做課程設計等大型作業的話,肯定是選1。我看選2,3一點技術含量也沒有。調API或者相應方法完成,對於底層數據結構不了解,學了等於沒學。
代碼量是成倍的差距。數十倍。
F. 怎樣用C語言顯示一張jpg的圖片呢
可以用函數OleLoadPicture從包含有圖像數據的流中裝載圖像。
具體實現代碼如下:
//在顯示圖像之前,首先要獲取到圖像文件的存放路徑,這里採用標準的文件打開對話框來選取圖像文件,文件名存放在CString型的變數m_sPath中:
CFileDialogdlg(TRUE,"jpg","*.jpg",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"JPEG文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif||",NULL);
if(dlg.DoModal()==IDOK)
{
m_sPath=dlg.GetPathName();
Invalidate();
}
//為簡單計,圖形顯示的代碼直接在視類中的OnDraw中編寫,首先打開文件並判斷文件的可用性,並把文件內容放到流介面IStream的對象pStm中:
IStream*pStm;
CFileStatusfstatus;
CFilefile;
LONGcb;
……
if(file.Open(m_Path,CFile::modeRead)&&file.GetStatus(m_Path,fstatus)&&((cb=fstatus.m_size)!=-1))
{
HGLOBALhGlobal=GlobalAlloc(GMEM_MOVEABLE,cb);
LPVOIDpvData=NULL;
if(hGlobal!=NULL)
{
if((pvData=GlobalLock(hGlobal))!=NULL)
{
file.ReadHuge(pvData,cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal,TRUE,&pStm);
}
}
}
//然後,就直接調用OleLoadPicture函數從流中裝載圖像:
IPicture*pPic;
……
OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic));
//由於該函數有時會導致失敗,所以應當用SUCCEEDED宏來做一些適當的保護工作,只有在數據裝載成功的前提下才能繼續下面的圖像顯示工作:
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIChmWidth;
OLE_YSIZE_HIMETRIChmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
doublefX,fY;
……
fX=(double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
fY=(double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);
if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
AfxMessageBox("渲染圖像失敗!");
pPic->Release();
}
else
AfxMessageBox("從流中裝載圖像失敗!");//其中,顯示工作主要是由IPicture介面對象的Render函數來完成的,該函數主要用來將圖片的指定部分畫到指定的設備環境的指定位置。
原型如下:
HRESULTRender(HDChdc,//渲染圖像用的設備環境句柄
longx,//在hdc上的水平坐標
longy,//在hdc上的垂直坐標
longcx,//圖像寬度
longcy,//圖像高度
OLE_XPOS_HIMETRICxSrc,//在源圖像上的水平偏移
OLE_YPOS_HIMETRICySrc,//在源圖像上的垂直偏移
OLE_XSIZE_HIMETRICcxSrc,//在源圖像上水平拷貝的數量
OLE_YSIZE_HIMETRICcySrc,//在源圖像上垂直拷貝的數量
LPCRECTprcWBounds//指向目標圖元設備環境句柄的指針);
G. c語言程序中怎麼顯示圖片
用庫,比如OpenCV庫等。C語言本身是不能完成這些的。
H. c語言中如何輸出圖像
lz需要弄清楚,你要輸出什麼格式的圖像,bmp,JPG。。。不同格式的圖像的數據內部結構是不一樣的,弄清楚不同格式圖片的數據結構組成,直接採用相應地演算法,用C語言文件輸出函數(fopen,fprintf……那幾個函數,具體我也忘了怎麼用了)將數據點寫入文件就行了。
I. c語言 如何在輸出中顯示圖片
使用C++和DirectDraw做很容易,DirectDraw是專門用來做游戲的,我給你找個例子
#include <windows.h>
int iCarX=-200,iCarY=200;
HINSTANCE hInstance;
HDC hdcSrc,hdcBack,hdcMem;
HBITMAP hBitmapSrc,hBitmapBack,hBitmapMem;
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int Render(HDC hdc);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("Spirit") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox ( NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow( szAppName, TEXT ("Spirit Demo 精靈動畫演示"), WS_OVERLAPPEDWINDOW ^ WS_MAXIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT, 500, 500, NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message){
case WM_CREATE:
hInstance=((LPCREATESTRUCT)lParam)->hInstance;
hdc=GetDC(hwnd);
hdcSrc=CreateCompatibleDC(hdc); //源圖像DC
hdcBack=CreateCompatibleDC(hdc); //目標圖像DC
hdcMem=CreateCompatibleDC(hdc); //內存DC
hBitmapSrc=LoadBitmap(hInstance,TEXT("CARS")); //讀圖像
hBitmapBack=LoadBitmap(hInstance,TEXT("SCENE"));
hBitmapMem=CreateCompatibleBitmap(hdc,500,500); //為內存DC建立一個點陣圖
SelectObject(hdcSrc,hBitmapSrc); //將點陣圖分別選入DC
SelectObject(hdcBack,hBitmapBack);
SelectObject(hdcMem,hBitmapMem);
SetTimer(hwnd,1,10,NULL); //定時器,間隔10ms
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
Render(hdc); //我們的渲染函數
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_TIMER:
iCarX+=1; //移動
if (iCarX>389) {
KillTimer(hwnd,1);
return 0;
}
InvalidateRect(hwnd,NULL,NULL); //這兩句使窗口內容更新,即調用我們的渲染函數
UpdateWindow(hwnd);
return 0;
case WM_DESTROY:
DeleteDC(hdcSrc);
DeleteDC(hdcBack);
DeleteObject(hBitmapSrc);
DeleteObject(hBitmapBack);
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
int Render(HDC hdc){
BitBlt(hdcMem,0,0,500,500,hdcBack,0,0,SRCCOPY); //將背景拷貝到內存DC上
BitBlt(hdcMem,iCarX,iCarY,220,133,hdcSrc,220,0,SRCAND); //處理掩碼圖
BitBlt(hdcMem,iCarX,iCarY,220,133,hdcSrc,0,0,SRCPAINT); //處理目標圖像
BitBlt(hdc,0,0,500,500,hdcMem,0,0,SRCCOPY); //畫到屏幕上的窗口的DC
return 0;
}
這是我的個人游戲開發論壇,你可以來這里看資料!
http://tieba..com/f?kw=%D0%C7%BC%CA%B9%A4%D7%F7%CA%D2
J. C語言中如何顯示圖片
1、圖片也是屬於文件類型的一種,圖片屬於二進制文件。使用fopen函數的二進制模式「rb」就可以打開。
2、常式:
#include<stdlib.h>
#include<stdio.h>
intmain()
{
FILE*fpPhoto,*fpText,*fpTarget;
intiRead;
charszBuf[100];
printf("請輸入第一個文件名(bmp): ");
gets(szBuf);
fpPhoto=fopen(szBuf,"rb");
printf("請輸入第二個文件名(txt): ");
gets(szBuf);
fpText=fopen(szBuf,"rb");
printf("請輸入目的文件名(bmp): ");
gets(szBuf);
fpTarget=fopen(szBuf,"wb");
if(!fpPhoto||!fpText||!fpTarget)
{
printf("打開文件失敗! ");
system("pause");
return-1;
}
while((iRead=fread(szBuf,1,sizeof(szBuf),fpPhoto))>0)
fwrite(szBuf,1,iRead,fpTarget);
while((iRead=fread(szBuf,1,sizeof(szBuf),fpText))>0)
fwrite(szBuf,1,iRead,fpTarget);
fclose(fpPhoto);
fclose(fpText);
fclose(fpTarget);
return0;
}