日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Visual C++——LoadBitmap加载位图的操作过程

發布時間:2024/10/5 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Visual C++——LoadBitmap加载位图的操作过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本概念

位圖:位圖圖像(bitmap),亦稱為點陣圖像或柵格圖像,是由稱作像素(圖片元素)的單個點組成的。這些點可以進行不同的排列和染色以構成圖樣。當放大位圖時,可以看見賴以構成整個圖像的無數單個方塊。擴大位圖尺寸的效果是增大單個像素,從而使線條和形狀顯得參差不齊。然而,如果從稍遠的位置觀看它,位圖圖像的顏色和形狀又顯得是連續的。用數碼相機拍攝的照片、掃描儀掃描的圖片以及計算機截屏圖等都屬于位圖。位圖的特點是可以表現色彩的變化和顏色的細微過渡,產生逼真的效果,缺點是在保存時需要記錄每一個像素的位置和顏色值,占用較大的存儲空間。

位圖的操作過程

DEMO源代碼

?Visual C++版本

?Visual Sudio 2019版本

// 2018329621200_申屠志剛_Win32Application_7-2.cpp : 定義應用程序的入口點。 //#include "framework.h" #include "2018329621200_申屠志剛_Win32Application_7-2.h"#define MAX_LOADSTRING 100// 全局變量: HINSTANCE hInst; // 當前實例 WCHAR szTitle[MAX_LOADSTRING]; // 標題欄文本 WCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口類名 HBITMAP hBm; BITMAP bm; HDC hdc, hdcmem; // 此代碼模塊中包含的函數的前向聲明: ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR lpCmdLine,_In_ int nCmdShow) {UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);// TODO: 在此處放置代碼。// 初始化全局字符串LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);LoadStringW(hInstance, IDC_MY2018329621200WIN32APPLICATION72, szWindowClass, MAX_LOADSTRING);MyRegisterClass(hInstance);// 執行應用程序初始化:if (!InitInstance (hInstance, nCmdShow)){return FALSE;}HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY2018329621200WIN32APPLICATION72));MSG msg;// 主消息循環:while (GetMessage(&msg, nullptr, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}}return (int) msg.wParam; }// // 函數: MyRegisterClass() // // 目標: 注冊窗口類。 // ATOM MyRegisterClass(HINSTANCE hInstance) {WNDCLASSEXW wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = WndProc;wcex.cbClsExtra = 0;wcex.cbWndExtra = 0;wcex.hInstance = hInstance;wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MY2018329621200WIN32APPLICATION72));wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_MY2018329621200WIN32APPLICATION72);wcex.lpszClassName = szWindowClass;wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));return RegisterClassExW(&wcex); }// // 函數: InitInstance(HINSTANCE, int) // // 目標: 保存實例句柄并創建主窗口 // // 注釋: // // 在此函數中,我們在全局變量中保存實例句柄并 // 創建和顯示主程序窗口。 // BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {hInst = hInstance; // 將實例句柄存儲在全局變量中HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);if (!hWnd){return FALSE;}//加載或創建位圖hBm = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP3));GetObject(hBm, //為位圖句柄sizeof(BITMAP), //BITMAP結構的大小(LPVOID)&bm //BITMAP結構的地址);ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);return TRUE; }// // 函數: WndProc(HWND, UINT, WPARAM, LPARAM) // // 目標: 處理主窗口的消息。 // // WM_COMMAND - 處理應用程序菜單 // WM_PAINT - 繪制主窗口 // WM_DESTROY - 發送退出消息并返回 // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {PAINTSTRUCT ps;switch (message){case WM_CREATE:hdc = GetDC(hWnd); //獲取設備環境句柄hdcmem = CreateCompatibleDC(hdc);//內存設備環境句柄ReleaseDC(hWnd, hdc); //釋放設備環境句柄case WM_COMMAND:{int wmId = LOWORD(wParam);// 分析菜單選擇:switch (wmId){case IDM_ABOUT:DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}}break;case WM_PAINT:{HDC hdc = BeginPaint(hWnd, &ps);// TODO: 在此處添加使用 hdc 的任何繪圖代碼...WCHAR lpsz[] = _T("測試");TextOut(hdc, 0, 0, lpsz, wcslen(lpsz));//輸出文本SelectObject(hdcmem, hBm); //將位圖選入內存設備環境//將內存設備環境中的位圖拷貝到設備環境中BitBlt(hdc, 180, 80, bm.bmWidth, bm.bmHeight, hdcmem, 0, 0, SRCCOPY);TextOut(hdc, 0, 0, lpsz, wcslen(lpsz));//輸出文本EndPaint(hWnd, &ps);}break;case WM_DESTROY:DeleteObject(hBm);PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0; }// “關于”框的消息處理程序。 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {UNREFERENCED_PARAMETER(lParam);switch (message){case WM_INITDIALOG:return (INT_PTR)TRUE;case WM_COMMAND:if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL){EndDialog(hDlg, LOWORD(wParam));return (INT_PTR)TRUE;}break;}return (INT_PTR)FALSE; }

