8Windows_paint2_bimap 位图

  1. #include <windows.h>
  2. #include <iostream>
  3. #include "resource1.h"
  4. //宏定义输出函数
  5. #define PrintLog(x) WriteConsole(g_hStdout, x, strlen(x), NULL, NULL);
  6. HINSTANCE g_hInst;
  7. HANDLE g_hStdout = NULL;
  8. CHAR szText[256] = { 0 };
  9. //DrawBmp
  10. void DrawBmp(HDC hDC)
  11. {
  12. //加载位图
  13. HBITMAP hBMap = LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BALL01));
  14. //获取位图相关信息。。。新增加,对应笔记里的第8条
  15. BITMAP bmpInfo = { 0 };
  16. GetObject(hBMap, sizeof(bmpInfo), &bmpInfo); //得到一个BITMAP结构体的数据,就可以直接使用得到bmpInfo.bmWidth
  17. //创建放置位图的DC
  18. HDC hBmpDC = CreateCompatibleDC(hDC);
  19. //将位图放入创建的hBmpDC中
  20. HBITMAP hOldBmp = (HBITMAP)SelectObject(hBmpDC, hBMap);
  21. //绘制位图 BitBlt
  22. BitBlt(hDC, 100, 100, 48, 48, hBmpDC, 0, 0, SRCCOPY);
  23. //拉伸绘制位图 StretchBlt
  24. StretchBlt(hDC, 200, 100, 200, 200, hBmpDC, 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, SRCCOPY); //拉伸方式绘制
  25. //取出位图
  26. SelectObject(hBmpDC, hOldBmp);
  27. //删除DC
  28. DeleteDC(hBmpDC);
  29. //删除位图
  30. DeleteObject(hBMap);
  31. }
  32. //OnPaint
  33. void OnPaint(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
  34. {
  35. PAINTSTRUCT ps = { 0 };
  36. HDC hDC = BeginPaint(hWnd, &ps);
  37. DrawBmp(hDC);
  38. EndPaint(hWnd, &ps);
  39. }
  40. //OnCommand
  41. void OnCommand(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
  42. {
  43. int hMenuID = LOWORD(wParam);
  44. switch (hMenuID)
  45. {
  46. case ID_EXIT:
  47. PostQuitMessage(0);
  48. break;
  49. }
  50. }
  51. LRESULT CALLBACK WndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
  52. {
  53. switch (nMsg)
  54. {
  55. case WM_PAINT:
  56. OnPaint(hWnd, nMsg, wParam, lParam);
  57. break;
  58. case WM_COMMAND:
  59. OnCommand(hWnd, nMsg, wParam, lParam);
  60. break;
  61. case WM_DESTROY:
  62. PostQuitMessage(0);
  63. break;
  64. }
  65. return DefWindowProc(hWnd, nMsg, wParam, lParam);
  66. }
  67. BOOL RegisterWnd(LPSTR pszClassName)
  68. {
  69. WNDCLASSEX wce = { 0 };
  70. wce.cbSize = sizeof(wce);
  71. wce.cbClsExtra = 0;
  72. wce.cbWndExtra = 0;
  73. wce.hbrBackground = HBRUSH(COLOR_BTNFACE + 1);
  74. wce.hCursor = NULL;
  75. wce.hIcon = NULL;
  76. wce.hIconSm = NULL;
  77. wce.hInstance = g_hInst;
  78. wce.lpfnWndProc = WndProc;
  79. wce.lpszClassName = pszClassName;
  80. wce.lpszMenuName = NULL;
  81. wce.style = CS_VREDRAW | CS_HREDRAW;
  82. ATOM aTom = RegisterClassEx(&wce);
  83. if (aTom == 0)
  84. {
  85. return FALSE;
  86. }
  87. else
  88. {
  89. return TRUE;
  90. }
  91. }
  92. HWND CreateWnd(LPSTR pszClassName)
  93. {
  94. //加入菜单
  95. HMENU hMainMenu = LoadMenu(g_hInst, MAKEINTRESOURCE(IDR_MAIN));
  96. HWND hWnd = CreateWindowEx(0, pszClassName, "风火中原", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
  97. NULL, hMainMenu, g_hInst, NULL);
  98. return hWnd;
  99. }
  100. void showWnd(HWND hWnd)
  101. {
  102. ShowWindow(hWnd, SW_SHOW);
  103. UpdateWindow(hWnd);
  104. }
  105. void msg()
  106. {
  107. MSG msg = { 0 };
  108. while (GetMessage(&msg, NULL, 0, 0))
  109. {
  110. TranslateMessage(&msg);
  111. DispatchMessage(&msg);
  112. }
  113. }
  114. //控制台
  115. void ConsoleWnd()
  116. {
  117. AllocConsole();
  118. g_hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
  119. CHAR szText[] = "Debug start:\n";
  120. PrintLog(szText);
  121. }
  122. int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
  123. {
  124. g_hInst = hInstance;
  125. ConsoleWnd();
  126. RegisterWnd("OOOO");
  127. HWND hWnd = CreateWnd("OOOO");
  128. showWnd(hWnd);
  129. msg();
  130. return 0;
  131. }

来自为知笔记(Wiz)

时间: 2025-01-04 08:06:27

8Windows_paint2_bimap 位图的相关文章

将位图导入为ArcGIS面要素

本文根据笔者经验,介绍一种从位图图像导入ArcGIS称为要素的方法.这种方法适用于从现有出版物图片中获取地理信息的情况. 首先要说明的是,从位图导入要素是非常非常不精确的方式,如果有其它数据来源,那么就不应该采用此方法. 另外,如果位图包含的内容相对简单,区域结构紧凑不零散,则可以考虑ArcMap绘制地图,而不用此方法. 为让表述更直观,笔者从百度卫星地图截取了 辽宁省康平县 西泡子水库附近的区域,作为操作的说明. 00_orign 1. 制作灰度图 为便于在ArcMap中处理,将原始图像的色彩

WPF Canvas转换为位图 (RenderTargetBitmap)

使用 RenderTargetBitmap 的注意事项: 要渲染的Canvas元素要放在Border元素内,并且此Border元素不能设置边框宽度(BorderThickness),不然生成的位图会出现错误.如果需要边框效果,可再加一层Border. 例: cs: RenderTargetBitmap bmp = new RenderTargetBitmap((int)canvas.ActualWidth, (int)canvas.ActualHeight, 96, 96, PixelForma

【Bitmap Index】B-Tree索引与Bitmap位图索引的锁代价比较研究

通过以下实验,来验证Bitmap位图索引较之普通的B-Tree索引锁的“高昂代价”.位图索引会带来“位图段级锁”,实际使用过程一定要充分了解不同索引带来的锁代价情况. 1.为比较区别,创建两种索引类型的测试表1)在表t_bitmap上创建位图索引[email protected]> create table t_bitmap (id number(10), name varchar2(10),sex varchar2(1)); Table created. [email protected]>

Gprinter光栅位图点阵数据解析工具

最近参与的项目有一个需求,解析佳博热敏打印机的光栅位图点阵数据并保存为图片文件.数据是通过Bus Hound抓取的,如下图所示. 其中1b 40为初始化打印机的指令,对应的ASCII码为ESC @,1b 4a 18为打印并走纸的指令,对应的ASCII码为ESC J,1d 76 30为打印光栅位图的指令,对应的ASCII码为GS v 0,其后紧跟光栅位图模式(0x00).水平方向位图字节数(0x0036)和垂直方向位图点数(0x0018),后面则为本帧的位图数据(0x36*0x18=1296字节)

vc实现透明位图,透明背景

vc实现透明位图,透明背景 我们在进行程序的界面设计时,常常希望将位图的关键部分,也既是图像的前景显示在界面上,而将位图的背景隐藏起来,将位图与界面很自然的融合在一起,本文介绍了透明位图的制作知识,并将透明位图在一个对话框中显示了出来. 一.实现方法 绘制"透明"位图是指绘制某一位图中除指定颜色外的其余部分,我们称这种颜色为"透明色".通过将位图的背景色指定为"透明色",在绘制时,不绘制这部分背景,而仅绘制图像,这样就可以将位图中图像透明地绘制到

猎豹MFC--缩放位图StretchBit()

定义变量: 在初始化对话框中进行初始化: 给菜单添加事件处理: 在 因为打开第二张  图像的时候会失败,是因为没有释放对象,所以增加释放对象的功能: 定义保存旧位图的指针: 初始化该指针: 打开新位图选入DC时把旧位图保存起来: 窗口还要销毁 增加窗口销毁 消息: 也要释放对象: ////////////////////////////////////////////////////////////////////// 放大图像时就把百分比 加上10.然后释放: 释放后会自动转去执行ONpain

位图排序

在<编程珠玑>上看到的,开篇第一个问题,有很多数,小于一个MAXNUM,没有重复的,怎么排序最快. 答案是位图排序. 如果某一位不为0,那么这一位存代表一个数,位数(在序列中的位置)代表这个数. 比方说这些数都存在数组a,然后利用一个数组b,b初始状态各位都为0,然后读取a,如果a[1]=2,那么b[2]为1,a[3]=6,那么b[6]=1. 实现如下: 1 #include <iostream> 2 #include <fstream> 3 #include<s

位图操作和双缓冲机制

位图操作代码部分: CRect rect;  GetClientRect(rect);  pDC->SetMapMode(MM_ANISOTROPIC);  pDC->SetWindowExt(rect.Width(), rect.Height());  pDC->SetViewportExt(rect.Width(), -rect.Height());  pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2); CDC MemDC

位图缩放代码,如何伸拉图片,图片处理

最近在做一个项目需要将RGB图像进行拉伸处理,网上找了下相关资料,多数是建议用线性插值法,由于没有多余时间去研究,所以想找现成的代码用用,可惜试了N多,能用的代码无几,能达到效果的基本上没有.最后找了个支持位图进行缩放处理的,由于我只有RGB数据,这个需要先将RGB数据打包成位图文件,再调用.名字叫CxImage,这是一个图形处理库.源码里生成的基本都是静态库,需要全部编译再lib文件放到自己工程中.关于此类库的使用,这里有解释 我处理的是位图数据,关键代码如下 #include "ximage