
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。
如果要显示图片,关键是要了解这些存储格式的内容和含义,用函数initgraphs(int
vmode)完成(也就是利用bios中的int
10中断来实现),
主要要把色表(color
map)按bmp格式添好,就ok了!有关图象格式的内容要查相关内容,
其中还要涉及显卡内部的寄存器有关知识。
所以比较复杂
lz 你好
c语言要显示bmp位图需要使用win32的api , 具体如下:
BOOL BitBlt(HDC hdcDest, // 位图显示目标设备环境中
int nXDest, // 位图显示在客户区的x坐标
int nYDest, // 位图显示在客户区的y坐标
int nWidth, // 位图显示的宽度
int nHeight, // 位图显示的长度
HDC hdcSrc, // 源设备环境(包含需要显示的bmp位图)
int nXSrc, // 在当前位图中显示的开始x位置
int nYSrc, // 在当前位图中显示的开始y位置
DWORD dwRop // 映射模式
)
以下是源代码:
//显示bmp位图#include<windows.h>
#include"resource.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM)
void DrawBrick()
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
static TCHAR szAppName[] = TEXT("Bmp")
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("Bmp Demo"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
754,
566,
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)
{
static HBITMAP hBitmap //位图句柄 标示位图
static int cxBitmap, cyBitmap //位图的长宽
BITMAP bitmap
HDC hdc, hdcMem
HINSTANCE hInstance
PAINTSTRUCT ps
switch(message)
{
case WM_CREATE:
hInstance = ((LPCREATESTRUCT)lParam)->hInstance //获取窗口的实例句柄
hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1)) //将位图加载到内存中
GetObject(hBitmap, sizeof(BITMAP), &bitmap)
cxBitmap = bitmap.bmWidth//获取位图的长
cyBitmap = bitmap.bmHeight//获取位图的宽
return 0
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps)
hdcMem = CreateCompatibleDC(hdc)//创建一个兼容于hdc设备环境描述表的hdcMem 主要是用于在内存中截图
SelectObject(hdcMem, hBitmap) //将位图选到hdcMem中
BitBlt(hdc, -1, -1, cxBitmap, cyBitmap, hdcMem, 0, 0, SRCCOPY)//绘制bmp位图
DeleteDC(hdcMem)
EndPaint(hwnd, &ps)
return 0
case WM_DESTROY:
DeleteObject(hBitmap)
PostQuitMessage(0)
return 0
}
return DefWindowProc(hwnd, message, wParam, lParam)
}
程序运行效果:
希望能帮助你哈
ps:
附件是整个工程 , 用vs2008创建的项目 , 里面包含相应资源
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)