?運行結果

注意事項

1、資源ID無引號。

2、確保添加位圖到resource.h中。

參考資料

Visual C++ 面向對象與可視化程序設計(第2版)——黃維通

參考文章

https://www.cnblogs.com/tupx/archive/2013/08/27/3284546.html

https://blog.csdn.net/lxw907304340/article/details/45501899

總結

以上是生活随笔為你收集整理的Visual C++——LoadBitmap加载位图的操作过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av免费看网站| 国内自拍第一页 | 成人av社区| 国产裸体网站 | 成人黄色激情网 | 日本中文字幕免费 | 色噜噜成人| 九色影视 | 国产成人在线播放视频 | 日日精品 | 天天碰免费视频 | 高清国产mv在线观看 | 国产精品成人一区二区三区 | 亚洲无套 | 黑人巨大精品欧美黑寡妇 | 丁香七月婷婷 | 淫辱的世界(调教sm)by | 国产911视频 | 欧洲一级视频 | 中文字幕第九页 | aa成人| 日韩怡红院| 女人裸体免费网站 | 亚洲色成人www永久在线观看 | 九九资源网| 欧美日韩一区二区中文字幕 | 香蕉精品在线 | 啪啪导航 | 羞羞成人 | 91一级视频 | 日韩精品色哟哟 | 丁香八月婷婷 | 就要操就要射 | www.自拍| 火影忍者羞羞漫画 | 国产精品免费视频一区 | 亚洲 小说 欧美 激情 另类 | 潮喷失禁大喷水无码 | 欧美日韩国产在线一区 | 中文在线字幕免费观 | 毛片一级片| 日韩涩| 李宗瑞91在线正在播放 | 亚洲欲妇| 中文字幕一区二区三区波野结 | 欧美日韩一区二区三区在线电影 | 欧美a级黄色 | 草莓巧克力香氛动漫的观看方法 | 在线观看免费高清 | 调教撅屁股啪调教打臀缝av | 天天干天天色天天 | 明日叶三叶 | sese在线视频 | 中文字幕免费高清视频 | 欧洲一区二区视频 | 亚洲色域网 | 亚洲一二三四在线 | 五月丁香久久婷婷 | www.久久视频 | 看片一区二区 | 色资源av| 国产91影院 | 爱爱视频免费看 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲色图首页 | 青青草原国产在线 | 国产精久久一区二区三区 | 国产精品羞羞答答在线 | аⅴ资源天堂资源库在线 | 亚洲天堂一二三 | 久久国产免费 | 精品国产乱码久久久久久1区2区 | 91黄色免费视频 | 欧美亚洲国产一区二区三区 | 欧美一级片免费在线观看 | www黄色大片 | 精品乱人伦一区二区三区 | 久久高清免费视频 | 欧美乱妇18p | 国内性视频 | 亚洲黄色在线免费观看 | 亚洲成人网在线观看 | 国产青草视频在线观看 | 日本公妇乱偷中文字幕 | 日韩中文在线观看 | kk视频在线观看 | 日本aⅴ片| 中文字幕不卡在线 | 日韩黄色av网站 | 国产精品久久久久久一区二区 | 综合热久久 | 欧美日本在线观看 | 青青青视频在线播放 | 77777av | 国产午夜手机精彩视频 | 日本一区二区黄色 | 97色综合 | 老妇free性videosxx| 亚洲乱亚洲乱妇 |